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