Andrew Haung
裸机程序开发里有一种低成本方案,利用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下载。如何加这个功能,可以参考
我们这里只介绍下载命令
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 下载后运行没有反应。因此需要调整
三.运行arm-linux-gcc 编译程序
----------------------------------------------------------------------------
阅读(1735) | 评论(0) | 转发(0) |