编译手册 ========= 编译环境 ---------- - ubuntu版本:ubuntu20.04 - 软件包安装: .. code-block:: shell sudo apt-get install libc6-dev-i386 lib32z1 libuuid1 cmake libncurses5-dev libncursesw5-dev bc xz-utils automake libtool libevdev-dev pkg-config mtd-utils bison flex libssl-dev libmpc-dev squashfs-tools gawk make gcc git python rename - 编译脚本默认使用的是bash,要求系统的默认shell为bash,可通过ls -la /bin/sh命令来确认。以最常用的Ubuntu为例,高版本的Ubuntu默认shell为dash,修改方式如下: .. code-block:: shell $ ls -la /bin/sh lrwxrwxrwx 1 root root 4 Jun 15 08:49 /bin/sh -> dash $ sudo dpkg-reconfigure dash #在弹出的界面选择 $ ls -la /bin/sh lrwxrwxrwx 1 root root 4 Jun 15 08:49 /bin/sh -> bash | 设置默认python版本为python2.x (ubuntu20.04不需要配置,默认是python2.x) | python2与python3的语义有差别,SDK编译脚本使用的是python2的语义,因此需要将系统默认python版本设置为python2.x,修改方式请参考网络上的相关文档,比如使用update-alternatives工具来配置。 源码与交叉编译 --------------- .. code-block:: shell $ mkdir ~/ssd2355/source -p $ tar zxvf boot-Pcupid_DLD00V2.3.3.tar.gz -C ~/ssd2355/source $ tar zxvf kernel-Pcupid_DLD00V2.3.3.tar.gz -C ~/ssd2355/source $ tar zxvf project-Pcupid_DLD00V2.3.3.tar.gz -C ~/ssd2355/source $ tar zxvf sdk-Pcupid_DLD00V2.3.3.tar.gz -C ~/ssd2355/source $ mkdir ~/ssd2355/tool/toolchain -p $ tar -xvf ./aarch64-unknown-linux-gcc-12.4.0-glibc-2.37-gnu.tar.gz -C ~/ssd2355/tool/toolchain - 设置交叉编译工具 .. code-block:: shell export PATH=/home/surs/my-work/ssd2355/tool/toolchain/aarch64-unknown-linux-gcc-12.4.0-glibc-2.37-gnu/bin:$PATH export CROSS_COMPILE=aarch64-unknown-linux-gnu-12.4.0- export ARCH=arm64 ${CROSS_COMPILE}gcc -v 全局编译 --------- .. code-block:: shell #全局编译,只要运行,会把boot,kernel,project,sdk编译 $ cd ~/ssd2355/source/project/ make dispcam_pcupid.spinand.glibc-12.4.0-squashfs.ssz001a.1024.bga_ddr4_riscv_defconfig make image -j16 ./image/makefiletools/script/make_usb_factory_sigmastar.sh #编译完成后生成的images在project/image/output/images#注意:#首次编译请务必在project下执行make clean;make image -j8命令完整编译(包含整编boot/kernel)#为增加调试效率,除首次编译外,后续debug可以直接在project下编译对应修改模块然后重新快速打包即可,例如: #仅编译kernel: $ cd ~/ssd2355/source/project/ $ make linux-kernel_clean;make linux-kernel -j8 #仅编译boot: $ cd ~/ssd2355/source/project/ $ make boot_clean;make boot -j8 #仅快速打包sdk image: $ cd ~/ssd2355/source/project/ $ make image-fast-nocheck -j8 - kernel设备树文件 .. code-block:: shell ssd2355/source/kernel/arch/arm64/boot/dts/sstar/pcupid.dtsi ssd2355/source/kernel/arch/arm64/boot/dts/sstar/pcupid-ssz001a-s01a.dts ssd2355/source/kernel/arch/arm64/boot/dts/sstar/pcupid-ssz001a-s01a-padmux.dtsi - menuconfig配置 .. code-block:: shell #boot​ make ARCH=arm64 menuconfig​ make savedefconfig cp defconfig configs/pcupid_ssz001a_s01a_spinand_arm64_defconfig #kernel make ARCH=arm64 menuconfig make savedefconfig cp defconfig arch/arm64/configs/pcupid_ssz001a_s01a_spinand_defconfig