急急求助!!! 关于系统image 运行不稳定的问题

先谢谢wsforever xtang各位高手的指点

紧急向大家求教如题的问题,具体来说呢:我做了一个image用在pc104机器上。存储介质为sandisk 256MB CF card. 但是这个image 运行的非常不稳定,尤其是在我拿着机子出去做实验的时候体现的十分明显,现场有没有显示器,总是无功而返。复查了几遍,发现image 总是停顿在如下的两个地方:
1。verifying DMI pool data…
或者,
2。 (顺利跳过上述语句后,停在)starting io-net…
开始我认为是带电插拔显示器的问题,后来发现好像无关,因为即使这么做,image也有可能顺利运行。

我也看了咱们网站和 openqnx的一些帖子,知道第一个问题可能“bios 和 fdisk 参数不同“ 所导致。 但是我最不明白的是: 问什么boot过程有时行有时不行呢?这不是说有时检测到的参数是一致的吗?停在第二处我也不清楚为什么。

已经搞了好长时间,还没什么结果,希望xtang wsforever等高手们帮忙分析一下我该怎么做,才能彻底根除这个问题,显著提高image运行的稳定性。
非常感谢!!!

对不起,我这么说大家可能不清楚,starting io-net 是我用display msg显示出来的,至于第一个停顿,可能是一进入检测就出的问题,image里的任何信息都没有显示出来,我在下面把我的image 贴出来,请xtang wsforever comquter等高手们指点一下
谢谢

我的image 如下 (也算给其他的哥们个参考)



\

[+compress]
[virtual=x86,bios] .bootstrap = {
startup-bios -Nmachine-name
PATH=/proc/boot:/x86/bin LD_LIBRARY_PATH=/proc/boot:/dev/shmem:/x86/lib:/x86/dll procnto
}
[+script] .script = {

Start up some consoles

devc-con -n1 &
reopen /dev/con1

display_msg Welcome to Neutrino on an UAV Heli System …

Start the pci server

display_msg "start sedres pci-bios "
seedres
pci-bios &
waitfor /dev/pci

Start up the CompactFlash Disk drivers

display_msg “auto mount CF card hd0t77…”
devb-eide blk automount=hd0t77:/ eide nobmstr &

Wait for th uav/bin for the rest of the commands (up to 200 secs)

display_msg “waitfor /x86/bin…”
waitfor /x86/bin 10

#Start up TCP/IP and QNET
display_msg “Starting io-net…”
io-net -d ns83815 -p tcpip -p qnet &
waitfor /dev/io-net/en0 60
waitfor /dev/socket/2 60

display_msg “Congfiguing Network…”
ifconfig en0 172.20.73.194 netmask 255.255.255.0
route add default 172.20.73.1

Start some common servers

display_msg “some drivers , especially devc-ser8250, starts…”
qconn &
pipe &
mqueue &
devc-pty &
devc-ser8250 -b 57600 3f8,4 -b 115200 2f8,3 -b 115200 300,9 -b 57600 308,10 -b 115200 310,9 -b 57600 318,10 &

Start a debug server for debugging programs

display_msg “Start Debug agent in Ser4…”
waitfor /dev/ser4
[+session] pdebug /dev/ser4 &

These env variables inherited by all the programs which follow

display_msg “nto & qansi…”
SYSNAME=nto
TERM=qansi

Start the main shell

reopen /dev/con1
display_msg “start main shell…”
[+session] sh &

Start the test pgm

display_msg “prepare run hello”

/x86/Pgm/hello

display_msg “sleep 60 secs for NAV420…”
sleep 60
display_msg “start the uav pgm”
/uav/uav

Start terminator

display_msg “UAV pgm ends, now terminator starts”

/x86/Pgm/terminator

Finish and shutdown

display_msg “before shutdown sleep 30…”

sleep(30)

shutdown }

