第一次成功地在BeagleBoard上運(yùn)行QNX系統(tǒng)后首先注意到的問題是QNX系統(tǒng)不能夠自動啟動,需要在串口上運(yùn)行裝載ifs文件的命令才能啟動。針對這個(gè)問題,需要研究一下u-boot如何自動裝載系統(tǒng)影像文件。發(fā)現(xiàn)的第二個(gè)問題更嚴(yán)重一些,就是QNX系統(tǒng)在Beag" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

在BeagleBoard上運(yùn)行QNX系統(tǒng)(二)

系統(tǒng) 1669 0

在BeagelBoard上成功運(yùn)行QNX系統(tǒng)后,本以為可以很快開始進(jìn)一步的學(xué)習(xí),沒想到遇到麻煩的問題。又經(jīng)過幾天的努力才把問題弄清楚,下面繼續(xù)記錄折騰過程。

<wbr></wbr>

第一次成功地在BeagleBoard上運(yùn)行QNX系統(tǒng)后首先注意到的問題是QNX系統(tǒng)不能夠自動啟動,需要在串口上運(yùn)行裝載ifs文件的命令才能啟動。針對這個(gè)問題,需要研究一下u-boot如何自動裝載系統(tǒng)影像文件。

<wbr></wbr>

發(fā)現(xiàn)的第二個(gè)問題更嚴(yán)重一些,就是QNX系統(tǒng)在BeagleBoard上啟動后不能成功啟動網(wǎng)絡(luò)接口,無法獲取網(wǎng)絡(luò)地址。如之前的博文提到,QNX Momentics是同過qconn ip進(jìn)行調(diào)試的,如果目標(biāo)板上不能獲取IP地址,就無法進(jìn)行其它程序的調(diào)試。

<wbr></wbr>

<wbr></wbr>

對于第一個(gè)問題的相關(guān)解決方案有三個(gè),都是從網(wǎng)上找到的。

其中一個(gè)解決方案是再u-boot啟動后可以通過u-boot命令設(shè)置配置信息,然后保存配置信息,再次啟動時(shí)u-boot會使用所保存的配置信息。

還有一個(gè)解決方案是u-boot會從一個(gè)叫uEnv.txt的文件中讀取配置信息,可以在uEnv.txt文件中加入裝載信息

另一個(gè)解決方案提到u-boot會運(yùn)行boot.scr文件,可以在boot.scr文件中加入裝載命令。

<wbr></wbr>

第一個(gè)解決方案很快被證實(shí)無效,該方案主要是在u-boot啟動后使用setenv命令設(shè)置配置信息,然后通過saveenv命令保存配置信息。我測試發(fā)現(xiàn)運(yùn)行到saveenv時(shí)BeagleBoard就死機(jī)了。后來查資料發(fā)現(xiàn)BeagleBoard上沒有NAND Flash,運(yùn)行命令 saveenv會導(dǎo)致BeagleBoard掛起。

<wbr></wbr>

第二個(gè)解決方案是從QNX網(wǎng)站上找的:

http://community.qnx.com/sf/go/projects.bsp/discussion.bsp.topc20393

做法是在SD卡的啟動分區(qū)里新建一個(gè)uEnv.txt文件,文件中加入下面代碼:

nandboot=echo Booting QNX ...;fatload mmc 0 0x80100000 bsp-TI-omap3730-Beagle-xm.ifs;go 0x80100000
我測試了一下,測試失敗,我的BeagleBoard上的u-boot啟動后并沒有從uEnv.txt上讀取信息。

<wbr></wbr>

<wbr></wbr>

第二個(gè)解決方案是做一個(gè)boot.scr文件處理,剛開始我很天真地認(rèn)為用個(gè)文本編輯器修改一下Android版本的boot.scr就可以了,測試失敗。后來發(fā)現(xiàn)boot.scr是通過 mkimage命令生成的,下面鏈接有說明。

http://groups.google.com/group/beagleboard/browse_thread/thread/e97fb9895c09a98c

基本做法就是在Linux(我還是使用Ubuntu)上使用mkimage命令把一個(gè)文本文件轉(zhuǎn)換成目標(biāo)系統(tǒng)的boot.scr文件,文本文件中可以加入希望執(zhí)行的命令。

