1 SWUpdata 概述 SWUpdata 是一個開源項目,該項目可以從存儲介質或網絡為嵌入式設備更新嵌入式系統。但是,它應該主要被視為一個框架,可以輕松地將更多協議或安裝程序(在 SWUpdate 中稱為處理程序)添加到應用程序中。 一種用例是從外部本地媒體更新,如 USB 或 SD 卡。在這種情況下,更新是在沒有操作員干預的情況下完成的:它被認為是“一鍵更新”,軟件在重置時只需按下一個鍵(或以任何目標可以識別的方式) ,自動進行所有檢查。最后,更新過程只向操作員報告狀態(成功或失敗)。 如果為遠程更新啟動,SWUpdate 啟動嵌入式 Web 服務器并等待請求。操作員必須上傳合適的鏡像,SWUpdate 檢查然后安裝。所有輸出都通過 AJAX 通知通知給操作員的瀏覽器。 2 使用 buildroot 集成 SWUpdate 可以參考第二十章“使用 Buildroot 制作根文件系統,我們使用 buildroot 配置好最基本的文件系統后,就可以添加第三方庫了。 切換到 root 用戶在 buildroot-2021.05 目錄下使用命令 “make menuconfig” 進入到圖形配置界面如下圖: ![]() 然后我們依次進入如下目錄: Target packages ---> System tools ---> 勾選上 swupdate,如下圖: ![]() 作者將制作好的文件系統放在了 “iTOP-i.MX6 開發板資料匯總(不含光盤資料)\12_iTOP-i.MX6 開發板 buildroot 系統 OTA 升級”下。 3. SWUpdate 工具的使用 3.1 設置 SWUpdate 服務開機啟動 燒寫好鏡像后給開發板上電啟動,如下圖; 輸入用戶名:root ,密碼:topeet,登錄到系統,使用命令 “vi /etc/init.d/rcS”打開 rcS 文件添加以下內容,如下圖: swupdate -w "--document-root /var/www/swupdate –port 8080" & ![]() 保存退出使用命令 “reboot” 重啟開發板,可以看到 Swupdate 服務已經開啟如下圖: ![]() 接下來我們就可以在電腦的瀏覽器的地址欄中輸入 “192.168.1.7:8080” (根據自己的開發板的地址填寫) ,進入網址如下圖: ![]() 至此,具有遠程升級功能的文件系統就制作好了。 3.2 使用 SWUpdate 遠程升級 接著上篇,使用到的升級包制作工具 OTA.tar.bz2 在 “iTOP-i.MX6 開發板資料匯總(不含光盤資料)\12_iTOP-i.MX6 開發板 buildroot 系統 OTA 升級”目錄下。 將 OTA.tar.bz2 拷貝到 ubuntu 任意,目錄下解壓后如下圖: ![]() 進入解壓后的 OTA 目錄下,使用命令“tree”查看,如下圖 ![]() config 目錄下放的是關于 EMMC 配置文件。其中 sw-description 的內容可以參考官方手冊,其地址為h t t p s : // s b a b i c . g i t h u b . i o / s w u p d a t e / s w u p d a t e . h t m l 。creat 是用于生成固件升級包的腳本。 image 目錄用于放我們用于升級的 zImage, 設備樹文件.dtb, 以及文件系統 rootfs.tgz。(根據自己核心板類型選擇鏡像)。 使用之前需要將上圖 image 中的文件替換成用于升級的對應文件即可,(用于升級的文件系統,要是還想支持下次升級也需要有 swpdate 工具)。 然后在 OTA 目錄下使用命令 “./creat”可以生成用于 EMMC 版升級的固件包,如下圖。 ![]() 等待完成后使用命令 “ls”查看,如下圖所示,生成了.swu 結尾的固件包。 ![]() 然后我們使用 ubuntu 下自帶的瀏覽器打開,上節中的升級界面,如下圖 ![]() 然后點擊下圖部分,彈出固件選擇界面 ![]() ![]() 選擇好用于升級的.swu 固件后,點擊打開即可對開發板進行升級,如下圖: ![]() ![]() 升級成功后直接重啟開發板,即可,如下圖升級的是一個 openwrt 系統: ![]() |