转帖]Tornado/Vxworks新手探路系列

tangqiuzheng 2005-06-13 05:29:22

Tornado/Vxworks新手探路系列

!PC104的BSP
可直接使用486,pentium的bsp
若要作新BSP, 可以参考TORNADO的基本BSP开发包, bsp develope kit?

-------------------------------------------------------------------------------
!BSP的开发流程
BSP没什么标准的开发流程,一般的BSP都是基于某个BSP porting而来,
它的分类是按照CPU的类型来分类的,如:860, x86, ARM, i960...。
1.得到了基本BSP后,首先要针对不同的CPU类型,确定基本BSP中的所有的寄存器配置
是否适合你当前的硬件(包括SDRAM)。如果不适合则做相应的改动。这主要是指
rominit.s, config.h中的修改了。
2.其次如果有网络设备,则需要配置confignet.h。
3.如果有串口,则需要修改sysSerial.c。
4.修改sysLib.c中的硬件相关的部分。
其中的2,3,4并无严格的修改顺序,反正1,2,3,4中无论哪个有问题你都
必定run不起来!

-------------------------------------------------------------------------------
!如何从PC机上down 应用程序到目标机, 如何做Bootrom
!tgtsvr限制, 可能影响下装; 如果是试用版,30次后就要过期

在程序编译通过后,启动tgtsvr,然后Configure,发送。
与Target agent 连接成功后,就可以download程序了。

看来你做的是bootable的镜像,这种镜像分成两部分——bootRom和VxWorks。
bootrom的生成通过两个途径可以完成:在命令行状态下用makefile文件,输入:make bootrom(或其他格式);
或者用图形方式,在TORNADO界面里->Build->Bulid Boot ROM->出现一个对话框,左边选中BSP,
右边选中bootrom的格式(具体格式的含义可参考WINDRIVER的文档),然后就可以了。
当然在做bootrom之前需要配置config.h文件的BOOTLINE,需要配置好网络的参数,包括IP、用户名、密码
(具体内容请参考WINDRIVER文档),然后把BOOTROM通过仿真器下载到板子的NVRAM里去,BOOTROM就会帮你
从网络上启动VxWorks了。

从pc机上down应用程序:你要先配置target server,连接到你的目标机。
作bootrom:在tornado安装目录\target\config\你所需要的目标积类型,例如pcPentuim\config.h文件
中按你的需求修改相应boot line,然后用tornadoII菜单中的built boot rom生成boot rom即可。

-------------------------------------------------------------------------------
!怎样制作在X86计算机上的VXWORKS的软盘启动盘
首先要生成基于x86的bootrom_umcomp 或 vxworks.st_rom文件
准备一张格式化的软盘,在dos方式下使用如下命令即可:
mkboot a: bootrom_uncomp 或 mkboot a: vxworks.st_rom

-------------------------------------------------------------------------------
!tornado安装完后,其安装密码会存在注册表中


Tornado/Vxworks新手探路(3)

今天用软盘在PC上启动了vxworks:

>准备格式化好的软盘;
>参照Tornado User's Guide的
4.7 Configuring and Building a VxWorks Boot Program
Building a Boot Image
我选择pc486和bootrom_uncmp,
在\Tornado\target\config\pc486\下生成bootrom_uncmp;
>查看mkboot.bat
将bootrom_uncmp复制到d:\temp下, 并改名为bootrom.sys;
在\Tornado\host\x86-win32\bin\下执行:
mkboot a: d:\temp\bootrom.sys
> 将\Tornado\target\config\pc486\下的vxWorks.st到a:
vxWorks.st在安装完成就有.
>通过a:启动PC:
Bios将Vxld(引导扇区)装入到0x7C00, 并跳转执行
Vxld将bootrom.sys载入到0x8000, 并跳转执行
在bootrom的shell下, 使用l命令将vxworks.st载入到0x108000
使用g 0x108000跳转执行vxworks.st, 进入target shell
在shell下能用i命令查看任务列表.

Notes:
mkboot: 初始化引导扇区(vxld), 并复制bootrom
bootrom.sys必须使用mkboot写入, 不能直接复制, 必须保证连续存放, 可用CHKDSK检查

?
Bsp之间的区别, 如Pc386与PC486
如何使用其它格式的bootrom, 如: 压缩, res, hex
如何生成vxWorks.st, 它带符号表, 与vxworks, vxworks.sym的关系如何


下步工作:
驱动网卡, 搭建调试环境;
用DiskOnChip启动Pc/104, 搭建调试环境;


Tornado/Vxworks新手探路(4)

今天对软盘上的数据存储进行分析:

1. bootrom_uncmp和vxworks.st都是a.out执行文件格式.
aout格式细节可参考a.out(4) Architecture-Dependent File format文档
以及Tornado\target\h\目录下的a.out.h和hpAout.h.

2. 可以使用tornado带的GNU Binary Utilities查看a.out格式的文件,
如使用nm386, size386, strings386等
具体可参考帮助里的"GNU toolkit user's Guide"中的说明;
可惜没有一个类似Peditor类似的集成工具, 查看a.out文件的信息.
最好有一个支持a.out格式的,类似W32ASM的反编译器.

3. 可以使用Ida pro对a.out格式文件进行反编译, 获得a.out格式文件的具体信息;
但信息不全, 如section, strings等都没有.
Ida pro是非常强大的工具, 支持PE, Ne, a.out, coFF, elf等多种文件格式
支持众多CPU: x86, MIPS, PPC, MC68k, ARm, Aplpha.......
Cracker的必备工具. 最新版为4.20, 我现在使用4.04

4. 使用winhex的disk editor查看软盘:
VxLd1.2代码存放在第一个扇区, 并置标识55 AA.

bootrom.sys在软盘中, 并未按原样存放, 去掉文件头的前32字节;
后面部分连续存放在0x4200 - 0x6Df70磁盘空间内,
软盘上bootrom.sys文件大小减少了32字节.

后面扇区, 紧接着存放vxwork.st, 这个文件是原样存放;
可直接复制.

PC/104介绍:
PC/104是一种嵌入工业格式的IBM兼容PC.
它有104脚的(stack-through)栈叠式连接插座.
插座与8位(PC-XT)和16位(PC-AT)的ISA总线兼容.
PC/104+添加了与PCI兼容的32位总线.
PC/104的尺寸为90 x 95 mm.

SBC: Single Board Computer


Tornado/Vxworks新手探路(5)

关于bootrom_uncmp相关源代码和代码的启动顺序

1. bootrom_uncmp的编译与makefile, rules.bsp, defs.bsp有关
bootrom_uncmp目标规则在rules.bsp中定义. 需要目标文件
romInit.o bootInit_uncmp.o version.o bootConfig.o
以及$(MACH_DEP) $(LIBS),

2. MACH_DEP在defs.bsp中定义:
MACH_DEP = sysALib.o sysLib.o $(MACH_EXTRA) $(ADDED_MODULES)
MACH_EXTRA, ADDED_MODULES未定义

3. LIBS在defs.bsp中定义:
LIBS = $(LIB_EXTRA) $(TGT_DIR)/lib/lib$(CPU)$(TOOL)vx.a
LIB_EXTRA未定义

4. romInit.o由相应BSP目录下的romInit.s产生;
romInit.s在x86兼容BSP下都是一样的,
与ns486,ev386的不相同,(文件比较的工具我使用CSDiff);
可能因为ns486,ev386专为嵌入式设计,不带BIOS;

5. bootInit_uncmp.o由bootInit.c产生
$(CP) $(BOOTINIT) bootInit_uncmp.c
BOOTINIT = $(CONFIG_ALL)\bootInit.c, 在defs.x86-win32中定义
bootInit.c在编译时, 使用不同编译条件生成不同目标,
bootInit_uncmp.o使用-DUNCOMPRESS



按照Tornado Prototyper 2.0 Getting Started Guide的
第三章 Using Tornado and Tools, 运行cobble.c, 得到HOT!, Ok....HOT!OK

心得:
1. Tornado Prototyper 2.0 Getting Started Guide比完全板的好读;
2. 目标通过target server体现, 不管是SimNT还是实际的硬件, 要下载和仿真必须有targetsvr;
3. Shell能启动/停止程序, 能观看任务列表, 但应用程序的输出到VxSim窗口;
4. Windview这种动态调试工具不错, 以前在PSOS中未用过, 看任务执行比较有趣, 但还看不太懂;
5. Crossview调试器好像不太好用, 好像要出事他才奔出来, 不是太爽;
6. Browser好像是Shell的一个图形表示, 能观察内存, 堆栈等.
7. 代码编辑器不乍得, 不支持代码预编译, 不支持鼠标滚动, 但有代码版本控制, 总之一般,
不如用 Source insight 3.1 + Cs_RCS_PRO;

暂时就这些, 下步是用真的硬件PC104x86作为target, 希望能顺利

amine 2001-12-30



--------------------------------------------------------------------------------
编辑 发表於:2002-01-05 - 09:57:17 IP: 211.97.*.*



amine



Edited by - amine on 2002-01-05 10:08:47


...全文
914 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
romyks 2005-07-07
  • 打赏
  • 举报
回复
还好,还好.....
tangqiuzheng 2005-07-07
  • 打赏
  • 举报
回复
大家不觉得这个文章不错?

6,125

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 硬件设计
社区管理员
  • 硬件设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