[dperms=0777 uid=0 gid=0]
[type=link] /tmp = /dev/shmem
[type=link] /usr/lib/ldqnx.so.2 = /proc/boot/libc.so
[type=link] /bin = x86/bin
[type=link] /lib = x86/lib
[type=link] /dll = x86/dll
[type=link] /sys = x86/sys
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libc.so = /x86/lib/libc.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/fpemu.so.2 = /x86/lib/dll/fpemu.so.2
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libsocket.so = /x86/lib/libsocket.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libcam.so = /x86/lib/libcam.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/io-blk.so = /x86/lib/dll/io-blk.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/cam-disk.so = /x86/lib/dll/cam-disk.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/fs-qnx4.so = /x86/lib/dll/fs-qnx4.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/cam-cdrom.so = /x86/lib/dll/cam-cdrom.so
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/fs-cd.so = /x86/lib/dll/fs-cd.so
[gid=0 uid=0 perms=777 data=copy code=uip] /proc/boot/devc-con = /x86/sbin/devc-con
[gid=0 uid=0 perms=777 data=copy code=uip] /proc/boot/devb-eide = /x86/sbin/devb-eide
[gid=0 uid=0 perms=777 data=copy code=uip] /proc/boot/pci-bios = /x86/sbin/pci-bios
[gid=0 uid=0 perms=777 data=copy code=uip] /proc/boot/seedres = /x86/sbin/seedres
[gid=0 uid=0 perms=777 data=copy code=uip] /proc/boot/fs-nfs2 = /x86/usr/sbin/fs-nfs2
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libsocket.so.2 = /x86/lib/libsocket.so.2
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libc.so.2 = /x86/lib/libc.so.2
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/libcam.so.2 = /x86/lib/libcam.so.2
[gid=0 uid=0 perms=777 data=uip code=uip] /proc/boot/npm-ttcpip.so = /x86/lib/dll/npm-ttcpip.so

  1. 不一定跟BIOS/FDISK有关,我觉得是因为你移动机器后,有什么硬件松动,接触不好了。
  2. 你的io-net行后第一行是 waitfor /dev/io-net/en0,如果因为什么原因,侦测不到网卡的话,你的waitfor 要等60秒才能往下执行。根据1),我猜会不会你的网卡松动了。

唐先生:
谢谢您的指点,按照你所说的,我整体检查了机器 网卡 并去掉了60秒的限制, 很不幸 情况没有什么好转,不过我发现了些新的毛病,您帮忙给分析一下:
1。我发现有几个设备的IRQ 是相同的, usb device / multimedia / network controller 的IRQ 都是11, acpi controller / display controller 的IRQ 都是9, 我不知道是不是因为network controller的IRQ 和其他的硬件冲突才会导致我的image运行到starting io-net时就停止了,但是即使真的是这样,为什么有的时候就可以顺利跳过去呢?
针对冲突的问题,我改动了一点儿,在cmos里屏蔽了声卡/usb/LPT和 acpi,现在的iRQ列表仅有IDE-14 / network-11/ display-12, 不知道是不是这个原因导致了总是让image 停在verifying data 和 staring io-net 处,还有就是屏蔽了acpi function 会导致什么副作用吗?
2。 另一个问题是不知为什么,我用键盘连接到pc104输入时,当我的程序运行中,总是要按两次才可以键入一个字符,而退出程序后,就正常了,我猜可能是image中 devc-con的重复问题,但不知在哪里出的错误,请xtang先生帮忙指点一下。

不好意思,多次麻烦你和大家,由于最近仍要测试,挺急的,谢谢你们的帮助

verifying data 应该是BIOS的输出,还没有到系统启动。
如果 start io-net … 后停住了,你可以试试把整行都comment掉,然后手动在sh里启动 io-net试试。或者在每一行间加display_msg,看看到底是哪一行没有走过。
要按两次键,是因为你有两个程序在读输入,你自已的程序,和sh。把它们放到不同的console里试试。

      devc-con -n 2
      ......
      reopen /dev/con2
      [+session] sh &
      ......
      reopen /dev/con1
      /uav/uav

这样,你可以用ctrl-alt-1 和 ctrl-alt-2 在你的程序和sh间切换。

CF卡启动不正常很可能是BIOS里面CF卡的类型设置不对,不要设置成LBA,最好设置成AUTO