在 Ubuntu 下烧写 S32G399a QNX BSP 到 SD 卡、在硬件上启动并配置环境。

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 卡对应的设备名,通常是 sdbsdc

  • 注意: 确认设备名无误,避免写错导致硬盘数据丢失

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-Bootsetenv bootcmd ...配置自动启动 QNX
QNX 配 IPifconfig dwceqos0 inet ...配置网络
挂载 NFSfs-nfs3 ... /opt需要先建好网桥
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

aFakeProgramer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值