樹莓派4上使用uboot+tftp調試rt-thread程序


樹莓派4上使用uboot+tftp調試rt-thread程序

toc

1.文章說明

做嵌入式開發,往往一個高效而可靠的開發環境,對於開發者來說非常的重要。

因為嵌入式往往需要把程序放到板子上去運行,而再樹莓派上做rt-thread開發調試的時候,通常有三種辦法。

第一種:SD卡轉移

這種辦法就是替換SD卡鏡像內的kernel文件,這種辦法每次都要將SD卡拔出,然后從電腦中轉移系統鏡像到SD卡中。

第二種:用uboot+tftp

這種辦法的有點就是直接通過網絡方式進行下載,需要有網線插入,並且宿主機搭建一個tftp的服務器。

第三種:用uboot+串口ymodem

這種就是利用了uboot里面的ymodem的功能,只需要將固件通過串口加載到內存,然后指定內存的運行的起始地址。

下面我主要介紹第二種方式進行說明。

2.編譯uboot程序

可以看我之前編譯樹莓派3編譯uboot的文章。

接着,可以需要注意的是配置

ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make rpi_arm64_defconfig

配置完成后,接着輸入make menuconfig。接着需要uboot開啟dcache的命令。

這里的命令

接着添加dcache命令

選擇

配置完成后,就可以進行編譯了

ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- make

編譯完成后,會生成u-boot.bin程序。

3.啟動uboot

因為uboot要放到SD卡目錄下,所以先修改config.txt

enable_uart=1
arm_64bit=1
kernel=u-boot.bin

然后把編譯好的固件放到SD卡中。

啟動就可以看到效果了。

設置環境變量:

setenv bootcmd "dhcp 0x00200000 192.168.12.194:rtthread.bin;dcache flush;go 0x00200000"
saveenv

其中要設置自己的tftp服務器的IP地址。dcache flush就可以了。

最后重啟系統就可以了。

每次更新了RTT固件,直接將編譯好的固件放到TFTP服務器的文件夾中,接着上電重啟樹莓派即可。不用每次都對SD卡進行操作了。

4.編譯rtt固件

這里需要注意的是將RTT的固件地址進行一定的偏移。

https://github.com/RT-Thread/rt-thread/tree/master/bsp/raspberry-pi/raspi4

接着設置link.lds文件。將起始地址改為0x200000

因為uboot的入口地址是0x80000,如果這里也是0x80000那就不行了。

所以這里改一下入口地址就可以了。

5.總結

再uboot中將固件轉移到內存中,然后從內存中進行跳轉的過程。需要注意的是將cache關閉掉。

因為目前uboot中已經開啟了mmu,這會導致跳轉過去的時候,cache沒有關閉掉,會出現data abort。所以在跳轉前需要關閉MMU。

對於樹莓派的程序調試,采用uboot+tftp確實是一種加快調試手段的方法。






免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM