tonado
在网上看了好多的好文章,谢谢大家的慷慨!
我说说我的目标机硬件和我怎么修改BSP的吧:
CPU:Pentium M DDRRAM:
显卡:INTEL
CF卡:
CF卡参数: CAPACITY:128 Cyls:980 Head:8 Precomp:0 Lands:979
Sector:32
软件:WINXP,
TORNADO2.2 FOR.PENTIUM + t22-cp1-pentium=TORNADO
WINDML3.0 (DISK_ID:TDK-14774-ZC-00)+windml3_0-cp3= WINDML
CF卡位于IDE SECONDARY MASTER 及从盘主接口。可看做一个硬盘。
在BIOS里可以看到CF卡参数,把IDE HDD AUTO-DETECTION 回车就可以!其他的ACCESS MODE 设为AUTO
首先用光驱启动把CF卡给格式化了,据说要用D0S622格式化才可以,我下了“凤凰软件之超级万能启动光盘PXOSFT.ISO”,里面有D0S622启动。另外我用WIN98启动盘的DOS也可以把CF卡格了。
接着用vxsys.com把CF卡格成VXWORKS认识的格式。如下:
创建Bootrom和Vxworks image:
(8) 首先用Dos 6.22 启动X86,格式化 CF 卡为一个主DOS分区. 最好先C:\>format C:/S 接着从CF卡启动看看可以启动否!
起不来的话有时MBR会有些问题,要是这样就D:\FDISK /MBR。
要是可以启动的话就执行以下的步骤:
有时可能要D:\LOCK C:(有时也可以不用)
D:\>format C: 回车;
D:\>vxsys C: 回车;
(成功后vxld会成功写入CF卡的引导扇区,表明你的CF卡已经在vxworks下被认可了,现在就可以创建Bootrom了。)
(9)编译和固化Bootrom,创建一个引导映像bootrom.BIN,
把它放入D:\Tornado2.2pt\host\x86-win32\bin\ 因为MKBOOT也在里面,mkboot a: bootrom.bin 生成bootrom.sys,这时你要是没有软驱最好用RamDiskNT虚拟个软驱出来!这玩意就只能在软驱里弄。
TORNADO2.2里用mkboot比较方便,VXCOPY好象不行!
之后将bootrom.sys文件做到你的CF卡中,若bootrom.sys引导成功的话会出现
V1.6+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
这就可以了!这时若你还是#undef INCLUDE_PC_CONSOLE(显示器终端)
这是将从你的串口0以9600BPS输出数据,要是#define INCLUDE_PC_CONSOLE 则在显示器输出(切记)。
这时CF卡还没有被正确认出的话会提示NVRAM错误,要认出的话就会在卡里自动写入NVRAM.TXT文件以做引导用把DEFAULT_BOOT_LINE的东西自动写入!
修改BSP:
#define DEFAULT_BOOT_LINE \
"ata=1,0(0,0)host:/ata1/vxworks h=192.168.0.37 e=192.168.0.17 pw=
“ata=1,0(0,0)”中括号外的1表示ata controler1(硬盘控制器1),0表示drive 0
(驱动器0);括号内的前一个0表示硬盘编号,和drive 0是同样的意思,后一个0表示硬盘的分区编号。
#define SYS_WARM_TYPE SYS_WARM_ATA /*定义热启动设备为硬盘*/
#define SYS_WARM_ATA_CTRL 1 /* controller 0 *//*使用1#硬盘控制器进行热启动*/
#define SYS_WARM_ATA_DRIVE 0 /* 0 = c:, 1 = d: */
#define INCLUDE_ATA/*包含IDE或EIDE(ATA)硬盘驱动*/
#define ATA1_CTRL_TYPE (IDE_LOCAL) /*定义设备为IDE 硬盘*/
#define ATA1_INT_LVL (0x
最后说一下CF卡的参数问题:CF卡参数: CAPACITY:128 Cyls:980 Head:8 Precomp:0 Lands:979 Sector:32
因为我是ATA1的主盘所以:
/* controller one device zero */
#define ATA_CTRL1_DRV0_CYL (980) /* ATA 1, device 0 cylinders */
#define ATA_CTRL1_DRV0_HDS (8) /* ATA 1, device 0 heads */
#define ATA_CTRL1_DRV0_SPT (32) /* ATA 1, device 0 sectors per track */
#define ATA_CTRL1_DRV0_BPS (512) /* ATA 1, device 0 bytes per sector */
#define ATA_CTRL1_DRV0_WPC (0x00) /* ATA 1, device 0 write pre-compensation */
/*使它和你的CF卡的几何参数(磁道,扇区,柱面等)一致*/
这样就可以从CF卡启动了!
另外VxWorks是从0,0开始初始化硬盘的,所以VXWORKS认不出你的CF卡你可以从target/config/comps/vxworks/10bsp.cdf文件的对INCLUDE_ATA组件看出来,它给DOSFS_NAMES_ATA_PRIMARY_MASTER这个参数定义了一个默认值为/ata
DOSFS_NAMES_ATA_PRIMARY_MASTER、
DOSFS_NAMES_ATA_PRIMARY_SLAVE、
DOSFS_NAMES_ATA_SECONDARY_MASTER、DOSFS_NAMES_ATA_SECONDARY_SLAVE,
而且判断依据是名字是否为“”即空字符串。所以解决方法:
。在config.h文件里面直接设置好上述宏,生成映象的时候就不要再修改了。。。。。
#define DOSFS_NAMES_ATA_PRIMARY_MASTER ""
#define DOSFS_NAMES_ATA_PRIMARY_SLAVE ""
#define DOSFS_NAMES_ATA_SECONDARY_MASTER "/ata1/"
#define DOSFS_NAMES_ATA_SECONDARY_SLAVE ""
在void usrAppInit (void)
{
#ifdef USER_APPL_INIT
USER_APPL_INIT; /* for backwards compatibility */
#endif
加入 ioDefPathSet("/ata1/");你就可以打开CF卡了。
在SHELL里用ataShow(1,0);就能看到卡的参数!哈哈恭喜你!
调windml下鼠标键盘的经验
感谢unicell,从网上下的后修改!
步骤:
1、建立VxWorks环境。这个在论坛上已经有帖子讨论过了,用
pcPentium的BSP。安装windml3.0和windml3_0-cp3。
仅用windml3.0我编不过去,加了CP3 就好了!
安装的时候选FOR TORNADO2.2就可以了!
2、配置WindML
我是在pentium_VESABIOS_RGB565_640x480这个配置上改的。分辨率改为800x600,Pointer选PS/2 style,设备名/POINTER/0。键盘是PC/AT style,设备名/pcConsole/1。注意千万注意有时键盘/KEYBOARD/0---这不行,运行程序后会黑屏!为什么你在SHELL里运行:DEVS 看看有没有/KEYBOARD/0,没有,只有/pcConsole/1。另外把
build Windml objcet build Windml examples 也选上!这样会把文件全编译通过!
其他选项未做改动。保存并重新先CLEAN 再build windml库。
3、修改BSP
在romInit.s文件中加上#include <ugl/driver/graphics/pcbios/romInit.h>
。它必须是include的最后一个头文件。
在config.h的较为开始处加上
#define INCLUDE_WINDML
#define INCLUDE_WINDML_PS2_POINTER
#define INCLUDE_WINDML_PS2_KEYBOARD
重新编译BSP,制作bootrom的
4、配置vxworks
WindML components组件下,包含如下几个部分
WindML devices->input device->PS2 keyboard
->PS2 mouse
WindML devices->graphics device->graphics support(PCI device)
2D layer->complete 2D library
弄好后把D:\Tornado2.2pt\target\lib\objPENTIUMgnuApps\ ugldemo_ugl.o download 下去就可以-> ugldemo出现画面和小人了哈哈!另外要是你是把
D:\Tornado
编译下载的话会告诉你缺少库你在工程的Macros->PRJ_LIBS把库
D:\Tornado
加入就可以,当然也可以在VXWORKS里加具体是在Macros->EXTRA_MODULES里!