【技術(shù)分享】迅為RK3568開發(fā)板使用TFTP加載內(nèi)核設(shè)備樹
需求分析
在嵌入式項目開發(fā)中,為了適配新外設(shè)、調(diào)整硬件資源分配或修復(fù)驅(qū)動問題,需要頻繁修改設(shè)備樹和內(nèi)核。修改完成后,通常需要重新編譯生成鏡像,并將其燒錄到開發(fā)板上進行測試。然而,傳統(tǒng)的燒錄方式不僅需要連接物理接口,還可能因為鏡像體積較大而耗費較長時間,這在開發(fā)周期緊張的情況下顯得尤為低效。
為了解決這一問題,可以采用基于TFTP(Trivial File Transfer Protocol)的內(nèi)核和設(shè)備樹加載方法。這種方式無需將鏡像完整燒錄到開發(fā)板的存儲介質(zhì),而是通過網(wǎng)絡(luò)直接加載和運行新內(nèi)核與設(shè)備樹。相比傳統(tǒng)燒錄方式,TFTP加載顯著減少了鏡像更新的等待時間,同時允許更靈活地對不同版本的內(nèi)核或設(shè)備樹進行快速切換和驗證。
TFTP加載內(nèi)核設(shè)備樹
實驗平臺:iTOP-RK3568開發(fā)板
01-安裝TFTP服務(wù)端
首先進行TFTP 服務(wù)端的搭建,首先在ubuntu終端中執(zhí)行以下命令安裝TFTP服務(wù):
sudo apt-get install tftp-hpa tftpd-hpa

安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對TFTP的服務(wù)配置文件進行修改,具體步驟如下:
輸入以下命令在家目錄創(chuàng)建tftpboot文件夾,如下圖所示:

安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對TFTP的服務(wù)配置文件進行修改,具體步驟如下:
輸入以下命令在家目錄創(chuàng)建tftpboot文件夾,如下圖所示:
chmod 777 tftpboot

最后使用以下命令修改TFTP配置文件,打開配置文件以后如下圖所示:
sudo vim /etc/default/tftpd-hpa

修改為如下內(nèi)容,修改完成如下圖所示:
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/home/topeet/tftpboot/"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="-l-c-s"

修改完成保存退出,在終端輸入以下命令重啟tftpd-hpa服務(wù)。
sudo service tftpd-hpa restart
如下圖所示:

02-配置開發(fā)板網(wǎng)絡(luò)
TFTP服務(wù)端搭建完成之后,進行第二步,配置開發(fā)板的網(wǎng)絡(luò)。
連接好開發(fā)板的網(wǎng)線后,上電啟動開發(fā)板,在加載階段點擊“ctrl+c”進入uboot命令行,如下圖所示:

然后來到搭建好TFTP環(huán)境的ubuntu終端,輸入“ifconfig”命令來查看虛擬機ubuntu的ip,如下圖所示:

可以看到ubuntu虛擬機的ip地址為192.168.1.79,然后輸入以下命令設(shè)置開發(fā)板的網(wǎng)絡(luò),設(shè)置完成如下圖所示:
setenv ipaddr 192.168.1.94
setenv serverip 192.168.1.79
setenv gateway 192.168.1.1

然后輸入以下命令測試開發(fā)板與ubuntu虛擬機之間的網(wǎng)絡(luò)是否暢通,測試成功如下圖所示:
ping 192.168.1.79

如果環(huán)境變量不知道哪里設(shè)置錯了,或者想要恢復(fù)成emmc啟動,可以使用以下命令重置環(huán)境變量
env default -a
Saveenv
03-tftp加載內(nèi)核和設(shè)備樹
在前面兩個小節(jié)中分別搭建了TFTP服務(wù)器以及配置好了開發(fā)板的網(wǎng)絡(luò),現(xiàn)在進行最后一步,使用tftp加載內(nèi)核和設(shè)備樹。
首先將內(nèi)核鏡像boot.img和設(shè)備樹文件rk3568-evb1-ddr4-v10-linux.dtb拷貝到第一小節(jié)創(chuàng)建的“/home/topeet/tftpboot”目錄下,拷貝完成如下圖所示:

然后根據(jù)上一小節(jié)內(nèi)容配置自身ip和server ip,設(shè)置完成之后,使用以下命令將內(nèi)核和設(shè)備樹通過網(wǎng)絡(luò)加載進內(nèi)存之中,如下圖所示:
setenv bootcmd "tftpboot 0x08300000 rk3568-evb1-ddr4-v10-linux.dtb;tftpboot 0x0027f800 boot.img ; bootm 0x0027f800 - 0x08300000"

通過以上命令將boot.img鏡像下載到首地址為0x0027f800的內(nèi)存空間;將rk3568-evb1-ddr4-v10-linux.dtb設(shè)備樹鏡像將下載到首地址為0x08300000的內(nèi)存空間;隨后輸入以下命令,等待網(wǎng)絡(luò)下載內(nèi)核和設(shè)備樹,如下圖所示:
env run bootcmd

可以看到在這里加載的就是tftp服務(wù)端存放內(nèi)核以及設(shè)備樹,等待開發(fā)板進入系統(tǒng)之后進行調(diào)試即可。
iTOP-RK3568介紹

-
TFTP
+關(guān)注
關(guān)注
0文章
23瀏覽量
14677 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5990瀏覽量
109908 -
RK3568
+關(guān)注
關(guān)注
5文章
609瀏覽量
7230 -
迅為電子
+關(guān)注
關(guān)注
0文章
72瀏覽量
271
發(fā)布評論請先 登錄
北京迅為RK3568開發(fā)板OpenHarmony系統(tǒng)南向驅(qū)動開發(fā)內(nèi)核HDF驅(qū)動框架架構(gòu)

基于迅為RK3568開發(fā)板全國產(chǎn)平臺,快速實現(xiàn)APP開機自啟動技術(shù)分享

評論