U-boot

裸机程序开发里有一种低成本方案,利用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服务器.开发时足够了。
     
U-boot
 
   
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 编译程序
----------------------------------------------------------------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值