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万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章