QNX BSP主要改了这3个部分
QNX BSP 文件系统读写改造原有文件系统全部运行在内存(RAM)中,所有文件操作都是易失性存储:设备重启后数据就丢失,不支持真正的永久读写。
需要修改的内容:
S32G3 原厂默认 QNX BSP 里,配置文件 images/s32g399a-rdb3.build 内嵌脚本.storage-server.sh(第 243 行),该脚本通过挂载物理磁盘分区作为根文件系统,开启持久化存储。
关键挂载命令(第 295 行):mount -t qnx6 /dev/sd0t179 /作用:让文件读写数据掉电 / 重启后依然保留。
磁盘分区硬性要求:
存储设备需要提前划分两个固定类型分区才能实现上述功能:
- 引导分区:分区类型 ID = 12(十六进制 0x0C)
- QNX 数据分区:分区类型 ID = 179
需遵循 QNX 官方文档规范,额外新增一个分区,参考文档链接:
Prepare a bootable microSD card card
s32g399a-rdb3.build
###########################################...
################################################################################################
## Storage script
################################################################################################
[perms=0744] .storage-server.sh = {
#!/bin/ksh
## Check if the /var/run directory exists
if [ ! -d /var/run ]
then
## Check if the optional persistent storage exists
x=1
while [ $x -le 5 ]
do
if [ -b /dev/sd0t179 ]
then
## Use the persistent storage for network service
mount -t qnx6 /dev/sd0t179 /tmp-mnt
if [ ! -d /tmp-mnt/var/run ]
then
mkdir -p /tmp-mnt/var/run
chmod 755 /tmp-mnt/var
chmod 755 /tmp-mnt/var/run
fi
if [ ! -d /tmp-mnt/var/db ]
then
mkdir -p /tmp-mnt/var/db
chmod 755 /tmp-mnt/var
chmod 755 /tmp-mnt/var/db
fi
if [ ! -d /tmp-mnt/etc/ssh ]
then
mkdir -p /tmp-mnt/etc/ssh
chmod 755 /tmp-mnt/etc
chmod 755 /tmp-mnt/etc/ssh
fi
if [ ! -d /tmp-mnt/root ]
then
mkdir -m 700 /tmp-mnt/root
fi
if [ ! -d /tmp-mnt/home/qnxuser ]
then
mkdir -p /tmp-mnt/home/qnxuser
chmod 755 /tmp-mnt/home
chmod 755 /tmp-mnt/home/qnxuser
chown qnxuser:qnxuser /tmp-mnt/home/qnxuser
fi
umount /tmp-mnt
sync
echo "Mounting /dev/sd0t179 on / ..."
mount -t qnx6 /dev/sd0t179 /
break
fi
x=$(( $x + 1 ))
sleep 1;
done
fi
if [ ! -d /var/run ]
then
## Use devf-ram file system for dhcpcd service
echo "Starting devf-ram filesystem ..."
devf-ram -i 9,0 -s0,16m
waitfor /dev/fs9p0
flashctl -p /dev/fs9p0 -e -f -n /var -m
mkdir -m 755 /var/run
mkdir -m 755 /var/db
fi
}
s32g399a-rdb3.build x LIU Xiang (ETAS-ECM/XSF-CN)
11:10
LIU Xiang (ETAS-ECM/XSF-CN)
一、在 Ubuntu 系统中烧写 BSP 到 SD 卡
1. 确认 SD 卡设备名
bash
lsblk
-
查看 SD 卡对应的设备名,通常是
sdb或sdc -
注意: 确认设备名无误,避免写错导致硬盘数据丢失
2. 烧写镜像(修改对应的设备名)
bash
sudo dd if=qnx-s32g399ardb3-bsp41.0.img of=/dev/sdb bs=4M status=progress conv=fsync
-
if=:输入文件(BSP 镜像) -
of=:输出设备(SD 卡,如/dev/sdb,不要带分区号) -
bs=4M:块大小 4MB -
status=progress:显示烧写进度 -
conv=fsync:确保数据完全写入
二、启动硬件并配置 U-Boot 环境变量
1. 插入 SD 卡到硬件
2. 通过串口登录
-
波特率:115200
3. 进入 U-Boot 命令行(按回车键中断启动)
4. 设置 U-Boot 环境变量
bash
setenv bootqnx 'run loadfdt; setenv image ifs-s32g399a-rdb3.ui ; run loadimage ; bootm ${loadaddr} - ${fdt_addr}'
setenv bootcmd 'run bootqnx'
saveenv
-
输出示例:
text
Saving Environment to MMC... Writing to MMC(0)... OK
5. 重启板卡
bash
reset
-
重启后会看到类似输出:
resetting ... NOTICE: Reset status: Destructive Reset (RUN) NOTICE: BL2: v2.10.0 (release):bsp41.0_rc7-2.10 NOTICE: BL2: Built : 09:32:10, May 27 2024 NOTICE: BL2: Booting BL31
三、进入 QNX 系统后的网络配置
1. 设置 IP 地址
-
网卡接口名:
dwceqos0 -
示例 IP:
192.168.56.60 -
子网掩码:
255.255.255.0
bash
ifconfig dwceqos0 inet 192.168.56.60 netmask 255.255.255.0 up
2. 挂载 NFS 共享目录
前提: 需要先在主机端按照文档配置好网桥
bash
fs-nfs3 -v 192.168.56.2:/var/etas/vrte/export/60 /opt
-
fs-nfs3:NFS v3 挂载命令 -
-v:详细模式 -
192.168.56.2:NFS 服务器 IP -
/var/etas/vrte/export/60:服务器共享目录 -
/opt:本地挂载点
四、笔记要点总结
| 步骤 | 关键命令 | 说明 |
|---|---|---|
| 查看 SD 卡 | lsblk | 确认是 sdb 还是 sdc |
| 烧写镜像 | dd if=... of=/dev/sdb ... | 注意 of 是设备,不是分区 |
| 串口登录 | 波特率 115200 | 使用 minicom / putty 等 |
| 设置 U-Boot | setenv bootcmd ... | 配置自动启动 QNX |
| QNX 配 IP | ifconfig dwceqos0 inet ... | 配置网络 |
| 挂载 NFS | fs-nfs3 ... /opt | 需要先建好网桥 |
432

被折叠的 条评论
为什么被折叠?



