还是CF的问题,xtang帮忙看看吧

devb-eide &
waitfor /dev/hd1 10

#erase flash Partition
#echo “Erasing Flash Partitions”
fdisk /dev/hd1 delete -a

#display new Partitions in /dev
mount -e /dev/hd1

fdisk /dev/hd1 add -s1 -t 77 -b -p 100

fdisk /dev/hd1 loader
fdisk /dev/hd1 show

#display new partions in /dev so should not slay devb-eide
mount -e /dev/hd1

#echo “Initializing Flash Partitions”
dinit -h -q /dev/hd1t77

#display new partions in /dev so should not slay devb-eide
mount -e /dev/hd1

#copy programming boot image
#echo “Installing ifs boot loader”
mount -t qnx4 /dev/hd1t77 /hd1t77

cp /srtm/aa.ifs /hd1t77/.boot


利用上述方式加载的CF分区为什么会出现有时能显示,有时看不到的现象
利用df命令的结果是:(hd0设备是DOC)
情形一:
/dev/hd0 15920 14496 1424 92% /
/dev/hd1t77 3931199 5929 3925270 1% /hd1t77/
/dev/hd1 3931200 3931200 0 100%

情形二:
/dev/hd0 15920 14496 1424 92% /
/dev/hd1 0 0 0 100%

版上各位帮分析分析,多谢了!

你是在同一台机器上做 fdisk,然后起动的吗?

还是在一台机器上做fdisk等初始化,然后把卡拿去别的机器用?

你说有时看得见、有时看不见,这是在不同的机器上吗?还是在同一台机器上有时看见有时看不见?

谢谢,xtang。是在同一PC104的开发板(有DOC和CF卡)上。我在BIOS里设置的驱动顺序是SCSI(DOC设备),C(CF设备)。利用在DOC上的QNX系统去操作CF卡。
CF有时加载成功,有时不成功。是通过shutdown或者掉电重启启动QNX系统后通过df命令去查询的。请问是我上述的格式化CF命令有问题吗?

你的初始化应该没什么问题,如果初始化、使用都是在同一机器上,我还想不出来别的有什么问题。你能肯定硬件上(CF卡本身)没有问题吗?

谢谢xtang.经检查应该是我注释了命令
dinit -h -q /dev/hd1t77的原因。

利用如下去初始化CF就不存在CF卡偶尔不现在的现象了
devb-eide &

#display new Partitions in /dev
mount -e /dev/hd1

#echo “Initializing Flash Partitions”
dinit -h -q /dev/hd1t77

#display new partions in /dev so should not slay devb-eide
mount -e /dev/hd1

#copy programming boot image
#echo “Installing ifs boot loader”
mount -t qnx4 /dev/hd1t77 /hd1t77

但是当我利用bsp-x86bios修改制作的启动镜像aa.ifs拷贝到hd1t77/.boot下后
(cp aa.ifs /hd1t77/.boot)再重启开发板试图从CF卡启动QNX 6.4的镜像时又出现如下问题:

