uboot 裸机开发
裸机程序开发里有一种低成本方案,利用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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」