文章目錄
概述
本文主要記錄:製作【基於AM4378開發板】的【QNX6.6操作系統的SD卡啓動盤】的操作步驟。
軟硬件環境:
硬件:主芯片AM4378的開發板
軟件:QNX官網下載的AM4378的bsp包:用於編譯生成QNX操作系統文件
QNX官方IED【QNX Momentics IDE】
目的:製作QNX6.6啓動SD卡
SD卡啓動盤共需要兩個文件:
- mlo——系統引導文件,可以看做是類似於Linux操作系統的BootLoader
- qnx-ifs.bin——製作好的QNX操作系統文件
準備材料:
(1)SD卡一張(本例中使用4G內存卡)
(2)任何一款可以對磁盤進行分區的軟件(推薦DiskGenius)
1、官網下載BSP包
官網鏈接:http://www.qnx.com/
BSP包鏈接:https://community.qnx.com/sf/sfmain/do/viewProject/projects.bsp
AM4378 BSP包鏈接:https://community.qnx.com/sf/wiki/do/viewPage/projects.bsp/wiki/TiAm437xGp_evm
備註:官網已經改版,原先BSP包可通過下述步驟找到:
- 官網主頁
- PROFESSIONAL SERVICES
- Developer Community
- BSPs and Drivers
- BSP Directory
- 搜索AM437x即可
2、將BSP包導入到IDE中
2.1 導入BSP步驟
- File
- Import
- 選中Existing Projects Into Workspace,然後next
- 選中Select root directory,單擊右邊的Browse…
- 找到第一步下載的BSP包存放的位置(選中到BSP包的根目錄即可),單擊確定
- 單擊Finish
- 此時,在Project Explorer窗口中可以看到導入的BSP工程了。
2.2 BSP工程目錄描述
目錄 | 含義 |
---|---|
System Builder Files | 裏面有gp_evm.build文件軟連接,指向prebuilt目錄中的gp_evm.build文件 |
image | 編譯BSP工程,會在該目錄下生成【MLO文件】和【ifs-am437x-evm.bin】文件 |
prebuilt | gp_evm.build文件爲【預編譯文件】,工程會顯示一個System Builder Files 目錄,裏面的gp_evm.build,即爲該文件的軟連接,索引到該文件 |
3、使用IDE生成【qnx-ifs.bin】文件
- 在Project Explorer窗口中右鍵BSP工程
- Build Project
- 會在image目錄下生成【ifs-am437x-gp-evm.bin】文件,該文件即【qnx-ifs.bin】文件
- 將【ifs-am437x-gp-evm.bin】拷貝到SD卡中,重命名爲【qnx-ifs.bin】
4、使用IDE生成【MLO】文件
後續逐步驗證後再補充詳細步驟,暫時先使用之前製作好的MLO文件
5、製作SD卡啓動盤
重點:
(1)由於使用IDE編譯出的MLO和qnx-ifs.bin僅僅是一個只讀的qnx系統,所以我們在製作的系統啓動後,需要自己製作新的QNX分區,將分區掛載在某個目錄下,從而新的QNX分區會有讀寫權限。詳細獲取讀寫權限方法建後續章節。
(2)製作時,需要將磁盤分爲兩部分:
- 一部分爲FAT32格式,作爲引導QNX啓動的DOS系統(本例中分配了512M)
- 另一部分不需要建立分區,將分區刪除即可,後面使用fdisk命令對空閒分區重新建立成QNX6分區
5.1 格式化SD卡,創建SD卡分區
(1)使用DiskGenius將4G內存卡所有分區刪除;
(2)新建一個512M分區,FAT32格式,【活動分區!】;
(3)剩餘空間空閒即可,無需新建分區
如下圖:
5.2、拷貝啓動文件到SD卡
將IDE編譯生成的MLO文件和qnx-ifs.bin文件拷貝到SD卡中
5.3、命令行製作QNX6系統
將sd卡裝入開發板,啓動開發板,使用fdisk命令將空閒分區格式化成QNX6分區,並掛載在根目錄下,依次執行下述命令:
# fdisk /dev/hd0 show
# df -h
# fdisk /dev/hd0 add -t 179 -p 100
# mount -e /dev/hd0
# mkqnx6fs /dev/hd0t179
# mount -t qnx6 -o before /dev/hd0t179 /
命令釋義:
命令 | 含義 |
---|---|
fdisk /dev/hd0 add -t 179 -p 100 | 注意:該命令需要內存卡有空閒空間 add:表示增加磁盤分區 -t :分區類型(179表示QNX6) -p :num爲100表示使用剩餘100%空間 |
mount -t qnx6 -o before /dev/hd0t179 / | 掛在到根目錄下,此時對根目錄有讀寫權限,其他目錄仍爲只讀若需要獲取權限,則直接mkdir創建該文件夾即可 |
6、在build文件中增加掛載命令
在build文件的啓動腳本[+script] .script = { … }中增加如下代碼,這樣就無需每次啓動系統後又要重新掛載分區:
#######################################################################
## lsy qnx6 file system mount
#######################################################################
waitfor /dev/hd0
waitfor /dev/hd0t179
mount -t qnx6 -o before /dev/hd0t179 /
7、製作完成
至此,SD卡製作成功。共有兩個分區:
- 512M的FAT32格式的分區用於引導QNX啓動。
- 剩餘空間作爲QNX6系統掛載在引導啓動之後的QNX根目錄下。
附:操作系統讀寫權限獲取方法
由於製作的qnx系統爲只讀系統,如果對某個文件需要獲取讀寫權限,通過以下步驟可實現:
-
進入IDE安裝目錄,找到需要獲取讀寫權限的文件《file》
-
將《file》文件重命名爲任意名字《backup_file》
-
使用IDE編譯生成新的qnx-ifs.bin文件,將該文件拷貝到SD卡中
-
啓動QNX系統
-
使用命令行進入到原《file》文件所在目錄,執行如下命令:
//含義:創建新的file文件,並將備份的backup_file文件內容拷貝到file中。 # touch file # cat backup_file >> file # rm backup_file
-
此時,則對文件file獲取到讀寫權限