利用CF启动镜像引导起来只在屏幕上显示输出:
;
(按键盘键在屏幕上输出的都是;;;;;;:wink:

修改后的bsp-x86bios.bsh文件内容如下:

Programs require the runtime linker (ldqnx.so) to be at a fixed location

procmgr_symlink …/…/proc/boot/libc.so.3 /usr/lib/ldqnx.so.2

Start up some consoles

devc-con -n4 &
reopen /dev/con1

display_msg Welcome to QNX Neutrino 6.4.0 on PC CompBIOS system

slogger &

Start the pci server

seedres
pci-bios &
waitfor /dev/pci

Some common servers

pipe &
mqueue &
devc-ser8250 -e &
devc-pty &

\

Start a debug server for debugging programs

waitfor /dev/ser1
[+session] pdebug /dev/ser1 &


display_msg Starting DOC Driver …
devb-doc blk automount=hd0t77:/ &

#mount one QNX 4 filesystem as /
mount /dev/hd0t77 /


display_msg Starting CompactFLASH Driver …
devb-eide &

display_msg new parttions in /dev so should no slay devb-eide
mount -e /dev/hd1

dinit -h -q /dev/hd1t77
mount -e /dev/hd1

display_msg Installing ifs boot loader
mount -t qnx4 /dev/hd1t77 /hd1t77


display_msg Starting Ethernet driver …
io-pkt-v4-hc -d rtl ioport=0x80004000 -p tcpip &
waitfor /dev/socket 10
ifconfig en0 192.192.1.4
route add 192.192.1.1

\

These env variables inherited by all the programs which follow

SYSNAME=nto
TERM=qansi

Start some extra shells on other consoles

reopen /dev/con2
[+session] sh &
reopen /dev/con3
[+session] sh &

Start a high priority shell just in case…

reopen /dev/con4
[pri=25 +session] sh &

Start the main shell

reopen /dev/con1
[+session] sh

[+session] login -p

请问是bsh文件里哪里有问题呢,请xtang指教。
(第一次制作启动镜像,看不错哪里有问题 :blush:

#mount one QNX 4 filesystem as /
mount /dev/hd0t77 /

这个似乎可以不要。上面的automount语句应该就可以了。

然后为什么你的启动文件里有一串 dinit -h … ? 每次开机都要初始化硬盘?

还有,你开机只看到;号吗?连那个什么 "Welcome to QNX Neutrino 6.4.0 on PC CompBIOS system"也没有看到吗?

dinit -h -q /dev/hd1t77 是我用DOC上的系统镜像启动去初始化CF时用的,发现出去注释掉这条命令的话,CF就是加载不成功。
所以我在做CF卡的启动镜像时也加载了这句。
CF的启动镜像起来时就只出现;呀,连Welcome to QNX Neutrino 6.4.0 on an PC compatible BIOS system都没有。所以搞得不知道问题出在哪里了呢

首先谢谢xtang.
补充一点:开发板上DOC的QNX启动镜像是6.2的,所以初始化CF用的所以指令都是6.2的,相应生成的文件系统也是qnx4。但是copy到CF上的启动镜像aa.ifs是我用qnx 6.4.0制作的,做镜像是也是用qnx4文件系统的。不知道这样做会不会有问题?!请xtang指教。
还有按照你上面所说的意思注释掉了相关命令,发现CF启动镜像起来的现象还是一样的。

我想实现的目标是在DOC上跑qnx 6.4系统镜像。
开发板上现有的资源是DOC, CF卡以及能启动的DOC上的qnx 6.2的镜像。由于手上没有其他启动盘,所以我的思路是:

  1. 利用DOC上的qnx 6.2的启动镜像,去初始化CF卡;
  2. 制作CF卡上的qnx 6.4启动镜像;
    3.利用CF的qnx 6.4启动镜像再去操作DOC,重新制作DOC的qnx 6.4启动镜像;
    不知道这样的思路有没问题 :question: 请xtang指教。

xtang你好!
折腾了几次我想CF卡在Qnx 6.2的启动镜像的初始化下是正常了。然后我利用QNX 6.4 BSP包制作的启动镜像加载到CF卡上后起来的现象如下:

His Esc for .altboot…

…Unable to find boot process 0 (inode 136608905)

这是不是说明我上面的设想不行呢?!就是在qnx 6.2的启动镜像下去格式化CF卡,再去加载QNX 6.4的启动镜像到CF这种方式是行不通的呢?!请指教。

xtang你好!
我发现利用qnx 6.3.2制作的CF卡启动镜像就能正常启动,顺利跑到boot script。

修改qnx 6.4.0的buildfile发现启动镜像的压缩格式不一样了,采用几种压缩格式的情形如下:
1). Compressed: No compression
Hit Esc for .altboot… unable to find boot process 0 (inode 136608905)

  1. Compressed: Zlib或者LZO
    Hit Esc for .altboot…
    unsupported compression type

  2. Compressed: UCL
    Hit Esc for .altboot…
    (无其他输出信息)

这是不是说明先利用qnx 6.2或者qnx 6.3启动镜像盘去制作qnx 6.4的启动镜像是行不通的呢?还有其他什么办法吗? 请指教。

:slight_smile: 谢谢xtang以版上各位的关注。结个贴,希望版上活跃些。
关注如何从6.2升级到6.4的启动镜像这个问题是我的思路有问题。
其实只要用VMWare装QNX6.4的开发环境,再用读卡器将CF(USB设备)挂载到6.4系统里去初始化CF,制作启动镜像就可以了。(即不需要直接先开发板上制作启动镜像)。当然这也只是一种解决思路。

因为讨论问题的两位都没有留下联系方式
所以我还是没太看懂
这个到底要怎么做呢
怎么镜像过去啊
我也需要做跟这差不多的工作的
望指教