Fuchsia F22 版本資訊

日期:2024 年 11 月 14 日

版本:F22

我們已實施下列變更:

音訊

我們已對 Audio 進行以下更新:

  • 音訊驅動程式和驅動程式庫 API:

    • 更新音訊驅動程式庫 VMO 句柄權利以供驗證。audio_driver_tests 套件現在會驗證音訊驅動程式庫傳回的 VMO 句柄是否具有必要權限。
    • 更新 aml-g12-composite driver,以便使用 SetActiveChannels 專屬的 API,透過 StartSocPower/StopSocPower 開啟或關閉 SoC 電源。
    • 停用 SimpleAudioStream 輔助程式庫中的預設調度器。
    • 已刪除 aml-g12-[pdm|tdm]-dsp 個驅動程式。
    • 更新 VirtualAudio 驅動程式庫,以便套用正確的 VMO 句柄權限,並修正 WatchTopology 行為。
  • AudioCore 服務和智慧型螢幕支援:

    • 已將 CapturerShimImpl 的 dtor 更新為虛擬,以修正 new-delete-type-mismatch。
  • AudioDeviceRegistry 服務:

    • Control::Reset 實作為非同步方法。
    • 說明在哪些情況下會叫用用戶端提供的回呼或 ControlNotify 通知,以及何時不會叫用。
  • 音訊開發人員工具

    • ffx audio device 切面的 ffx audio 中新增額外的 ADR 支援。
    • 更新 ffx audio device info,以顯示訊號處理元素、拓樸和狀態。
    • 更新 ffx audio 中的 RegistryDevice 類型,以公開信號處理元素、元素狀態和拓撲。
    • VmoBuffer 移至常用的 Rust 音訊程式庫。

藍牙

我們已對藍牙進行下列更新:

建構

我們已針對 Build 進行下列更新:

  • 更新合作夥伴不穩定的 SDK:已新增 spiimpl 程式庫,以便擴充 SPI 功能。
  • 改善 GN 建構系統:新的範本 generated_ifs_file 可讓您建立動態 .ifs 檔案。由於 OTA 測試問題,netsvc 元件加入項目已還原。
  • 強化 fx 指令:Analytics 現已使用 $EPOCHREALTIME 提供更精確的時間資訊。已移除 --rbe 標記。
  • 改善建構系統清理功能:已移除 sdk_host_tool() 中已淘汰的匯入項目。修正了 Clippy 的 Lint 問題。緩衝讀取器可改善 serde_json 效能。新的 DFv2 驅動程式庫 pdev 可減少依附元件。

鈷豔藍

我們已為 Cobalt 進行下列更新:

  • 修正 clang-tidy 警告並移除 fuchsia.cobalt/SystemDataUpdater 通訊協定:這項更新修正了 clang-tidy 警告,並更新 #include 樣式,以符合 Fuchsia 樣式指南。由於 Clang 無法順利找到 Cobalt 的部分第三方依附元件,因此我們必須大部分忽略部分檔案。在 F18 中已淘汰的 fuchsia.cobalt/SystemDataUpdater 通訊協定也已移除。
  • 已移除 fuchsia.cobalt/SystemDataUpdater protocol此通訊協定已淘汰且未使用。

元件架構

我們已為元件架構進行下列更新:

  • 改善了處理序啟動器伺服器端錯誤記錄的清晰度。這項變更會重構錯誤記錄程式碼,以便進行測試,並改善工作結束代碼說明。
  • 透過優先處理工作階段電源事件監聽器,改善電源事件監聽器的管理方式:現在在初始化電源事件監聽器時,系統會先嘗試使用工作階段電源事件監聽器,如果無法使用,則會使用系統電源事件監聽器。
  • 為真實體複製 VMOs 實作元件管理服務工具變更:這項變更會使用 zx_vmo_transfer_data 執行從 Bootfs 到項目真實體複製 VMO 的 VMO 複製和取消提交作業。

連線驅動程式

