[STM32H7] 编译STM32MP1的Linux内核

[复制链接]
908|12
 楼主| 慢动作 发表于 2025-2-27 02:35 | 显示全部楼层 |阅读模式
确保系统已安装必要的工具链和依赖项:
sudo apt-get update
sudo apt-get install build-essential libncurses-dev bison flex libssl-dev bc
获取交叉编译工具链
STM32MP1是ARM架构,需使用ARM交叉编译工具链:
sudo apt-get install gcc-arm-none-eabi
下载Linux内核源码
从ST官方GitHub仓库获取内核源码:
git clone https://github.com/STMicroelectronics/linux.git
cd linux
git checkout stm32mp1
配置内核
使用默认配置文件并启动配置界面:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- stm32_defconfig
make ARCH=arm CROSS_COMPILE=arm-none-eabi- menuconfig
编译内核
编译内核和模块:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- -j$(nproc)
make ARCH=arm CROSS_COMPILE=arm-none-eabi- modules -j$(nproc)
生成设备树
编译设备树文件:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- dtbs
安装内核和模块
将编译好的内核和模块安装到指定目录:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- INSTALL_MOD_PATH=/path/to/rootfs modules_install
部署内核
将生成的zImage和dtb文件复制到目标系统的启动分区。
清理
编译完成后,可清理中间文件:
make ARCH=arm CROSS_COMPILE=arm-none-eabi- clean

以上步骤完成后,你将获得适用于STM32MP1的Linux内核镜像和设备树文件,可将其部署到目标设备。

yangjiaxu 发表于 2025-3-6 15:17 | 显示全部楼层
编译MP1比较有意思,linux还是方便不少
stormwind123 发表于 2025-3-7 10:46 | 显示全部楼层
支持一下楼主的分享
公羊子丹 发表于 2025-3-9 07:44 | 显示全部楼层
这套流程挺详细的,menuconfig里有没有推荐开启的关键选项?
周半梅 发表于 2025-3-9 07:45 | 显示全部楼层
gcc-arm-none-eabi这个工具链我一般用于裸机开发,编译Linux内核时是不是应该用gcc-arm-linux-gnueabihf更合适?
帛灿灿 发表于 2025-3-9 07:46 | 显示全部楼层
stm32_defconfig这个配置文件里,默认的设备树文件包含哪些外设?
童雨竹 发表于 2025-3-9 07:48 | 显示全部楼层
编译时-j$(nproc)很省时间,但内存占用挺大,机器配置低的话容易卡住。
万图 发表于 2025-3-9 07:49 | 显示全部楼层
dtbs生成时遇到报错的话,通常是设备树语法问题,dtc工具可以单独检查。
Wordsworth 发表于 2025-3-9 07:51 | 显示全部楼层
INSTALL_MOD_PATH里的路径要提前建好,不然模块安装可能失败。
Bblythe 发表于 2025-3-9 07:52 | 显示全部楼层
部署zImage和dtb文件时,如果U-Boot版本不匹配,可能会启动异常。
Pulitzer 发表于 2025-3-9 07:53 | 显示全部楼层
clean命令有时清理不彻底,可以加上distclean确保完全恢复原始状态。
Uriah 发表于 2025-3-9 07:54 | 显示全部楼层
从ST官方仓库拉源码时,建议加上--depth=1以节省时间和空间。
Clyde011 发表于 2025-3-9 07:56 | 显示全部楼层
如果目标板启动卡住,建议结合earlyprintk和loglevel=8来调试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

1071

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部