uboot 裸机开发

发布时间 2024-01-12 19:03:27作者: zxddesk

裸机程序开发里有一种低成本方案,利用u-boot的TFTP和USB下载功能,将成程序下载到开发板的内存用go命令来运行。

只要最终结果是ARM机器指令即可。理论上u-boot也能直接运行内存中的ELF文件,它需要用 bootelf命令运行。不过我一般都是编译器直接转成bin文件来运行的。

因为u-boot已经对开发板进行基本的初始化了,比如内存,时钟等。因此下载的二进制程序可以直接做一些操作,比如直接来点LED。以下均在mini6410进行测试.


一.下载,运行程序
---------------------------------------------------------------------

上电后,长按回车键进入u-boot控制台.按q进入提示符.

配置网络
setenv ipaddr 10.1.0.123 #设置开发板IP
setenv serverip 10.1.0.191 #设置下载服务器IP
saveenv #只存当前设置到Nand Flash之上.
ping 10.1.0.191 #ping 服务器

MINI6410 # setenv ipaddr 10.1.0.123
MINI6410 # setenv serverip 10.1.0.191
MINI6410 # saveenv
Saving Environment to NAND...
Erasing Nand...Writing to Nand... done

MINI6410 # ping 10.1.0.191
dm9000 i/o: 0x18000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:90:90:90:90:90
operating at 100M full duplex mode
checksum bad
checksum bad
host 10.1.0.191 is alive


tftp下载

1.tftp <内存地址> <文件名>
tftp 0x50000000 asm-led.bin
还有一种写法是
tftp <内存地址> <服务器IP>:<文件名> 这样可以从不同服务器下载

要求serverip对应的服务器要有TFTP服务器,如果是RHEL5,用自带的tftpserver即可,
如果WINDOWS,我建议是用3CDaemon ,它是一个简单的TFTP/FTP服务器.开发时足够了。



MINI6410 # tftp 0x50000000 asm-led.bin
dm9000 i/o: 0x18000300, id: 0x90000a46
DM9000: running in 16 bit mode
MAC: 08:90:90:90:90:90
operating at 100M full duplex mode
TFTP from server 10.1.0.191; our IP address is 10.1.0.123
Filename 'asm-led.bin'.
Load address: 0x50000000
Loading: checksum bad
checksum bad
T #
done
Bytes transferred = 132 (84 hex)
MINI6410 # go 0x50000000
## Starting application at 0x50000000 ...

运行二进制文件用 go就行.

USB下载

USB下载标准u-boot没带,一般都是开发者自己加的,PC机端用DNW通过USB下载。如何加这个功能,可以参考
http://www.arm9home.net/read.php?tid-4902.html
我们这里只介绍下载命令

usbslave - usbslave - get file from host(PC)
Usage:
usbslave [wait] [loadAddress]
"wait" is 0 or 1, 0 means for return immediately, not waits for the finish of transferring


usbslave 1 0x50000000


二.运行ADS编程程序
-----------------------------------------------------------------------------
ADS程序本身就是ELF格式的,因此用FromElf工具转换成 *.bin文件即可下载到内存直接运行。你可以下载这个针对MINI6410的汇编的点灯的小程序,它会把1,3和2,4号LED交替闪烁。

汇编程序

所以一般只要把汇编编写的bin下载到ADS程序的RO-BASE地址即可,运行看到LEDS灯点亮。


文件: asm-led.zip
大小: 0KB
下载: 下载

C程序

但是如果包括带的C的程序,则需要对代码做一些调整才能在线下载,比如mini6410官方提供的LEDS点灯程序,可以在SD卡中运行。但是用u-boot 下载后运行没有反应。因此需要调整
————————————————
版权声明:本文为CSDN博主「逆鳞→_→」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011414997/article/details/49132673