我們已針對連線驅動程式進行下列更新:

  • 改善了 dwc3 驅動程式庫,包括裝置樹狀結構繫結和其他修正:
    • 將 dwc3 設為複合裝置,允許其他硬體版本,僅在設定 DCI 介面後啟動周邊模式,並在 ConfigEp 上啟用端點。
  • 改善 dwmac 驅動程式庫效能和穩定性:
    • 在設定 rx 描述符和通知裝置之間新增記憶體屏障,以解決潛在的競爭狀態。
    • 修正競爭狀況,這個狀況會導致 vim3 發生錯誤,因為驅動程式庫不會將線上狀態傳播至舊版乙太網路驅動程式庫。修正方式是通知子驅動程式庫,一旦綁定就會通知。
  • 改善 brcmfmac 驅動程式庫,記錄所有韌體復原嘗試,以便計算韌體復原的成功率。

診斷

我們已對「診斷」功能進行以下更新:

  • 改進檔案管理員:
  • 改進記錄功能:
    • 一律在 Rust 中記錄檔案和行資訊。
  • 改善診斷資訊的持續性:
    • 持久性現在已與系統更新檢查器整合,可比先前的 120 秒延遲時間更快開始發布。
  • 改善檢查功能:
    • 在 Inspect Rust 程式庫中新增了對擔保的支援:這可讓您更輕鬆地收集及分析 Inspect 資料。
    • 更新所有檢查資料,讓回應中包含元件網址:這可讓使用者更輕鬆地找出資料來源,進而提升檢查資料的可用性。
    • 新增 Data<Inspect> 的建構工具:這可讓您更輕鬆地改良 Data<Inspect> 結構。
    • 建立 Python 檢查剖析程式庫:這可讓您更輕鬆地在 Python 中剖析及分析檢查資料。
  • 電源可觀察性:
    • 在檢查記錄中,將租約狀態檢查更新項目新增至層級資料:這可改善租約狀態變更的顯示效果,並讓您更輕鬆地診斷問題。
    • 改善 VMO 尺寸說明,讓使用者更容易理解。這樣就能更輕鬆地瞭解 Inspect VMOs 的大小。
    • 為電源仲介增加檢查 VMO。這麼做可減少需要調整 VMO 大小的次數,進而提升電源仲介的效能,並讓我們納入更多資訊。

驅動程式架構

我們已對 Driver Framework 進行下列更新:

  • 改善驅動程式庫中繼資料管理功能。包括將 GetMetadataIfExists() 函式新增至 fdf_metadata 程式庫。
  • 改善驅動程式庫執行階段效能和穩定性。這包括更新 RAII 語意上的調度器標頭、從驅動程式庫主機執行程式回呼中移除傳回值,以及在關機期間禁止排入延遲工作。
  • 改善驅動程式庫測試基礎架構。這包括重構驅動程式庫測試固定項目,以及為合作夥伴 SDK 準備 driver_test.h
  • 在驅動程式庫開發中新增 Rust 初步支援。這包括為競技場和調度器新增安全的 Rust 繫結實作,以及新增可增加 fdf_arena_t 參照計數的功能,以便在 Rust 中啟用 Clone
  • 改善驅動程式庫說明文件。這包括新增 DFv2 驅動程式庫說明文件:「排解 DFv2 驅動程式庫開發作業中的常見問題」。
  • 修正多項錯誤。包括修正中繼資料處理、驅動程式庫載入、驅動程式庫測試和驅動程式庫執行階段的相關錯誤。

FIDL

我們已對 FIDL 進行以下更新:

  • 更新 SDK 以使用修飾符變更語法,並重新設定版本_自然_ostream.h.golden 檔案格式:這項變更可避免不必要的枚舉成員和通訊協定方法,並因 clang 格式輸出的變更而重新設定檔案格式。
  • 改善 FIDL ABI:這些改善項目包括:
  • 移除未使用的主機通訊協定、取代 in_development_api_level 變數、移除未使用的範本歧義,並確保所有已記錄的 GN 變數都會傳遞。
  • 回填缺少的 @available(added=HEAD) 註解,並修正使用線纜物件的傳出 Fidl 呼叫。

GPU

我們已針對 GPU 進行下列更新:

國際化

我們已對 I18n 進行以下更新:

  • 更新 I18n 基礎架構,以支援 Fuchsia 的新日期/時間 API:這項變更會更新 I18n 基礎架構,以便使用新的 Fuchsia 日期/時間 API,簡化日期和時間的格式設定和剖析程序。這項變更也改善了 I18n 基礎架構的整體效能和可靠性。

IOT

我們已針對 IOT 進行以下更新:

  • 透過防止 ot-radio 在 RCP 重設期間傳送影格,並強化 SPI TX 邏輯,改善執行緒堆疊的穩定性和復原功能:這可確保 lowpan 等待 RCP 就緒,並在傳送 spinel 影格失敗時改善復原功能,避免不必要的重設。
  • 修正 lowpan-monitor 中的當機問題並改善診斷功能:現在,當執行緒堆疊啟動失敗時,監控器會產生當機報告,並在缺少執行緒堆疊的裝置上提供資料。
  • 修正 lowpan 中的 meshcop 發布邏輯。
  • 當來源不是 openthread 中的本機連結時,記錄已略過的 ICMP6 訊息來源位址。這可改善 ICMP6 問題的偵錯功能。
  • 將 spiimpl 新增至合作夥伴不穩定的 SDK:這項變更主要用於內部使用,對一般使用者影響較小。
  • 修正 nat64 轉譯器:修正設定 CIDR 時,naet64 轉譯器狀態未正確設定的錯誤。
  • 改善 Matter/GHP:修正 Matter 和 GHP 相關錯誤並提升穩定性。

核心

我們已對核心進行以下更新:

  • 新增支援 ZX_CLOCK_BOOT 時間軸,包括使用者模式時鐘和系統呼叫 (zx_ticks_get_bootzx_clock_get_boot)。
  • 推出 ZX_INFO_VMAR_MAPS,用於擷取 VMAR 對應資訊,並新增相關的診斷工具。
  • 透過 zx_cache_flush 新增對使用者空間 dcache CLEAN 和 FLUSH 作業的支援。
  • 新增 k zx sock 指令,用於顯示 Socket 資訊,並改善了對等調度器的 k 指令處理方式。
  • 新增 ns8250 UART 的 PXA 變數,並根據裝置樹狀結構/啟動墊片設定,有條件地設定位準觸發位元。
  • 修正核心計時器競爭狀態,並改善計時器佇列檢查功能。
  • 修正了易變變數的原子載入問題,並針對 libcxx atomic_ref 限制推出因應措施。
  • 改善實體記憶體管理和移交作業,包括確保 NVRAM 和 ZBI 配置的持久性、處理保留的測試 RAM,以及診斷記錄。

平台驅動程式

我們已針對平台驅動程式進行下列更新:

  • 簡化 aml-sdmmc driver 建構程序,並改善驅動程式庫清晰度和一致性:為來源檔案和依附元件建立專屬 GN 目標,改善可維護性並減少潛在的建構錯誤。我們也重新命名了中繼資料類型 ID,讓名稱更清楚明瞭且一致。
  • 提升驅動程式庫可靠性並避免潛在的當機情形:修正平台裝置驅動程式庫中的錯誤,該錯誤會導致對選用資料的存取方式不正確。
  • 改善驅動程式庫模組化、適應不同硬體設定,以及偵錯功能。我們重構 aml-light 驅動程式庫程式,以便使用 FIDL 從 gpio-light 平台裝置擷取中繼資料,並將檢查資料新增至平台匯流排驅動程式。
  • 透過最佳化 aml-uart 驅動程式,改善電力消耗和電池續航力。驅動程式現在只會在驅動程式庫程式設定中啟用暫停功能時,將中斷事件登錄為喚醒來源。
  • 簡化 aml-sdmmc 驅動程式中的 AmlSdmmc::GetToken() 函式,提升程式碼可讀性並降低複雜度。

荒漠油廠

我們已對 Rust 進行以下更新:

  • 透過新增將 GN-scope 傳遞至測試目標的功能,以及在依附元件掃描後提早清理輔助 rsp 檔案,改善了建構系統支援功能。
  • 新增 #[allow(deprecated)],為 std::panic::PanicInfo 重新命名做好準備。

軟體推送

