0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用TFTP加載內(nèi)核設(shè)備樹

迅為電子 ? 來源:迅為電子 ? 2025-01-17 15:52 ? 次閱讀

需求分析

嵌入式項(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

c8cf6c70-d49c-11ef-9310-92fbcf53809c.png

安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對(duì)TFTP的服務(wù)配置文件進(jìn)行修改,具體步驟如下:

輸入以下命令在家目錄創(chuàng)建tftpboot文件夾,如下圖所示:

mkdir -p tftpboot

c8cf6c70-d49c-11ef-9310-92fbcf53809c.png

安裝完成以后創(chuàng)建 TFTP 服務(wù)器工作目錄,并對(duì)TFTP的服務(wù)配置文件進(jìn)行修改,具體步驟如下:

輸入以下命令在家目錄創(chuàng)建tftpboot文件夾,如下圖所示:

chmod 777 tftpboot

c9324412-d49c-11ef-9310-92fbcf53809c.png

最后使用以下命令修改TFTP配置文件,打開配置文件以后如下圖所示:

sudo vim /etc/default/tftpd-hpa

c94eb782-d49c-11ef-9310-92fbcf53809c.png

修改為如下內(nèi)容,修改完成如下圖所示:

TFTP_USERNAME="tftp"

TFTP_DIRECTORY="/home/topeet/tftpboot/"

TFTP_ADDRESS=":69"

TFTP_OPTIONS="-l-c-s"

c9697252-d49c-11ef-9310-92fbcf53809c.png

修改完成保存退出,在終端輸入以下命令重啟tftpd-hpa服務(wù)。

sudo service tftpd-hpa restart

如下圖所示:

c97a07d4-d49c-11ef-9310-92fbcf53809c.png

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命令行,如下圖所示:

c98fe0ea-d49c-11ef-9310-92fbcf53809c.png

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

c9b024e0-d49c-11ef-9310-92fbcf53809c.png

可以看到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

c9d2caf4-d49c-11ef-9310-92fbcf53809c.png

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

ping 192.168.1.79

c9dcb974-d49c-11ef-9310-92fbcf53809c.png

如果環(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”目錄下,拷貝完成如下圖所示:

c9ee883e-d49c-11ef-9310-92fbcf53809c.png

然后根據(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"

c9fe4b84-d49c-11ef-9310-92fbcf53809c.png

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

env run bootcmd

ca1dc810-d49c-11ef-9310-92fbcf53809c.png

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


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bà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)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    通過Uboot?TFTP啟動(dòng)rt-smart內(nèi)核

    介紹Windows下通過 Uboot??TFTP 方式下載和啟動(dòng)rt-smart 內(nèi)核
    的頭像 發(fā)表于 06-30 12:34 ?3782次閱讀
    通過Uboot?<b class='flag-5'>TFTP</b>啟動(dòng)rt-smart<b class='flag-5'>內(nèi)核</b>

    tftp加載和執(zhí)行eewiki u-boot映像失敗

    時(shí),u-boot使用tftp檢索新內(nèi)核設(shè)備blob(?)和根文件系統(tǒng)(我的理解是它必須將這些圖像加載到ram中,然后將ram的內(nèi)容復(fù)制到
    發(fā)表于 10-24 14:27

    iMX6Q開發(fā)板設(shè)備內(nèi)核-注冊(cè)驅(qū)動(dòng)例程介紹

    `文檔主要講解在 iMX6Q/D/PLUS 開發(fā)板的設(shè)備內(nèi)核(4.1.15)源碼中,設(shè)備注冊(cè)驅(qū)動(dòng)和非
    發(fā)表于 07-18 15:42

    iTOP-iMX6開發(fā)板-設(shè)備內(nèi)核-注冊(cè)驅(qū)動(dòng)例程

    本文檔主要講解在迅為iTOP-iMX6Q/D/PLUS 開發(fā)板的設(shè)備內(nèi)核(4.1.15)源碼中,設(shè)備注冊(cè)驅(qū)動(dòng)和非
    發(fā)表于 08-09 10:01

    如何編譯設(shè)備和Linux內(nèi)核鏡像文件

    實(shí)驗(yàn)任務(wù):編譯設(shè)備和Linux內(nèi)核鏡像文件,拷貝到sd卡中,再從sd卡中拷貝到nand閃存對(duì)應(yīng)的分區(qū)中,最后nand啟動(dòng),進(jìn)入linux系統(tǒng)本篇博客內(nèi)容:1.實(shí)驗(yàn)流程2.注意事項(xiàng)1.實(shí)驗(yàn)流程1.
    發(fā)表于 12-20 07:11

    內(nèi)核設(shè)備的相關(guān)資料分享

    1 硬件基礎(chǔ)在我們的開發(fā)板上集成了一顆RGB燈組,引腳連接著主控的三路PWM輸出,因此我們可以通過三路PWM輸出進(jìn)行調(diào)色的功能,硬件原理圖如下:2 內(nèi)核設(shè)備我們把設(shè)備
    發(fā)表于 12-24 07:00

    請(qǐng)問LS1043A板子能否通過nfs方式掛載文件系統(tǒng)?

    -a 0x80080000 -e 0x80080000 -n Linux -d arch/arm64/boot/Image.gz uImage命令可以生成uImage文件。然后tftp加載內(nèi)核
    發(fā)表于 01-06 07:03

    如何將uboot-2020和Linux5.4.1移植到OK210?

    tftp加載內(nèi)核設(shè)備。linux內(nèi)核移植了dm9000網(wǎng)卡驅(qū)動(dòng),所以可以掛載nfs文件系統(tǒng)。
    發(fā)表于 01-13 07:31

    Linux內(nèi)核設(shè)備DTS使用方法詳解

    會(huì)得到dtb文件,dtb通過Bootloader引導(dǎo)程序加載內(nèi)核。所以Bootloader需要支持設(shè)備才行;Kernel也需要加入設(shè)備
    發(fā)表于 05-06 16:14

    rk3308b使用tftp啟動(dòng)內(nèi)核設(shè)備的具體流程

    1、rk3308b使用tftp啟動(dòng)內(nèi)核設(shè)備的具體流程我使用的是firefly的rk3308b的板子,RK官方提供的sdk里面默認(rèn)不支持使用tft
    發(fā)表于 05-17 11:12

    如何修改內(nèi)核設(shè)備

    本文檔介紹了內(nèi)核設(shè)備的位置和包含關(guān)系 1.內(nèi)核設(shè)備位置 文件 備注 dts longan/d
    發(fā)表于 12-14 13:42

    設(shè)備的傳遞及kernel 對(duì)設(shè)備的解析

    當(dāng) U-Boot 將設(shè)備加載到內(nèi)存指定位置后,ARM 內(nèi)核的 SoC 以通用寄存器 r2 來傳遞 dtb 在內(nèi)存中的地址。kernel 獲取到該地址后對(duì) dtb 文件做進(jìn)一步的處理。
    的頭像 發(fā)表于 07-29 11:19 ?2458次閱讀
    <b class='flag-5'>設(shè)備</b><b class='flag-5'>樹</b>的傳遞及kernel 對(duì)<b class='flag-5'>設(shè)備</b><b class='flag-5'>樹</b>的解析

    Linux設(shè)備詳解(二) DTB文件格式

    一、背景 ????dtb作為二進(jìn)制文件被加載到內(nèi)存中,然后由內(nèi)核讀取并進(jìn)行解析,如果對(duì)dtb文件的格式不了解,那么在看設(shè)備解析相關(guān)的內(nèi)核
    的頭像 發(fā)表于 08-10 16:02 ?5162次閱讀
    Linux<b class='flag-5'>設(shè)備</b><b class='flag-5'>樹</b>詳解(二) DTB文件格式

    如何修改內(nèi)核設(shè)備

    如何修改內(nèi)核設(shè)備
    的頭像 發(fā)表于 12-14 14:06 ?852次閱讀
    如何修改<b class='flag-5'>內(nèi)核</b><b class='flag-5'>設(shè)備</b><b class='flag-5'>樹</b>

    linux驅(qū)動(dòng)程序如何加載進(jìn)內(nèi)核

    ,需要了解Linux內(nèi)核的基本概念和API。以下是一些關(guān)鍵概念: 1.1 內(nèi)核模塊:Linux內(nèi)核模塊是一種動(dòng)態(tài)加載和卸載的代碼,可以在不重新啟動(dòng)系統(tǒng)的情況下
    的頭像 發(fā)表于 08-30 15:02 ?533次閱讀