前言:
NXP 官方网站会不定期的更新S32V234 的 BSP 和 VSDK 的版本,而客户也会持续更新最新的版本,所以经常因为新版本和版本的差异导致一些问题,
因此在 NXP 推送了新的 BSP 和 VSDK 版本之后,我们需要及时的对新版本进行编译和调试,以便更早的排查问题,解决问题,帮助客户提升调试效率。
本文是基于 NXP 的官方 Demo 板 EVB2 进行 BSP23 和 VSDK1.6 这个大版本的调试,同时也适用于 WPI 的 Eagle Eye 。
1. 下载和编译 BSP23
(1)下载交叉编译器 。
sudo xz -d gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.xz |
sudo tar -xvf gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar |
(2)下载 & 编译 uboot 。
sudo git clone https://source.codeaurora.org/external/autobsps32/u-boot |
cd u-boot |
git checkout -b bsp23_uboot v2018.07_bsp23.0 |
安装编译 uboot 需要的工具。
sudo apt install flex bison |
编译 uboot 。
sudo make ARCH=aarch64 CROSS_COMPILE=/home/stark/S32V/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- s32v234evb_defconfig |
sudo make CROSS_COMPILE=/home/stark/S32V/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- |
(3)下载 & 编译 kernel。
sudo git clone https://source.codeaurora.org/external/autobsps32/linux |
cd linux |
git checkout -b bsp23_linux v4.19.59_bsp23.0 |
注意:这里需要先打个补丁,否则 最后编译出来的 oal_driver.ko 会无法加载,补丁位置是 /home/stark/VisionSDK_S32V2_RTM_1_6_0/s32v234_sdk/
os/linux/0001-s32v234-dts-Add-VSDK-specific-configuration.patch ,拷贝到 linux 源码目录下,使用命令打补丁。
sudo patch -p1 < 0001-s32v234-dts-Add-VSDK-specific-configuration.patch |
sudo make ARCH=arm64 CROSS_COMPILE=/home/stark/S32V/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- s32v234_defconfig |
sudo make ARCH=arm64 CROSS_COMPILE=/home/stark/S32V/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- |
2. 安装 VSDK
(1)安装 Linux 版本的 VSDK 过程中需要记住点开如下链接获取 “License Keys”,
点进链接之后选择如下圈出来的版本,
再选择 “License Keys”,
在点开的页面中记住 Actication Code,
在安装到 36% 的时候会安装 APU Compiler,
中间有一次需要输入密码,需要留意一下,填入上面记住的 Actication Code 即可,之后便可一路 Next 顺利安装。
3. 编译模块驱动
(1)安装好了之后,编译 ko 驱动,并拷贝到 build_ko 目录中,
注意:
① 编译 ko 需要添加 sudo 执行脚本,否则 insmod 时无权限。
② 编译 oal_driver.ko 需要确认添加了 KERNEL_DIR 。
(2)请参考如下脚本进行编译:
export ARCH=arm64 |
export CROSS_COMPILE=aarch64-linux-gnu- |
export LINUX_S32V234_DIR=/home/stark/S32V/bsp23/linux |
export PATH=$PATH:/home/stark/S32V/gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu/bin |
export SDK_DIR=/home/stark/VisionSDK_S32V2_RTM_1_6_0/s32v234_sdk |
export MOD_PWD=$PWD |
export KERNEL_DIR=/home/stark/S32V/bsp23/linux |
cd $SDK_DIR/3rdparty/oal/libs/kernel/linux-write/build-linux-kernel make clean & make |
sudo cp $SDK_DIR/3rdparty/oal/libs/kernel/linux-write/build-linux-kernel/liboal_kernel.a \ $SDK_DIR/3rdparty/oal/libs/kernel/linux-write/build-linux-kernel/build-v234ce-gnu-linux-d/ |
cd $SDK_DIR/3rdparty/oal/libs/kernel/driver/build-linux-kernel make clean & make |
cd $SDK_DIR/libs/apex/drivers/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/cam_generic/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/csi/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/fdma/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/h264dec/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/h264enc/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/jpegdec/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/sequencer/kernel/build-v234ce-gnu-linux-d make clean & make |
cd $SDK_DIR/libs/isp/viu/kernel/build-v234ce-gnu-linux-d make clean & make |
sudo cp $SDK_DIR/3rdparty/oal/libs/kernel/driver/build-linux-kernel/oal_driver.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/apex/drivers/kernel/build-v234ce-gnu-linux-d/apex.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/csi/kernel/build-v234ce-gnu-linux-d/csi.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/cam_generic/kernel/build-v234ce-gnu-linux-d/cam.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/sequencer/kernel/build-v234ce-gnu-linux-d/seq.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/fdma/kernel/build-v234ce-gnu-linux-d/fdma.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/h264enc/kernel/build-v234ce-gnu-linux-d/h264enc.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/h264dec/kernel/build-v234ce-gnu-linux-d/h264dcd.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/jpegdec/kernel/build-v234ce-gnu-linux-d/jpegdcd.ko $MOD_PWD/build_ko |
sudo cp $SDK_DIR/libs/isp/viu/kernel/build-v234ce-gnu-linux-d/viulite.ko $MOD_PWD/build_ko |
(3)编译得到
4. 制作 SD 卡启动盘
(1)先使用脚本分区 (MakeSD/step1-fdisk.sh) ,脚本内容如下( sdb 替换为你 sd 卡的设备名):
umount /dev/sdb1 |
umount /dev/sdb2 |
sudo fdisk /dev/sdb |
使用 fdisk 工具分区具体参数参考 《Auto_Linux_BSP_23.0_S32V234_User_Manual》page 21-22
分区完成后重新插拔 SD 卡。
(2)使用脚本格式化sd卡 (MakeSD/step2-format.sh) ,内容如下( sdb 替换为你 sd 卡的设备名):
umount /dev/sdb1 |
umount /dev/sdb2 |
sudo mkfs.vfat -n boot /dev/sdb1 |
sudo mkfs.ext3 -L rootfs /dev/sdb2 |
格式化完成后重新插拔 SD 卡。
(3)使用脚本写入 u-boot (modules/step1_dd_29288_s32.sh) ,脚本内容如下( sdb 替换为你 sd 卡的设备名):
cd /home/stark/S32V/bsp23/modules/build_ko/systemfile |
sudo dd if=u-boot-29288.s32 of=/dev/sdb bs=512 seek=8 conv=fsync |
(4)使用脚本拷贝 boot 分区必要文件 (modules/step2_cpForBoot_Image_dtb.sh) ,脚本内容如下:
sudo cp /home/stark/S32V/bsp23/modules/build_ko/systemfile/Image /media/stark/boot/Image |
sudo cp /home/stark/S32V/bsp23/modules/build_ko/systemfile/fsl-s32v234-evb.dtb /media/stark/boot/fsl-s32v234-evb.dtb |
sync |
sudo cp /home/stark/S32V/bsp23/modules/build_ko/systemfile/cse.bin /media/stark/boot/cse.bin |
(5)使用脚本拷贝根文件系统 (modules/step3_tar_For_Rootfs.sh) ,这里使用文件系统是 VisionSDK_S32V2_RTM_1_6_0_img_yocto.tar.gz 中的VisionSDK_S32V2_RTM_1_6_0_img_yocto.tar\VisionSDK_S32V2_RTM_1_6_0_img_yocto\build_content\v234_linux_build\s32v234evb\rootfs\rootfs-evb.tar.gz,
脚本内容如下:
cd /media/stark/rootfs |
sudo tar xvf /home/stark/S32V/bsp23/modules/build_ko/systemfile/rootfs-evb.tar.gz |
(6)使用脚本拷贝 ko 文件 (modules/step4_cp_For_rootfs_ko.sh),脚本内容如下:
sudo cp /home/stark/S32V/bsp23/modules/build_ko/*.ko /media/stark/rootfs/s32v234/ |
5. demo 演示
把做好的 sd 卡启动盘插到 EVB2 板子上,接好串口,上电,即可尝试运行 /home/root/vsdk/ 下的 demo 程序,这里我运行如下例程:
./apex_downsample_upsample_cv.elf |
运行显示效果如下
参考资料
[1] Auto_Linux_BSP_23.0_S32V234_User_Manual
上一篇:NXP S32V234 使用 ISP 进行 H264 视频解码
下一篇:NXP S32V234 基于 Eagle Eye 的 OV9284 调试
评论