我將生成的boot.scr文件放入SD卡啟動分區(qū)中,u-boot啟動時(shí)確實(shí)運(yùn)行了boot.scr中的命令,但是報(bào)錯(cuò),說我的ifs文件是“ Invalid FAT entry ”,就是說我的ifs文件格式不對。

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

對第一個(gè)問題再也沒有辦法后開始想辦法處理第二個(gè)問題,有關(guān)網(wǎng)絡(luò)接口的問題。

在網(wǎng)上找了一輪以后發(fā)現(xiàn)BeagleBoard Rev C版缺省狀態(tài)下是不對USB HUB加電的,需要修改BSP,網(wǎng)上專門有一篇文章講述,為了同學(xué)們方便,將原文轉(zhuǎn)載如下:

My solution to enable USB Hub which is disabled at boot time in Rev-C board
---------------------------------------------------------------------------
Using Momentics IDE 4.7.0 with the QNX BSP imported as described in "QNX 6.5.0 and 6.4.1 BSPs for BeagleBoard-xM Quick Start Guide" Issue 1 February, 2011


1. Edit the file: /bsp-TI-omap3730-Beagle-xm-src/src/hardware/devb/mmcsd/arm/beagle.le.v7/sim_bs.c
2. Add<wbr> the function (see below) beagle_USB_rev_c_turn_on() to this file, just after the definition of function twl4030_i2c_write(…)<br> 3. You need to call this new function at an appropriate time. So go to the function bs_init(…) and add the new function as shown here:<br><br><wbr><wbr> . . .<br><wbr><wbr> . . .<br><wbr><wbr><wbr> EXISTING CODE...<br><wbr><wbr><wbr> // use GPIO_DEBEN1 reg to enable debouncing on GPIO0 for the beagle<br><wbr><wbr><wbr> if (twl4030_i2c_write(beagle-&gt;fd, 0x49, 0xa7, 0x00))<br><wbr><wbr><wbr> {<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> slogf(_SLOGC_SIM_MMC, _SLOG_ERROR, "BEAGLE MMCSD: unable to enable debouncing");<br><wbr><wbr><wbr><wbr><wbr><wbr><wbr> return MMC_FAILURE;<br><wbr><wbr><wbr> }<br><wbr><wbr> ADD NEW CODE AS BELOW...<br><wbr><wbr><wbr> // Turn on Beagleboard Revision-C USB Hub<br><wbr><wbr><wbr> if ( beagle_USB_rev_c_turn_on(beagle-&gt;fd) == MMC_FAILURE )<br> {<wbr> slogf(_SLOGC_SIM_MMC, _SLOG_ERROR, "OMAP3 MMCSD: fail on beagle_USB_rev_c_turn_on() for USB Hub");<br><wbr><wbr> return MMC_FAILURE;<br> }<br><wbr><wbr> . . .<br><wbr><wbr> . . .<br> 4. Rebuild the BSP as per the instructions in the Quick Start Guide<br> 5. Copy the .ifs file to your SD card as usual.<br> 6. Boot up. A green LED, D14, indicates that power is applied to the HUB circuitry.<br> ------------------------------------------</wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr></wbr>

/* USB Hub Enable Definitions */
/* I2C Addressing */
#define ADDRESS_GROUP_ID3 0x4A
#define LEDEN_PHYSICAL_ADDRESS 0xEE


/* LEDEN Register bit definitions */
#define LEDAON 0x01 /* LEDA Enable */
#define LEDAPWM 0x10 /* LEDA PWM Enable */

/* Parameter: i2c_fd - file handle to i2c */
static int beagle_USB_rev_c_turn_on(int i2c_fd)
{
uint8_t i2c_val;
/* printf("\n\rTurn on USB Hub\n\r"); */
/* get the existing register value that includes Hub control bits */
if ( twl4030_i2c_read( i2c_fd, ADDRESS_GROUP_ID3,LEDEN_PHYSICAL_ADDRESS, &i2c_val) == -1)
return MMC_FAILURE;


/* printf("\n\rExisting Reg value = %d\n\r", i2c_val ); */
/* Set the appropriate bits to enable the Hub */
if ( twl4030_i2c_write( i2c_fd, ADDRESS_GROUP_ID3,LEDEN_PHYSICAL_ADDRESS,i2c_val |LEDAON |LEDAPWM ) == -1)
return MMC_FAILURE;


/* Let's check the updated register value */
/* twl4030_i2c_read(beagle->fd, 0x4A,0xEE, &i2c_val); */
/* printf("\n\r New Reg value = %d\n\r", i2c_val ); */
return MMC_SUCCESS;
}
--------------------------------------------------------------------------

