在BeagelBoard上成功运行QNX系统后,本以为可以很快开始进一步的学习,没想到遇到麻烦的问题。又经过几天的努力才把问题弄清楚,下面继续记录折腾过程。
第一次成功地在BeagleBoard上运行QNX系统后首先注意到的问题是QNX系统不能够自动启动,需要在串口上运行装载ifs文件的命令才能启动。针对这个问题,需要研究一下u-boot如何自动装载系统影像文件。
发现的第二个问题更严重一些,就是QNX系统在BeagleBoard上启动后不能成功启动网络接口,无法获取网络地址。如之前的博文提到,QNX Momentics是同过qconn ip进行调试的,如果目标板上不能获取IP地址,就无法进行其它程序的调试。
对于第一个问题的相关解决方案有三个,都是从网上找到的。
其中一个解决方案是再u-boot启动后可以通过u-boot命令设置配置信息,然后保存配置信息,再次启动时u-boot会使用所保存的配置信息。
还有一个解决方案是u-boot会从一个叫uEnv.txt的文件中读取配置信息,可以在uEnv.txt文件中加入装载信息
另一个解决方案提到u-boot会运行boot.scr文件,可以在boot.scr文件中加入装载命令。
第一个解决方案很快被证实无效,该方案主要是在u-boot启动后使用setenv命令设置配置信息,然后通过saveenv命令保存配置信息。我测试发现运行到saveenv时BeagleBoard就死机了。后来查资料发现BeagleBoard上没有NAND Flash,运行命令saveenv会导致BeagleBoard挂起。
第二个解决方案是从QNX网站上找的:
http://community.qnx.com/sf/go/projects.bsp/discussion.bsp.topc20393
做法是在SD卡的启动分区里新建一个uEnv.txt文件,文件中加入下面代码:
nandboot=echo Booting QNX ...;fatload mmc 0 0x80100000 bsp-TI-omap3730-Beagle-xm.ifs;go 0x80100000
我测试了一下,