需求分析
在嵌入式項(xiàng)目開發(fā)中,為了適配新外設(shè)、調(diào)整硬件資源分配或修復(fù)驅(qū)動(dòng)問題,需要頻繁修改設(shè)備樹和內(nèi)核。修改完成后,通常需要重新編譯生成鏡像,并將其燒錄到開發(fā)板上進(jìn)行測(cè)試。然而,傳統(tǒng)的燒錄方式不僅需要連接物理接口,還可能因?yàn)殓R像體積較大而耗費(fèi)較長時(shí)間,這在開發(fā)周期緊張的情況下顯得尤為低效。
為了解決這一問題,可以采用基于TFTP(Trivial File Transfer Protocol)的內(nèi)核和設(shè)備樹加載方法。這種方式無需將鏡像完整燒錄到開發(fā)板的存儲(chǔ)介質(zhì),而是通過網(wǎng)絡(luò)直接加載和運(yùn)行新內(nèi)核與設(shè)備樹。相比傳統(tǒng)燒錄方式,TFTP 加載顯著減少了鏡像更新的等待時(shí)間,同時(shí)允許更靈活地對(duì)不同版本的內(nèi)核或設(shè)備樹進(jìn)行快速切換和驗(yàn)證。
TFTP加載內(nèi)核設(shè)備樹
實(shí)驗(yàn)平臺(tái):iTOP-RK3568開發(fā)板
01-安裝TFTP服務(wù)端
首先進(jìn)行TFTP 服務(wù)端的搭建,首先在ubuntu終端中執(zhí)行以下命令安裝TFTP服務(wù):
sudo apt-get install tftp-hpa tftpd-hpa
安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對(duì)TFTP的服務(wù)配置文件進(jìn)行修改,具體步驟如下:
輸入以下命令在家目錄創(chuàng)建tftpboot文件夾,如下圖所示:
mkdir -p tftpboot
安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對(duì)TFTP的服務(wù)配置文件進(jìn)行修改,具體步驟如下:
輸入以下命令在家目錄創(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ù)端搭建完成之后,進(jìn)行第二步,配置開發(fā)板的網(wǎng)絡(luò)。
連接好開發(fā)板的網(wǎng)線后,上電啟動(dòng)開發(fā)板,在加載階段點(diǎn)擊“ctrl+c”進(jìn)入uboot命令行,如下圖所示:
然后來到搭建好TFTP環(huán)境的ubuntu終端,輸入“ifconfig”命令來查看虛擬機(jī)ubuntu的ip,如下圖所示:
可以看到ubuntu虛擬機(jī)的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
然后輸入以下命令測(cè)試開發(fā)板與ubuntu虛擬機(jī)之間的網(wǎng)絡(luò)是否暢通,測(cè)試成功如下圖所示:
ping 192.168.1.79
如果環(huán)境變量不知道哪里設(shè)置錯(cuò)了,或者想要恢復(fù)成emmc啟動(dòng),可以使用以下命令重置環(huán)境變量
env default -a
Saveenv
03-tftp加載內(nèi)核和設(shè)備樹
在前面兩個(gè)小節(jié)中分別搭建了TFTP服務(wù)器以及配置好了開發(fā)板的網(wǎng)絡(luò),現(xiàn)在進(jì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ò)加載進(jìn)內(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ā)板進(jìn)入系統(tǒng)之后進(jìn)行調(diào)試即可。
-
嵌入式
+關(guān)注
關(guān)注
5088文章
19160瀏覽量
306538 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1379瀏覽量
40348 -
TFTP
+關(guān)注
關(guān)注
0文章
21瀏覽量
14348 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
5100瀏覽量
97835 -
設(shè)備樹
+關(guān)注
關(guān)注
0文章
39瀏覽量
3141
原文標(biāo)題:【技術(shù)分享】使用TFTP加載內(nèi)核設(shè)備樹
文章出處:【微信號(hào):迅為電子,微信公眾號(hào):迅為電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論