這里提到的主要工作就是修改文件/bsp-TI-omap3730-Beagle-xm-src/src/hardware/devb/mmcsd/arm/beagle.le.v7/sim_bs.c
然后重新編譯QNX系統(tǒng)。

同學(xué)們照著樣例修改就可以,過程中需要仔細(xì)一點(diǎn)。主要要做的是增加一個(gè)beagle_USB_rev_c_turn_on方法,該方法的實(shí)現(xiàn)在該段說明的最后部分,注意方法前還有幾個(gè)#define不要漏掉了。 增加了beagle_USB_rev_c_turn_on方法后就在bs_init方法中增加對方法beagle_USB_rev_c_turn_on的調(diào)用。

<wbr></wbr>

重新編譯后在bsp-TI-omap3730-Beagle-xm-src項(xiàng)目的images目錄中生成了文件ifs-omap3730-beagle.bin。

我將這個(gè)文件拷貝到SD卡的啟動分區(qū)中,啟動BeagleBoard,準(zhǔn)備通過下面的uboot命令啟動QNX:

fatload mmc 0 0x80100000 ifs-omap3730-beagle.bin;go 0x80100000

<wbr></wbr>

沒想到uboot又報(bào) Invalid FAT entry 錯(cuò)誤。(這時(shí)我要接近崩潰了。。。。)

<wbr></wbr>

峰回路轉(zhuǎn)也就是在這里,有資料說老版本的uboot會有“ Invalid FAT entry ”的問題,這時(shí)想到我的MLO和u-boot.bin是從Android系統(tǒng)里拷貝的,可能會是老版本。

于是老老實(shí)實(shí)從QNX官網(wǎng)指定的地方下載了MLO和U-BOOT.BIN,方便大家,鏈接如下:

http://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/Bspdown_ti_omap_3730_beagle

<wbr></wbr>

重新格式化SD卡(為什么要重新格式化SD卡?因?yàn)橘Y料提到MLO必須是第一個(gè)拷貝到SD卡啟動分區(qū)的)。

將新下載的MLO和U-BOOT.BIN拷貝到SD卡啟動分區(qū)上,順便將uEnv.txt文件也拷貝上去了,修改了一下uEnv.txt,指定啟動ifs-omap3730-beagle.bin文件。

<wbr></wbr>

上電后相當(dāng)激動呀!!!!!!!

QNX系統(tǒng)自動啟動,不需要串口輸入uboot命令(解決了第一個(gè)問題)

QNX系統(tǒng)成功獲取IP地址(解決了第二個(gè)問題)

還意外地發(fā)現(xiàn)QNX系統(tǒng)還啟動了一個(gè)OpenGL樣例

<wbr></wbr>

最后上圖:

在BeagleBoard上運(yùn)行QNX系統(tǒng)(二)

在BeagleBoard上運(yùn)行QNX系統(tǒng)(二)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 播放一级片| 亚洲一级在线观看 | www.黄网站| 老司机午夜在线视频免费 | 国产精品一区二区三区久久 | 香蕉视频日本 | 成人国产亚洲欧美成人综合网 | 国产视频一区在线播放 | 亚洲欧美在线观看一区二区 | 国产精品亚洲精品久久成人 | 91久久精品午夜一区二区 | www.久久精品视频 | 91成人午夜精品福利院在线观看 | 亚洲欧美一区二区三区 | 99久久免费精品高清特色大片 | 99在线观看免费 | 国产成人网| 欧美6699在线视频免费 | 国内主播大秀福利视频在线看 | 久久久99视频 | 在线观看中文字幕第一页 | 久久久久久亚洲精品 | 国产成人精品午夜 | 免费欧美在线视频 | 久久依人 | 福利视频免费看 | 天堂网一区二区 | 九九热精品| 色狠狠狠狠综合影视 | 欧美国产成人精品一区二区三区 | 成年免费网站 | 91宅男| 九九视频九九热 | 久久久国产亚洲精品 | 久久永久视频 | 亚洲午夜网 | 亚洲精品高清国产一久久 | 久久国产精品ww | 久久青草91线频免费观看 | 久久国产精品范冰啊 | 亚洲激情视频网 |