我們已針對軟體提交方式進行以下更新:

  • 重構模擬 Omaha 伺服器,以便同時支援 fasync 和 tokio 執行階段,且其 start() 函式現在為非同步函式。
  • 在 Omaha 用戶端、系統更新檢查器和 fuchsia.update 中新增更新檢查完成通訊協定的支援功能,讓 Persistence 可在更新檢查完成後立即發布資料。
  • 更新 OTA 觸發條件,以便使用 ffx
  • Omaha 用戶端 Fuchsia 測試現在使用 poll_until_stalled,可改善非同步性。
  • 改善 swd-e2e-tests 中的 OTA 工具和構件下載功能;改善缺少產品套件時的 testsharder 錯誤處理方式。

Starnix

我們已為 Starnix 進行下列更新:

  • 透過 set-user-id/set-group-id 和 SELinux 動態轉換檢查強化安全性:新增了 setuid 功能 (預設為停用),並在 SELinux 中實作型別邊界檢查,以提升安全性並防止權限提升。
  • 透過 SELinux 掛鉤和 /container 功能旗標,改善檔案系統安全性和管理功能:在 SELinux 中新增 fs_node_set/getsecurity() 掛鉤,用於管理檔案安全性屬性,並引入功能旗標來控制 /container 目錄,為最終移除該目錄鋪路。
  • 透過環緩衝區作業和對應功能強化 BPF 支援:為 BPF 環緩衝區實作保留、提交和捨棄作業,以及對應 BPF 環緩衝區檔案描述元的能力。
  • 推出 NMFS 管理員架構和 open3 支援:建立了用於管理網路檔案系統事件的新架構,並在遠端執行作業中新增 open3 支援,提供更強大且靈活的檔案系統作業方式。
  • 在啟動時新增 stardev 容器和 GPU 資訊:為自管 Fuchsia 開發作業推出新的容器,並新增功能,可在啟動期間傳遞 GPU 資訊,以改善驅動程式庫管理作業。
  • 在測試名稱中加入「starnix」,改善測試識別功能:在測試名稱中加入「starnix」,以便在資訊主頁上更容易識別及整理。
  • 在解除武裝時重設 timerfd 期限,修正可能的時鐘問題:確保在解除武裝時重設 timerfd 中的期限,以免發生非預期的時鐘行為。

儲存空間

我們已對儲存空間做出以下更新:

  • 為 FakeDevice 拆解作業提供毒藥丸選項,以便在發生當機時提供更詳盡的堆疊追蹤資訊,並移除 fuchsia-pkg-testing 中不必要的借用。
  • 改善 NAND 裝置的讀取效能和驅動程式庫效率。驅動程式現在會等待指令佇列清空,再檢查狀態位元,藉此減少不必要的輪詢和 CPU 用量。我們也移除了未使用的中斷,進一步提升驅動程式庫效率。

計時

我們已對打卡系統進行以下更新:

  • 已更新 GetMonotonic 說明文件,並將 compute_boot_ticks 和 compute_boot_time 函式新增至 libfasttime。保證每次啟動核心一段時間後,單調時鐘都會從 0 開始。將函式新增至 libfasttime,以便計算啟動時刻和時間。
  • 改善 RTC 驅動程式庫行為。變更了計時器,讓它監控 /dev/class/rtc 目錄,而非從中讀取資料,新增了單元測試,並將變更還原,以便為 RTC 偵測新增重試機制。
  • 改善 Timer 類別行為。將 TimerLock 宣告移至 Timer 類別,以便在註解中參照該宣告,並允許將計時器清單標示為由此鎖定保護,並在檢查佇列時取得計時器鎖定,以便處理來自不同 CPU 的並行 Timer::Cancel 事件,並正確計算下一個逾時時間。

工具

我們已對工具進行下列更新:

  • package-tool 已更新,並加入多項強化功能,包括用於建立套件命名空間檢視畫面的 --namespace 引數,以及用於處理中繼資料的 package_manifest.json。我們也移除了過時的留言。
  • create 工具現在使用新的 meta/ 目錄結構來儲存中繼資料。
  • sdk-deps 指令碼現已支援 CSV 輸出,並提供依附元件計數。
  • 已移除淘汰的顯示工具 display-detectdisplay-png
  • 已移除音訊工具中的懸空字串指派,並移除損毀的 sys-realm-analyzer 工具。

