Linux
Linux software install
Google repo的使用
Vector AP StartApplication编译脚本解析
Yocto的cmake版本升级
不能自动安装的解决方式
S32G-BSP35.0-SDK使用方法
S32G从SDK生成文件系统的制作过程
Linux Samba设置
Linux添加双网卡
S32G USB-Redirector安装指南
VS code自动生成Doxygen格式注释
Linux下使用多线程下载
使用pandoc 生成带中文的pdf
minicom无法输入的问题解决办法
使用 systemd unit 添加一条路由规则
CMake 教程
步骤 1:基本起点
步骤 2:添加lib库
步骤 3:为库添加使用要求
步骤 4:添加生成器表达式
步骤 5:安装和测试
步骤 6:添加支持测试仪表板
步骤 7: 添加系统内省
步骤 8:自定义命令和生成的文
步骤 9:打包安装程序
步骤 10:选择静态库或共享库
步骤 11:添加导出配置
步骤 12:打包 Debug 和 Release
添加虚拟网卡
Vector AP 去掉防篡改校验
Vector AP startapplication编译与使用
Vector AP问题汇总
Vector AP大型项目开发流程
Vector AP EM
Vector AP 最简单的开发示例
Linux kernel 版本降级
Vector AP StartApplicaiton
startappplication-machine-design
startapplicaiton-machine-integration
amsr-vector-fs-em-executionmanager-design
amsr-vector-fs-em-executionmanager
Vector AP 复杂模型的开发
第一章 Machine和MachineDesign
第二章 Execute Manager
第三章 Log
第四章 State Manager
第五章 State Manager 源码的理解
第六章 Someip daemon
第七章 IPC Service Discovery Daemon
crond的使用方法
解决蓝牙鼠标在 Ubuntu 中单位时间内断开的问题
VPS服务器自建教程
v2rayA的客户端使用配置
GDB调试指南入门篇:揭开程序运行世界的神秘面纱
GDB调试指南高级篇:成为调试专家,掌控程序的命运
Linux安装PyQt5并配置Qt Designer
ADB 命令大全
GoogleTest(一)
GoogleTest(二)简单的TEST宏
GoogleTest(三)简单类函数测试
C++ Template
1. 函数模板
2. 类模板
3. 非类型模板参数
软件版本号规范
EPOLL
C++手札
C++ 使用{}初始化有哪些好处?
现代 C++ decltype 深入解析
函数对象(functor)
Linux性能剖析:CPU、内存、网络与I/O压力测试
AP StateManager
C++ Lambda表达式
C++ 中的Lambda表达式
Lambda 表达式语法
Lambda 表达式的示例
手动发送UDP数据包
pyqt5生成的UI界面不能输入中文
自己搭建repo镜像
摄影
Sony仿富士PP值设置
诗词歌赋
本文档使用 MrDoc 发布
-
+
首页
S32G从SDK生成文件系统的制作过程
## 准备 首先需要一个从yocto生成的SDK。 ## 开始制作 1. 新建kochi-crosstool文件夹,将fsl-auto-glibc-x86_64-cortexa53-crypto-toolchain-35.0.sh复制进去并运行 ```shell mkdir kochi-crosstool cp /path/to/fsl-auto-glibc-x86_64-cortexa53-crypto-toolchain-35.0.sh ./kochi-crosstool ``` 2. 新建一个shell脚本kochi-setup.sh kochi-setup.sh内容: ```shell cd kochi-crosstool rm -rf site-config-cortexa53-crypto-fsl-linux sysroots \ version-cortexa53-crypto-fsl-linux \ environment-setup-cortexa53-crypto-fsl-linux ./fsl-auto-glibc-x86_64-cortexa53-crypto-toolchain-35.0.sh <<EOF ./ Y EOF ``` 3.下载uboot ,atf,kernel并编译 uboot: ```shell git clone https://github.com/nxp-auto-linux/u-boot cd u-boot git checkout bsp35.0-2020.04 make s32g399ardb3_defconfig make cd .. ``` atf: ```shell git clone https://github.com/nxp-auto-linux/arm-trusted-firmware cd arm-trusted-firmware git checkout bsp35.0-2.5 make ARCH=aarch64 PLAT=$(PLATFORM) BL33=$(UBOOT_DIR)/u-boot-nodtb.bin LDFLAGS="" cd .. ``` kernel: ```shell git clone https://github.com/nxp-auto-linux/linux cd linux git checkout bsp35.0-5.10.145-rt make ARCH=arm64 s32cc_defconfig make ARCH=arm64 cd .. ``` Tips: Makefile参考如下: ```shell TOPDIR:=$(shell pwd) UBOOT_DIR:=$(TOPDIR)/kochi-uboot KERNEL_DIR:=$(TOPDIR)/kochi-kernel ARM_TRUSTED_FIRMWARE_DIR=$(TOPDIR)/arm-trusted-firmware KOCHI_VECTOR_AP_DIR=$(TOPDIR)/kochi-vector-ap PLATFORM=s32g399ardb3 crosstool=crosstool uboot=uboot kernel_menuconfig=kernel_menuconfig debug_kernel_menuconfig=debug_kernel_menuconfig kernel=kernel atf=atf rootfs=rootfs kochi-vector-ap-example=kochi-vector-ap-example # 默认目标 all: $(crosstool) $(uboot) $(atf) $(kernel) $(rootfs) $(crosstool): ifneq ($(CROSSTOOL_FLAG), 1) @echo "\033[31m###### Please exec cmd to init crosstool: source kochi-crosstool/kochi-env-setup #######\033[0m" @exit 1 else @echo -e "\033[32m########## crosstool have inited previously #########\033[0m" endif $(uboot): cd $(UBOOT_DIR); make s32g399ardb3_defconfig ; make || exit; mkdir -p $(TOPDIR)/target ; \ cp $(UBOOT_DIR)/u-boot-nodtb.bin $(TOPDIR)/target/ $(atf): cd $(ARM_TRUSTED_FIRMWARE_DIR); [ ! -f $(UBOOT_DIR)/u-boot-nodtb.bin ] && echo "\033[31m.u-boot-nodtb.bin is nonexist, Please exec \"make uboot\" \033[0m" && exit 1 ;\ make ARCH=aarch64 PLAT=$(PLATFORM) BL33=$(UBOOT_DIR)/u-boot-nodtb.bin LDFLAGS="" ; cp build/${PLATFORM}/release/fip.s32 $(TOPDIR)/target ; exit ; $(kernel_menuconfig): cd $(KERNEL_DIR) ; make ARCH=arm64 s32cc_defconfig $(kernel): cd $(KERNEL_DIR) ; [ ! -f ./.config ] && echo "\033[31m.config is nonexist, Please exec \"make kernel_menuconfig\" \033[0m" && exit 1 ;\ make ARCH=arm64 ; mkdir -p $(TOPDIR)/target ; cp ./arch/arm64/boot/Image $(TOPDIR)/target ; cp ./arch/arm64/boot/dts/freescale/s32g399a-rdb3.dtb $(TOPDIR)/target/ ; exit ; $(rootfs): cp rootfs.tar.gz ./target/ $(kochi-vector-ap-example): cd $(KOCHI_VECTOR_AP_DIR)/Examples/startapplication ; ./build_startapplication_fsl.sh --execute || exit ; # 清理生成的文件 clean:uboot/clean kernel kernel/clean kernel/distclean kochi-vector-ap-example/clean uboot/clean: cd $(UBOOT_DIR); make clean kernel/clean: cd $(KERNEL_DIR) ; make clean || exit kernel/distclean: cd $(KERNEL_DIR) ; make distclean || exit kochi-vector-ap-example/clean: rm -rf kochi-vector-ap/BSW/CMakeLists.txt kochi-vector-ap/BuildStartApplication/ .PHONY: all clean ``` ## 磁盘格式化 kochi-fdisk.sh: ```shell #!/bin/bash # 检查参数是否为空 if [ -z "$1" ]; then echo "Usage: $0 /dev/sdX" exit 1 fi # 确认操作 read -p "This will repartition and format $1, continue? (y/n) " choice if [ "$choice" != "y" ]; then echo "Operation cancelled." exit 1 fi # 卸载设备 umount "$1"* &>/dev/null # 删除现有分区 echo "Deleting existing partitions on $1..." (echo d; echo w) | fdisk "$1" &>/dev/null # 重新分区 echo "Repartitioning $1..." (echo n; echo p; echo 1; echo 8192; echo +255M; echo Y; echo n; echo p; echo 2; echo 530432; echo; echo t; echo 1; echo c; echo t; echo 2; echo 83; echo w) | fdisk "$1" &>/dev/null # 格式化boot分区 echo "Formatting boot partition..." sudo mkfs.vfat -n boot "${1}1" # 格式化rootfs分区 echo "Formatting rootfs partition..." sudo mkfs.ext3 -L rootfs "${1}2" echo "Done." ``` ## 刷写 ```shell #!/bin/bash # 检查参数是否为空 if [ -z "$1" ] || ([ "$1" != "all" ] && [ "$1" != "boot" ] && [ "$1" != "kernel" ] && [ "$1" != "dtb" ] && [ "$1" != "rootfs" ]); then echo "Usage: $0 [all|boot|kernel|dtb|rootfs]" exit 1 fi # 检查文件是否存在 case "$1" in all) for file in target/Image target/rootfs.tar.gz target/*.dtb target/boot; do if [ ! -f "$file" ]; then echo "File $file not found." exit 1 fi done ;; boot|kernel|dtb|rootfs) file="target/$1" if [ ! -f "$file" ]; then echo "File $file not found." exit 1 fi ;; *) echo "Invalid parameter." exit 1 ;; esac # 如果参数是 "boot",则需要用户输入U盘设备路径 if [ "$1" == "boot" ]; then read -p "Enter the path of your USB device (e.g., /dev/sdX): " USB_DEVICE fi # 拼接挂载点路径 MOUNT_BOOT="/media/$USER/boot" MOUNT_ROOTFS="/media/$USER/rootfs" # 拷贝文件 case "$1" in all) echo "Copying all files to $MOUNT_BOOT and $MOUNT_ROOTFS..." sudo cp target/Image target/*.dtb target/boot "$MOUNT_BOOT/" sudo tar xf target/rootfs.tar.gz -C "$MOUNT_ROOTFS/" ;; boot) echo "Flash uboot ..." sudo dd if=target/fip.s32 of=${USB_DEVICE} conv=notrunc,fsync seek=512 skip=512 oflag=seek_bytes iflag=skip_bytes sync ;; kernel|dtb) echo "Copying Image and dtb file to $MOUNT_BOOT..." sudo cp target/Image target/*.dtb target/boot "$MOUNT_BOOT/" ;; rootfs) echo "Copying rootfs files to $MOUNT_ROOTFS..." sudo tar xf target/rootfs.tar.gz -C "$MOUNT_ROOTFS/" ;; esac sync ; echo "Done." ```
admin
2024年2月2日 13:39
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码