源码和工具从ST官网下载。
我们开始调试程序只能通过串行启动,我们利用STM32CubeProg通过USB启动。
这个工具是用来生成代码用的,对于Cortex-M4可以生成和配置代码,对于Cortex-A7可以生成设备树。但是STM32CubeMX对于Cortex-A7支持还不是很成熟,只能配置少部分功能,这里我们只是参考生成的设备树,我们主要是自己修改。
有两个包STM32MP1Dev和SDK,分别是源码包和编译工具包。源码包括我们移植所需的全部源码,这个编译工具包括编译工具链和一些编译所需的工具命令,用这个省得折腾,比较推荐使用。
源码:en.SOURCES-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
SDK:en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
STM32MP1Starter包含官方开发板的所有镜像文件,包括烧写脚本,我们可以参考。
链接:en.FLASH-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
安装STM32CubeProg和STM32CubeMX。
点击INSTALL/REMOVE安装STM32MP1软件包。
选中最新的包点击Install完成安装。
$ tar -xvf en.SOURCES-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
$ tar -xvf en.SDK-x86_64-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
$ tar -xvf en.FLASH-stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.tar.xz
得到stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15 文件夹,里面就是源码、工具和镜像包。
stm32mp1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15
├── images #官方开发板镜像包
├── sdk #交叉编译工具链
└── sources #源码
└── arm-ostl-linux-gnueabi
├── FIP_artifacts #FIP编译生成的结果存放目录
├── gcnano-driver-stm32mp-6.4.7-stm32mp1-r1-rc2-r0 #一个内核模块源码
├── linux-stm32mp-5.15.24-stm32mp1-r1-r0 #Linux源码及补丁
├── optee-os-stm32mp-3.16.0-stm32mp1-r1-r0 #OPTEE源码及补丁
├── tf-a-stm32mp-v2.6-stm32mp1-r1-r0 #TF-A源码及补丁
└── u-boot-stm32mp-v2021.10-stm32mp1-r1-r0 #u-boot源码及补丁
创建toolchain目录,进入到sdk目录下。输入命令$ ./st-image-weston-openstlinux-weston-stm32mp1-x86_64-toolchain-4.0.1-openstlinux-5.15-yocto-kirkstone-mp1-v22.06.15.sh
安装工具链,输入../toolchain
设置安装路径,输入Y
等待安装完成。
安装完成完成进入到toolchain目录下,执行$ source environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi
(以后每开一个终端需要使用工具链都要执行这条命令),输入arm双击tab键可以看到工具链。
我们获取到官方源码,并且安装好所需工具,接下来就是移植了。我们参照官方stm32mp157d-dk1开发板进行移植,对于移植我们主要是对设备树的修改。
学习笔记仅供参考,欢迎指正错误,如有侵权请及时联系。移植源码获取:
git clone https://github.com/Sonboy97/arm-ostl-linux-gnueabi.git
版本:9ae04fa8dbea4c984243179d1faa6e39cd18d2dd