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

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統(tǒng) 1749 0

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

<wbr></wbr>

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

<wbr></wbr>

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

<wbr></wbr>

<wbr></wbr>

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

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

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

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

<wbr></wbr>

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

<wbr></wbr>

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

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

做法是在SD卡的啟動分區(qū)里新建一個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>

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

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

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

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

<wbr></wbr>

<wbr></wbr>

<wbr></wbr>

對第一個問題再也沒有辦法后開始想辦法處理第二個問題,有關(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é)們照著樣例修改就可以,過程中需要仔細一點。主要要做的是增加一個beagle_USB_rev_c_turn_on方法,該方法的實現(xiàn)在該段說明的最后部分,注意方法前還有幾個#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項目的images目錄中生成了文件ifs-omap3730-beagle.bin。

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

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

<wbr></wbr>

沒想到uboot又報 Invalid FAT entry 錯誤。(這時我要接近崩潰了。。。。)

<wbr></wbr>

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

于是老老實實從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卡?因為資料提到MLO必須是第一個拷貝到SD卡啟動分區(qū)的)。

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

<wbr></wbr>

上電后相當激動呀!!!!!!!

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

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

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

<wbr></wbr>

最后上圖:

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

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


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

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 亚洲国产午夜电影在线入口 | 黄色免费观看 | 天天操夜夜噜 | 男人的天堂亚洲 | 亚洲一级毛片免费看 | 男女在线网站 | 久久久精品视频免费看 | 日韩三级伦理在线 | 亚洲成人一区二区三区 | 亚洲精品久久久久久无码AV | 99精品视频在线观看免费专区 | 久久久国产一区二区三区 | 日韩精品一区在线 | 亚洲视频在线观看免费 | 日本特黄特色大片免费视频 | 成人免费电影av | 亚洲无线视频 | www.夜夜骑| 亚洲日本va中文字幕线 | 日韩免费大片 | 久久亚洲欧美日韩精品专区 | 欧美搞黄视频 | 人妻熟女久久久久久久 | 美国成人a免费毛片 | h网站国产 | 国产精品九九久久99视频 | 欧美a在线观看 | 手机在线观看你懂得 | 69av在线视频 | 欧美日韩国产精品一区二区 | 成人免费高清 | 国产精品久久久久久久久免费 | 插插插91| 久久久久久久久久综合 | 中日欧洲精品视频在线 | 亚洲精品久久久久久国产精华液 | 日韩欧美一区二区三区免费观看 | 久久6国产| 91短视频网址 | 成人国产精品免费观看视频 | 欧美色性 |