编译手册
编译环境
ubuntu版本:ubuntu20.04
软件包安装:
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,修改方式如下:
$ ls -la /bin/sh
lrwxrwxrwx 1 root root 4 Jun 15 08:49 /bin/sh -> dash
$ sudo dpkg-reconfigure dash
#在弹出的界面选择<NO>
$ 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工具来配置。
源码与交叉编译
$ 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
设置交叉编译工具
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
全局编译
#全局编译,只要运行,会把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设备树文件
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配置
#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