QQ群:852283276
微信:arm80x86
微信公众号:青儿创客基地
B站:主页 https://space.bilibili.com/208826118
官网
Jenkins详细教程
环境准备,
$ source petalinux-v2018.2-final/settings.sh
新建和编译工程,该过程只需执行一次,建议手动执行,无需加入jenkins,新建工程之后需要更新设备树,再编译工程
$ petalinux-create -t project -n <project name> --template zynqmp
$ petalinux-config --get-hw-description=<hdf path>
$ petalinux-build # 编译工程
编译u-boot,生成的固件是代码树根目录u-boot.elf
$ make CROSS_COMPILE=aarch64-linux-gnu- EXT_DTB=<dtb path>
编译内核,生成的固件是arch/arm64/boot/Image
$ make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- -j4
制作启动镜像,
$ petalinux-package --boot --fsbl <fsbl elf> --atf <atf elf> --pmufw <pmu elf> --u-boot=<u-boot elf> -o boot.bin
环境准备,
$ source petalinux-v2015.2.1-final/settings.sh
新建和编译工程,该过程只需执行一次,建议手动执行,无需加入jenkins,新建工程之后需要更新设备树,再编译工程
$ petalinux-create -t project -n <project name> --template zynq
$ petalinux-config --get-hw-description=<hdf path>
$ petalinux-build # 编译工程
编译u-boot,生成的固件是代码树根目录u-boot
$ make CROSS_COMPILE=arm-xilinx-linux-gnueabi-
编译内核,生成的固件是arch/arm/boot/uImage
$ make ARCH=arm CROSS_COMPILE=arm-xilinx-linux-gnueabi- uImage -j4
制作启动镜像,
$ petalinux-package --boot --fsbl <fsbl elf> --u-boot=<u-boot elf> -o boot.bin
环境准备,有两种,编译u-boot时采用第二个命令,编译其他目标时采用第一个命令
$ source environment-setup-ppc64e6500-fsl-linux # 1
$ source environment-setup-ppce6500-fsl-linux # 2
编译u-boot,生成的固件是代码树根目录u-boot.bin
$ make
编译内核,生成的固件是arch/arm/boot/uImage
$ unset LDFLAGS
$ export LOADADDR=0x1000000
$ export UIMAGE_ENTRYADDR=0x1000040
$ make -j4
环境准备,
$ export PATH=hisi-linux/x86-arm/arm-hisiv600-linux/target/bin:$PATH
编译u-boot,生成的固件是代码树根目录u-boot.bin
$ make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux-
编译内核,生成的固件是arch/arm/boot/uImage
$ make ARCH=arm CROSS_COMPILE=arm-hisiv600-linux- uImage -j4
制作启动镜像,
$ dd if=./u-boot.bin of=./fb1 bs=1 count=64
$ dd if=reg_info_hi3531d.bin of=./fb2 bs=8192 conv=sync
$ dd if=./u-boot.bin of=./fb3 bs=1 skip=8256
$ cat fb1 fb2 fb3 > boot.bin
$ rm -f fb1 fb2 fb3
环境准备,
$ export PATH=gcc-linaro-7.3.1-2018.05-x86_64_aarch64-linux-gnu/bin:$PATH
编译UEFI,生成的固件是代码树根目录ft2004.fd
$ ./build2004.sh
u-boot和内核版本号位于代码树include\generated\autoconf.h
某一行(行号不固定),可通过写一个应用程序严格匹配#define CONFIG_LOCALVERSION "-fdk-
来得到版本号,例如,其中1.0.1-20191128.1947
就是最终的版本号。
#define CONFIG_LOCALVERSION "-fdk-1.0.1-20191128.1947"
待定,但也会统一采用CONFIG_LOCALVERSION
来表示,保证接口的通用。