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

把VmWare 的启动CD 设定为此iso 文件。
然后在命令行下:
$ mount /dev/cdrom
$ cd /mnt/cdrom
$ ./install [-d <dir>] [<cpu_family>]
最后一句是设定安装到的路径和安装的组建,例如要安装powerpc603 系列的编译器,
目的地址放在/soft 下,则命令为:
$./install –d /soft ppc_6xx
如果不输入cpu 类型,则所有的类型都被安装。 安装完毕还需要设定环境变量:
export CROSS_COMPILE=ppc_6xxexport
PATH=$PATH:/soft/usr/bin:/soft/bin


设定VmWare 的CDROM 为iso 文件

第一句是设定编译的cpu 类型,第二句设定路径,就是编译器安装后的路径。设置完毕之后可以找一个简单的foo.c 文件编译一下,看看是否安装成功。
$ ${CROSS_COMPILE}gcc –o foo foo.c
具体情况参见/mnt/cdrom 下的readme.html。
比较懒的人可以用root 权限,在文件/etc/profile 文件下加入下面两行,这样就不用每次都输入了。(http://www.stcore.com/html/2005/1024/51803.html,里面有单用户设置path 的方
法)
export CROSS_COMPILE=ppc_6xxexport
PATH=$PATH:/soft/usr/bin:/soft/bin
重新启动VmWare,否则这两个环境变量的设置是无效的哦。
2.3 硬件准备
合适的电源,串口线(Windows 下用超级终端监视),对接网线或者正常网线+HUB。 这些调试VxWorks 下的bootrom 也要用,就不多废话了。强烈建议用仿真器,可惜我没有, 导致调试过程中麻烦的要死。还好我有一套已经调试好的bootrom+VxWorks,硬件也都正常, 否则直接改u-boot,估计很难调通。此外,由于启动设备为EEPROM,还需要一个编程器(包括PLCC 到双列直插的转接座)。
3.软硬件结构分析
3.1 软件的存储设备
先来看看板子上的存储设备。
首先是ROM,可以掉电存储,也是我使用的电路板的CPU 上电自动跳转的地址所在。 ROM 的优势是拆卸方便,如果在板上焊了ROM 座,那么可以用编程器烧录的ROM 就是不需要任何软件准备,就可以直接使用的唯一东西。缺点是烧录起来又慢又麻烦。
其次是FLASH,可以掉电存储,可以用CPU 编程控制在线烧录。如果手头有仿真器,而且电路板上的FLASH 做到了地址连续,可以用仿真器烧录,如果再将其地址映射到CPU的上电跳转地址,是最理想的放bootloader 的地方。缺点是普通FLASH 没有方便编程器烧录的封装,而仿真器比较贵。
最后是RAM,不能掉电存储,但是无论是u-boot 还是VxWorks 的bootrom,启动后期都会跳转到RAM 运行,原因是在RAM 里程序的运行速度明显高于ROM 或者FLASH。最终操作系统也需要在RAM 里运行。
综上,如果是将要设计的电路板,且手头上有仿真器,建议用FLASH作为启动设备。 或者使用跳线控制地址映射,选择从ROM 或者FLASH 启动。注意FLASH 的设计必须做到地址连续。
对于我手头的电路板,只能从ROM 启动。因此本文中介绍的是从ROM 启动的修改方式。没有使用仿真器,在u-boot 的调试中借用了bootrom 和VxWorks。如果有其他形式的bootloader 和RTOS,本文也可以作为参考。否则只能建议去购买仿真器了。
3.2 bootrom 和VxWorks 的软件结构
这不是本文的重点,更具体的可以参考源代码和Wind River 的Tornado BSP Training Workshop,熟悉VxWorks 的读者可以直接跳过本节。
首先看看VxWorks,广义上的VxWorks 包括了操作系统引导程序bootrom 和操作系统VxWorks。而用户程序User Application,在开发过程中通常是使用网络下载,在开发完毕后和VxWorks 结合到一起,因此开发完毕后主要的执行文件,就是bootrom 和VxWorks。这两个文件都是基于Wind River 提供的板级开发包(Board Support Package, 简称BSP)生成的。修改和生成方法分为在IDE Tornado 的图形界面下编译和在Dos 命令行下输入命令两种。个人认为,图形界面的修改不能解决底层问题,真正底层的修改还是需要修改源代码,且Dos键盘操作比鼠标操作快(估计很多老Dos 和Linux 用户会同意吧),因此我用的是命令行。
首先从BSP 制作一个bootrom,详细的修改和调试步骤就不在这里罗嗦了。
Bootrom 的启动顺序为:
romInit.s:第一个执行的汇编,初始化一堆CPU 内部寄存器,禁止中断、浮点运算, 初始化内存控制。
bootInit.c:romStart()为首个执行的C 程序,将bootrom 代码拷贝到内存。
bootConfig.c:usrInit()为首个在内存中执行的C 程序,之后跳转usrRoot(),它们初始化包括PCI 总线、串口、网口在内的硬件,最后开展多任务,运行bootCmdLoop(),提供串口操作,控制自动启动或者选择其他启动方式。
VxWorks 启动顺序为:
sysALib.s:VxWorks 首个启动的汇编,CPU 内部寄存器初始化。
usrConfig.c: usrInit(),VxWorks 首个执行的C 程序,之后跳转usrRoot(),它们进行更加详细的硬件初始化,初始化多任务内核,最后调用user application。
Bootrom 运行过程中,不同地址的在不同启动阶段的内容分布如下,其中ROM 由于不可写,因此不再重复:

时间 内容 首地址 大小 说明
初始上电 ROM 0xfff00000 0x00080000 包含bootrom.bin
拷贝剩余
bootrom 后
RAM 0x00400000 0x00080000 包含bootrom.bin
运行bootrom RAM 0x00400000 0x00080000 包含bootrom.bin
RAM
0x00400000-0x1000 0x1000 堆栈
RAM 0x00004200 255 启动参数
加载VxWorks 后 RAM 0x00400000 略小于bootrom.bin bootrom.bin
RAM
0x00010000 约1MB, 即vxWorks.bin
的大小
VxWorks 映像
RAM
0x00400000 -0x1000 0x1000 堆栈
RAM 0x4200 255 启动参数

其中各参数的宏定义即意义按出现顺序如下:
0xfff00000(+0x100): ROM_TEXT_ADRS,MPC8240 的启动地址为0xfff00100,在config.h 和makefile 中同时定义,必须一致,且如果系统一上电就运行bootrom,则此地址不能修改
0x00400000: RAM_HIGH_ADRS,bootrom 映像加载到内存的目的地址,在config.h和makefile 中同时定义,必须一致,可以修改
0x1000: STACK_SAVE,bootrom 运行过程中需要的堆栈大小,一般不需要修改
0x00080000: ROM_COPY_SIZE,从ROM 拷贝到RAM 的长度,必须大于非压缩型bootrom 映像的大小,一般不修改
0x00004200: BOOT_LINE_OFFSET,存放诸如本地IP 等启动参数的内存位置,与CPU类型有关,一般不修改
255: BOOT_LINE_SIZE,启动参数的长度,一般不需要修改,除非启动行比较长
0x00010000: RAM_LOW_ADRS,vxWorks 映像加载到内存的目的地址,在config.h 和makefile 中同时定义,必须一致,可以修改
在VxWorks 加载完毕之后,程序跳转到VxWorks 的入口,内存被重新分配,包括bootrom

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 版权所有