ARM仿真器-foxICE 设为首页   |   加入收藏夹   |   网站地图         
  站内搜索:
 
http://www.foxice.net
最新下载_foxICE
ARM7TDMI R3内核
ARM7EJS内核
ARM946E-S内核
ARM966E-S内核
ARM9TDMI内核
ARM940T内核
ARM指令集速查卡
ARM925T内核(TI925T)

更多 >> 

 技术专栏RSS订阅

   首页>技术专栏>U-boot>VxWorks 的bootrom 到u-boot 的移植心得

VxWorks的bootrom 到u-boot的移植心得

作者:不详 1  2  3  4  5  6  7  8  9  10  11

Security: Standard
Timeout: 3
Max Retransmit: 6
Tftp port: 69 (这个不能改)
Base Directory: vxWorks.bin 所在的目录
给目标板上电,在控制台串口下将看到:
Type "run tftpboot" to mount root .bin file over net you should open a tftp server and set home directory correctly
Hit any key to stop autoboot: 0
Using i82559#0 device
TFTP from server 192.0.0.2; our IP address is 192.0.0.1
Filename 'vxWorks.bin'.
Load address: 0x100000
Loading: #################################################################
#################################################################
#############
done
Bytes transferred = 728640 (b1e40 hex)
## Starting application at 0x00100000...

tftp 设置图

接下来出现串口打印出一堆乱码。
进行到这一步,说明网口已经正确初始化,并从网络下载了VxWorks.bin 到本地内存, u-boot 要完成的工作已经完毕。后面出现乱码,是因为我们的VxWorks.bin 是基于RAM_LOW_ADRS 为0x00010000 而不是0x00100000 为基础制作的。修改config.h和makefile中的RAM_LOW_ADRS,重新编译生成vxWorks.bin:
make clean
make vxWorks
elftobin <vxWorks> vxWorks.bin
再次启动电路板,可以看到bootrom 启动,从flash 将u-boot.bin 加载到内存0x00010000, 然后u-boot 运行,从网络加载vxWorks.bin 到内存0x00100000,最后vxWorks 运行。
到此,u-boot 的一遍运行流程就结束了。如果需要选择其他的运行方式,可以在控制台
下先用手动输入命令的方法调试,调试完毕后修改再user8240.h 中的宏定义。当提示环境变
量没有设置时,可以用setenv 手动设置变量。

5. 最后的收尾工作

5.1 u-boot 从flash 加载VxWorks
为了最终摆脱PC 机,需要把vxWorks.bin 烧写到电路板的flash,让u-boot 从flash 加载vxWorks。首先仍然使用上面的工作方式,启动vxWorks,利用vxWorks 将vxWorks.bin写入flash,注意这里的vxWorks 的RAM_LOW_ADRS 为0x00100000。
在\common\main.c 的main_loop()中加入:
#if (defined CONFIG_USER8240 && defined BOOT_FROM_FLASH)
char tmpt[4];
int vxWorksLen = 0x100000;
ulong addr_vx,rc_vx;
int argc_vx;
char *argv_vx;
#endif
修改语句if (bootdelay >= 0 && s && !abortboot (bootdelay)) {
后的内容为:
#if (defined CONFIG_USER8240 && defined BOOT_FROM_FLASH)
/*auto-boot from flash*/
if(flashInit()==0)
{
/*首先读取U-BOOT 的长度,存储在FLASH_DATA_UBOOT 开始的头4 个字节*/
if(flashDataGet(FLASH_DATA_CPU,tmpt,4)!=0)
printf("error in getting vxWorks length\n");
else
{
vxWorksLen=tmpt[0]*0x01000000+tmpt[1]*0x00010000
+tmpt[2]*0x00000100+tmpt[3];
/*从flash 中的第FLASH_DATA_CPU 块开始读取vxWorks 本身长度再加上头4 个字节长度的字节*/
printf("\nloading vxWorks for %d bytes from flash\n",vxWorksLen);
if(flashDataGet(FLASH_DATA_CPU,
(char*)(IMAGE_VXWORKS_RAMADDR-4),
vxWorksLen+4) !=0)
printf("error in getting U-BOOT from flash\n");
else
{
/*开始运行*/

1  2  3  4  5  6  7  8  9  10  11

立即下载:
点击下载
相关文档
U-Boot在44B0X开发板上的移植以及代码分析
uboot移植到S3C44B0X开发板的经历
S3C44B0\U-Boot的启动流程及移植
U-Boot在S3C2410上的移植
uboot在ARM s3c2410上移植过程
U-boot移植日记(s3c44b0)
嵌入式系统中U-Boot基本特点及其移植方法
下载说明:
  1. 未经本站明确许可,任何网站不得非法盗链及抄袭本站资源!
 

首页 | 产品介绍 | 技术支持 | 下载中心 | 技术专栏 | 关于我们 | 联系我们
电话:86-755-82798083   82796301   传真:86-755-82799007    Email:sales@foxice.net   sales6@foxice.net
在线咨询:QQ:346466907   MSN:sales6@foxice.net   ini3000@msn.com

© 2006 Foxice.net 版权所有