一、解压7z源码包
(1)7z x Hi3516CV610_SDK_V1.0.0.3_update.7z
(2)进入Hi3516CV610_SDK_V1.0.0.3_update执行./sdk.unpack 则会将以下包进行解压
(3)解压gcc交叉编译工具,并执行install_gcc_toolchain.sh /opt 则会将gcc工具安装到/opt 目录下
sudo ./install_gcc_toolchain.sh /opt/
在/etc/environment后面添加 :/opt/arm-v01c02-linux-musleabi-gcc/bin
然后在编译之前进行临时配置环境编译即可source /etc/environment
安装软件包
sudo apt-get install make libc6-i386 lib32z1 lib32stdc++6 libncurses5-dev ncurses-term libncursesw5-dev g++ u-boot-tools texinfo gawk \
libssl-dev openssl bc p7zip-full gperf bison flex diffutils git unzip libffi-dev libtool libfreetype6 fakeroot autopoint po4a python3-pip wget
sudo apt-get install zlib1g-dev liblzo2-dev uuid-dev pkg-config automake device-tree-compiler
export PKG_CONFIG_PATH="$PKG_CONFIG_PATH:/usr/lib/x86_64-linux-gnu/
pkgconfig"
sudo apt-get install texlive
sudo pip3 install wheel
sudo pip3 install pycryptodome
sudo pip3 install pyelftools
sudo pip3 install cryptography
ln -s /usr/bin/python3 /usr/bin/python
二、编写源码
(1)编译整个bsp目录:
make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=1 all
make all是默认编译:make LIB_TYPE=musl CHIP=hi3516cv610 DEBUG=0 all
编译参数说明:
1)BOOT_MEDIA默认选择spi启动方式编译,可选择emmc启动方式编译,即BOOT_MEDIA=emmc;
2)LIB_TYPE默认为musl编译,可选择glibc编译,即LIB_TYPE=glibc;
3)CHIP默认为hi3516cv610,可选择hi3516cv610编译,即CHIP=hi3516cv610;
4)DEBUGDEBUG默认为DEBUG=0,表示编译 release 版本系统镜像。可选择为DEBUG=1,即编译debug版本系统镜像。
5)bsp/pub目录下文件即为所编译小系统镜像
(2)清除整个bsp目录的编译文件:
make clean
(3)彻底清除整个bsp目录的编译中间文件:
make distclean
(4)单独编译kernel image:
make kernel
修改config配置,重编kernel镜像的方法:
1)进入open_source/linux/linux-5.10.y目录,执行make ARCH=arm CROSS_COMPILE=arm-v01c02-linux-musleabi- menuconfig,修改config配置
2)将修改后的.config拷贝为新的config文件,执行cp .config arch/arm/configs/hi3516cv610_new_defconfig
3)进入bsp目录,重新执行make KERNEL_CFG=hi3516cv610_new_defconfig kernel
(5)单独编译非安全启动镜像:
make gslboot_build -j
如果没有使用默认表格, 需要把表格拷贝到 tools/pc/boot_tools, 在编译 boot 时加参数 REGBIN_XLSM 指定表格, 如:
make gslboot_build REGBIN_XLSM=xxxx.xlsm -j
(6)制作文件系统镜像(以hi3516cv610为例):
在bsp/pub/中有已经编译好的文件系统,因此无需再重复编译文件系统,只需要根据单板上启动介质的规格型号制作文件系统镜像即可。
spi flash使用jffs2格式的镜像,制作jffs2镜像时,需要用到spi flash的块大小。这些信息会在uboot启动时会打印出来。建议使用时先直接运行mkfs.jffs2工具,根据打印信息填写相关参数。
1)下面以块大小为64KB为例:
bsp/pub/bin/pc/mkfs.jffs2 -d bsp/pub/rootfs_musl_arm -l -e 0x10000 -o bsp/pub/rootfs_hi3516cv610_64k.jffs2
nand flash使用ubifs格式的镜像,制作ubifs镜像时,需要用到nand flash的pagesize和blocksize。这些信息会在uboot启动时会打印出来。
2)下面以2KB pagesize、128KB block size为例:
./bsp/tools/pc/ubi_sh/mkubiimg.sh hi3516cv610 2k 128k bsp/pub/rootfs_musl_arm 32M bsp/pub/bin/pc
三、烧录固件(以NOR FLASH为例)
(1)使用ToolPlatform.exe 工具烧录(网口 需要 tftp32.exe配合以及连接串口),配置tftp32.exe 主机IP地址与更新固件路径,并加载分区表文件
nor_burn_table.xml(网口烧录,需要重新上电)
(2)使用ToolPlatform.exe 工具烧录(串口烧录,需要重新上电)
版权声明
内容来源及使用限制
欢迎访问 TomgZHE研习社(网址:https://blog.tomgzhe.com)。本网站部分文章内容源自网络,仅作学习交流与参考分享;若您发现有内容涉嫌侵权,请立即联系 tomgzhe@qq.com,我们将在接到通知后的 48 小时内核实并删除相关侵权内容。
软件资源相关规定
本网站为个人非盈利性质的站点,所有软件资源均来自网络。这些资源仅用于个人学习、研究和参考,严禁用于任何商业用途。您下载和使用本网站软件资源即表示您同意仅将其用于学习目的,若因违反此规定导致任何法律纠纷或损失,责任由您自行承担。
原创版权
本网站上的原创内容,包括但不限于文字作品、自行设计的图片、独家制作的音频视频等,其版权均归本网站所有。未经本网站书面授权,任何组织或个人不得擅自复制、转载、摘编、传播或以其他任何方式使用这些原创内容。如需使用,请提前与我们联系并获得书面许可,同时需在显著位置注明出处及作者信息。
转载与引用规范
若您需转载本网站文章,务必注明文章来源为 “[TomgZHE研习社],原文链接:[ http://blog.tomgzhe.com/index.php/2025/02/25/hi3516cv610-build-uboot-kernel-rootfs_bringup/]”;对于有明确作者署名的文章,还需完整保留作者姓名。在引用本网站内容时,请确保内容准确无误,并遵循学术及行业的引用规范。