这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » tonado2.2.1下X86的CF卡启动及WINDML3.0配置过程

共8条 1/1 1 跳转至

tonado2.2.1下X86的CF卡启动及WINDML3.0配置过程

菜鸟
2007-07-18 23:36:08     打赏

tonado2.2.1下X86的CF卡启动及WINDML3.0配置过程

在网上看了好多的好文章,谢谢大家的慷慨!

我说说我的目标机硬件和我怎么修改BSP的吧:

CPU:Pentium M DDRRAM:256M 串:口 1个 网卡:82559

显卡:INTEL852GM

CF卡:128M 显示器 键盘(PS/2),鼠标(PS/2)

CF卡参数: CAPACITY:128 Cyls:980 Head:8 Precomp:0 Lands:979

Sector:32

软件:WINXP,

TORNADO2.2 FOR.PENTIUM + t22-cp1-pentium=TORNADO2.2.1

WINDML3.0 (DISK_ID:TDK-14774-ZC-00)+windml3_0-cp3= WINDML3.0.3

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=1 f=0 u=tr tn=tr"

“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/*包含IDEEIDE(ATA)硬盘驱动*/

#define ATA1_CTRL_TYPE (IDE_LOCAL) /*定义设备为IDE 硬盘*/

#define ATA1_INT_LVL (0x0f) /*定义中断请求号*/

最后说一下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这个参数定义了一个默认值为/ata0a,其它的为空。在INCLUDE_ATA组件的初始化函数里面可以看出,顺序是

DOSFS_NAMES_ATA_PRIMARY_MASTER

DOSFS_NAMES_ATA_PRIMARY_SLAVE

DOSFS_NAMES_ATA_SECONDARY_MASTERDOSFS_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.0windml3_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:\Tornado2.2pt\target\src\ugl\example\demo\ ugldemo.c

编译下载的话会告诉你缺少库你在工程的Macros->PRJ_LIBS把库

D:\Tornado2.2pt\target\lib\pentium\PENTIUM\common\ libwndml.a

加入就可以,当然也可以在VXWORKS里加具体是在Macros->EXTRA_MODULES里!




关键词: tonado2.2.1     启动     WINDML3.0         

菜鸟
2007-07-20 07:16:00     打赏
2楼

这样的帖子怎么没人顶呢,虽然在我的论坛已经顶过了。但是这里看到了还是要在顶!~


菜鸟
2007-08-08 23:16:52     打赏
3楼
顶一个,经验很重要啊

菜鸟
2007-08-08 23:21:21     打赏
4楼
我的是DOC做的启动盘,bios已经有TFFS的驱动了,也在你说的地方出现NVRAM错误,提示,dosFsLib.c 没找到boot vector(好像是这个词),还有media什么的格式不对。

菜鸟
2007-08-10 22:25:03     打赏
5楼
也在你说的地方出现NVRAM错误,提示,dosFsLib.c 没找到boot vector(好像是这个词),还有media什么的格式不对。
DOC我没有用过!除了CF卡我只用过FLASH的芯片!我用的FLASH是在最后一个扇区写入东西作为NVRAM的!看看你程序的NVRAM是怎么定义的!你就知道如何做了!

菜鸟
2007-08-24 18:08:53     打赏
6楼
我最后把nvram屏蔽了,就没事了,重BIOS重启动
随便问下windml3_0-cp3,哪儿有得下?谢谢

菜鸟
2007-08-25 23:36:48     打赏
7楼
windml3_0-cp3风河的网站里面有下载的!
我最后把nvram屏蔽了,就没事了,重BIOS重启动
我最近在PC104上也遇到这问题,CF卡的NVRAM就是不可以用,但是文件系统却可以启动!
我也是把nvram屏蔽了,就没事了!

菜鸟
2007-09-08 16:14:12     打赏
8楼
zinc配置过程?

共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]