Linux|Linux系统移植篇1:STM32MP1微处理器之源码编译( 四 )


linux@ubuntu:$ $CC --version

2)将工作目录切换到fsmp1a-trusted-firmware-2.2源码目录下 。
linux@ubuntu:$ cd ${HOME/fs-mp1a/trusted-firmware/fsmp1a-trusted-firmware-2.2
l编译trusted镜像
linux@ubuntu:$ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-fsmp1a TF_A_CONFIG=trusted ELF_DEBUG_ENABLE='1' all
编译成功之后会在上级目录下生成build目录 , build目录下的trusted目录中tf-a-stm32mp157a-fsmp1a-trusted.stm32即为烧写镜像 。

l编译optee镜像
linux@ubuntu:$ make -f $PWD/../Makefile.sdk TFA_DEVICETREE=stm32mp157a-fsmp1a TF_A_CONFIG=optee ELF_DEBUG_ENABLE='1' all
编译成功之后会在上级目录下生成build目录 , build目录下的optee目录中tf-a-stm32mp157a-fsmp1a-optee.stm32即为烧写镜像 。

l编译trusted、optee两种镜像
linux@ubuntu:$ make -f $PWD/../Makefile.sdk all
编译成功后会在上级目录下生成build目录 , 该目录下同时生成了trusted和optee两个目录 。

1.4optee-os源码编译1)导入交叉编译工具链并验证
linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
linux@ubuntu:$ $CC --version

2)将工作目录切换到fsmp1a-optee_os-3.9.0源码目录下 。
linux@ubuntu:$ cd ${HOME/fs-mp1a/optee-os/fsmp1a-optee_os-3.9.0

3)编译源码
linux@ubuntu:$ make -f $PWD/../Makefile.sdk CFG_EMBED_DTB_SOURCE_FILE=stm32mp157a-fsmp1a
编译成功之后会在上级目录下生成build目录其目录下的tee-header_v2-stm32mp157a-fsmp1a-optee.stm32、tee-pageable_v2-stm32mp157a-fsmp1a-optee.stm32、tee-pager_v2-stm32mp157a-fsmp1a-optee.stm32即为烧写镜像 。

1.5linux源码编译1)导入交叉编译工具链并验证
linux@ubuntu:$ linux@ubuntu:$ source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
linux@ubuntu:$ $CC --version

2)将工作目录切换到fsmp1a-linux-5.4.31源码目录下 。
linux@ubuntu:$cd ${HOME/fs-mp1a/linux/fsmp1a-linux-5.4.31

3)导入配置文件
linux@ubuntu:$make stm32_fsmp1a_defconfig

如果需要修改配置可以使用如下命令来启动menuconfig
linux@ubuntu:$make menuconfig

4)编译内核镜像
linux@ubuntu:$make -j4 ARCH=arm uImage vmlinux LOADADDR=0xC2000040
编译成功之后会在arch/arm/boot/目录下生成uImage文件

在源码目录下生成用于调试的vmlinux文件

5)编译设备树文件
linux@ubuntu:$make ARCH=armdtbs
编译成功之后会在arch/arm/boot/dts目录下生成stm32mp157a-fsmp1a.dtb、stm32mp157a-fsmp1a-rgb070.dtb和stm32mp157a-fsmp1a-mipi050.dtb文件

stm32mp157a-fsmp1a-rgb070.dtb为rgb屏幕的设备树文件
stm32mp157a-fsmp1a-mipi050.dtb为mipi屏幕的设备树文件
6)编译内核模块
linux@ubuntu:$make ARCH=arm modules
linux@ubuntu:$make ARCH=arm INSTALL_MOD_PATH=\"$PWD/../build/install_artifact\" modules_install
编译成功后会在上层目录生成build目录其中的install_artifact目录中存放的即为导出的驱动模块 。
1.6Yocto构建系统1)将工作目录切换到fsmp1a-ST-Yocto源码目录下 。
linux@ubuntu:$cd ${HOME/fs-mp1a/ fsmp1a-ST-Yocto

2)导入编译配置
linux@ubuntu:$DISTRO=openstlinux-weston MACHINE=fsmp1a source layers/meta-farsight/scripts/envsetup.sh
如下界面提示主机的ubuntu版本与期望的版本不同 , 这里输入y

如果是第一次配置 , 需要同意一些协议 , 输入y 。。

之后按空格键到协议底部

输入y会出现如下界面

3)编译源码
linux@ubuntu:$bitbake fs-mp1a-weston
注意:在编译Yocto系统时确保ubuntu主机可以连接互联网
由于OpenSTLinux涉及到的源码较多 , 因此编译会比较耗时 。
编译完成后所生成的镜像文件保存在tmp-glibc/deploy/images/fsmp1a/目录下 。