QNX6 SD卡啓動盤製作步驟

概述

本文主要記錄:製作【基於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獲取到讀寫權限

發佈了64 篇原創文章 · 獲贊 93 · 訪問量 12萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章