文章目录
概述
本文主要记录:制作【基于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获取到读写权限