ffx

以下是 ffx 的更新內容:

  • 改善目標處理方式:包括重構目標解析、修正動態目標新增、在用戶端探索中設定 SSH 連接埠,以及停用用戶端探索,以減少 flake。在初始還原後,動態目標新增功能已重新推出。
  • 強化輸出內容和設定:從套件指令中移除 ASCII 藝術,為守護程序新增 --background 標記,新增 --no-environment 標記,並從 CLI 儲存存放區資訊。
  • 實作初始用戶端探索功能 (後來因穩定性考量而停用)。
  • ffx audio device info 現在會以更優異的格式顯示訊號處理、拓樸和狀態。
  • 在錯誤訊息中以格式化目標地址,讓內容更易讀。
  • 已移除舊版自由格式寫入器。

ffx emu

以下是 ffx emu 的更新內容:

  • 將磁碟雜湊重構為 emu_instance (已還原及重新發布)。
  • 由於缺乏 Android 模擬器支援,因此強制使用 qemu 引擎處理 riscv 映像檔。

ffx 遊樂場

以下是 ffx playground 的更新內容:

ffx 存放區

以下是 ffx repo 的更新內容:

ffx 存放區

以下是 ffx repository 的更新內容:

ffx 目標

以下是 ffx target 的更新內容:

  • ffx target echo 支援機器結構定義,並針對未設定的預設目標提供特定錯誤。
  • 已實作無守護程序的 ffx target wait

fx

我們已針對 fx 進行以下更新:

UI

我們已針對 UI 進行以下更新:

  • SceneManager 現在使用 fuchsia.power.SuspendEnabled 設定能力來控制 suspend_enabled 設定,以便測試並限制暫停功能的使用。
  • 精簡版 ActivityManager 與電源架構的整合 (受旗標控管)。由於發生 OOM 問題,因此初始整合作業已還原,後續變更則重新引入使用 LeaseHolderStateTransitioner 的狀態轉換管理,以便準備適當的喚醒權杖整合作業。這項工作包括更新 suspend_enabled 設定、新的整合測試,以及 fuchsia.power.SuspendEnabled 功能的路由。
  • 改善 InputDeviceInputFile 的處理方式。InputFile::read 現在會盡可能傳回事件,且由於使用待處理事件計數,因此等候者通知會更準確。Starnix 中的按鈕事件偵錯功能也經過強化,加入了檢查計數和其他記錄功能。

影片

我們已對影片做出下列更新:

  • 修正與 std::pair 可複製性相關的編譯器錯誤:這是由於 std::pair 的可複製性發生變化所致。

WLAN

我們已對 WLAN 進行以下更新:

  • 改善 wlanix 的 Antlion 測試:我們新增了產品組合和中繼資料產生功能,可在沒有 starnix 的 VIM3 裝置上測試 wlanix,並搭配無操作測試。
  • 更新 WLAN 漫遊政策:允許透過產品設定選擇漫遊實作方式,預設為 RoamingOff,並推出新的漫遊政策平台設定。
  • 改善 WLAN 遙測和檢查功能:Wlanix 現在會提供檢查資料,並將用戶端連線啟用/停用事件記錄到遙測,以便更輕鬆地檢查 Wi-Fi 開啟/關閉事件。
  • 強化 MLME 和 Fullmac FIDL:新增轉換函式並修正 RSNE 長度限制,解決 API 不相符的問題,並改善對超大資料的處理方式。
  • 改善 wlansoftmac 驅動程式庫:已遷移至 DFv2,改善生命週期和穩定性;最佳化 rx 和 tx 路徑,減少資料複製作業;並修正記憶體耗損問題。
  • 強化 wlan-frame-writer改善錯誤回報功能;將 Appendable 分割為 AppendTrackedAppend;新增填充緩衝區寫入支援功能;並簡化 write_frame_with_dynamic_buffer 巨集。
  • 其他 WLAN 改善項目:改善 WLAN 政策中的狀態同步處理;新增驅動程式庫計時器測試拆除功能,以防發生錯誤;確保 ScanAborted 會在 wlanix 掃描錯誤時傳送;並在 brcmfmac 中新增 rxundec 計數器,以便進行偵錯。