在BeagleBoard上執行QNX系統(一)

2021-08-26 04:41:46 字數 3158 閱讀 9757

折騰了好幾天,終於成功在beagleboard上執行qnx系統,如果說在beagleboard上執行android費了一些手腳的話,在beagleboard上執行qnx可以說是費盡周折。秉承本部落格的主旨,將折騰過程記錄下來,供各位同學參考,以後可以少繞一些彎子。

1. 首先要將啟動的sd卡進行分割槽和格式化,讓其中乙個分割槽成為啟動分割槽。

2. beagleboard提供了mlo和u-boot.bin檔案,將他們拷貝到sd卡的啟動分割槽後,beagleboard啟動時會啟動mlo程式,然後mlo程式會呼叫u-boot.bin。其中u-boot.bin可以用來裝載qnx系統映象。

4. 將生成的qnx系統映象檔案拷貝到sd卡啟動分割槽中,u-boot.bin啟動後會裝載qnx系統映象。

有了基本思路就開始開幹,第一步是對sd卡進行分割槽和格式化。

為了保持之前的wince系統和android系統,我另外找了乙個2g的卡,又是幾十塊錢出去了。。。。

網上有一些資料關於如何格式化sd卡的,有windows作業系統的方法,也有linux系統的方法。反正我的ubuntu已經安裝好了,而且linux系統上的方法說的詳細一點,就採用了linux系統上的方法。

將sd卡裝如讀卡器,將讀卡器插入pc上,從vmware選單上設定在ubuntu虛擬機器上使用usb裝置。

於是在我的ubuntu上就可以看到自動mount出來的sd卡內容了。

關掉自動顯示的sd卡內容視窗(主要是擔心一會umount sd卡的時候會出問題)

啟動ubuntu的terminal視窗,開始在命令列介面下格式化sd卡。

a)通過df命令檢視sd卡的裝置名,df的輸出裡有類似/dev/sdb1 .... /media/的一行,表示sd卡的裝置名是sdb,下面統一使用sdx作為sd卡的裝置名,如果你的情況有所不同,請作相應調整,如將umount /dev/sdx1 調整成umount /dev/sdb1

b) 通過umount命令釋放sbd: umount /dev/sdx1

c) 通過以下命令清除sdb的內容,如果遇到許可權問題,請使用sudo,或者直接設定root的密碼後su 到root上執行:

dd if=/dev/zero of=/dev/sdx bs=1m count=1

d)啟動fdisk:

fdisk /dev/sdx

c) 在fdisk介面下先通過命令p檢視一下情況,如果c)步驟完成的話,顯示出來的應該只用磁碟資訊,沒有分割槽資訊。在我參考的文件中建議通過磁碟資訊計算一下分割槽時分多少柱面,計算方法是位元組總量除以255再除以63再除以512,我自己用的是2g的卡,計算結果和他的相同,就按他的結果(239)做了。

command (m for help): p

disk /dev/sdx: 1973 mb, 1973420032 bytes

d)通過x命令進入高階模式:

command (m for help): x

e)通過h命令設定head數量,通過s命令設定setor數量,通過c命令設定cylinder數量,這裡的cylinder(柱面)使用的值就是上面算出來的值。其中的255,63就是上一步的除數。

expert command (m for help): h

number of heads (1-256, default 4): 255

expert command (m for help): s

number of sectors (1-63, default 62): 63

warning: setting sector offset for dos compatiblity

expert command (m for help): c

number of cylinders (1-1048576, default 1011): 239

f)通過r命令回到普通模式,使用n命令建立分割槽:

expert command (m for help): r

command (m for help): n

command action

e extended

p primary partition (1-4) p

partition number (1-4): 1

first cylinder (1-15, default 1): 1

last cylinder or +size or +sizem or +sizek (1-15, default 15): 15

g)讓分割槽成為啟動分割槽:

command (m for help): a partition number (1-4): 1

h)通過t命令設定分割槽為fat32格式的分割槽:

command (m for help): t

selected partition 1 hex code (type l to list codes): c

changed system type of partition 1 to c (w95 fat32 (lba))

i)通過p命令確認分割槽情況:

command (m for help): p

disk /dev/sdx: 1973 mb, 1973420032 bytes 255 heads, 63 sectors/track, 239 cylinders units = cylinders of 16065 * 512 = 8225280 bytes disk identifier: 0xa2b8daf8 device boot start end blocks id system /dev/sdx1 * 1 15 120456 c w95 fat32 (lba)

j)通過w命令寫入分割槽資訊:

command (m for help): w

the partition table has been altered! calling ioctl() t re-read partition table.

我繼續記錄我錯誤的做法,雖然是錯誤的,但是還是成功啟動qnx了。

將剛格式化得分割槽mount進來,拷貝mlo程式和u-boot.bin程式,注意一定要第乙個拷貝mlo程式,保證它在0磁軌上,beagleboard才能啟動它:

mount /dev/sdx1 /mnt

cp mlo /mnt cp u-boot.bin /mnt

umount /dev/sdx1

bits: 8

stop bits: 1

parity: none

在Linux上執行C

眾所周知,c 是microsoft推出的.net語言,只能在.net平台上執行,例如win 9x me nt 2000 xp和win ce之類的作業系統。但是,現在卻有了乙個叫做mono的專案,它的目標就是把.net及其程式語言移植到非windows的平台上。現在,c 是唯一被移植到非windows...

在Linux上執行C

眾所周知,c 是microsoft推出的.net語言,只能在.net平台上執行,例如win 9x me nt 2000 xp和win ce之類的作業系統。但是,現在卻有了乙個叫做mono的專案,它的目標就是把.net及其程式語言移植到非windows的平台上。現在,c 是唯一被移植到非windows...

在Nginx上執行Ruby on Rails

安裝ruby export path var lib gems 1.8 bin echo export path var lib gems 1.8 bin etc bash.bashrc aptitude install ruby rubygems vim ruby rub y dev libzli...