打印
[STM32H7]

编译STM32MP1的Linux内核

[复制链接]
331|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里有没有推荐开启的关键选项?

使用特权

评论回复
5
周半梅| | 2025-3-9 07:45 | 只看该作者
gcc-arm-none-eabi这个工具链我一般用于裸机开发,编译Linux内核时是不是应该用gcc-arm-linux-gnueabihf更合适?

使用特权

评论回复
6
帛灿灿| | 2025-3-9 07:46 | 只看该作者
stm32_defconfig这个配置文件里,默认的设备树文件包含哪些外设?

使用特权

评论回复
7
童雨竹| | 2025-3-9 07:48 | 只看该作者
编译时-j$(nproc)很省时间,但内存占用挺大,机器配置低的话容易卡住。

使用特权

评论回复
8
万图| | 2025-3-9 07:49 | 只看该作者
dtbs生成时遇到报错的话,通常是设备树语法问题,dtc工具可以单独检查。

使用特权

评论回复
9
Wordsworth| | 2025-3-9 07:51 | 只看该作者
INSTALL_MOD_PATH里的路径要提前建好,不然模块安装可能失败。

使用特权

评论回复
10
Bblythe| | 2025-3-9 07:52 | 只看该作者
部署zImage和dtb文件时,如果U-Boot版本不匹配,可能会启动异常。

使用特权

评论回复
11
Pulitzer| | 2025-3-9 07:53 | 只看该作者
clean命令有时清理不彻底,可以加上distclean确保完全恢复原始状态。

使用特权

评论回复
12
Uriah| | 2025-3-9 07:54 | 只看该作者
从ST官方仓库拉源码时,建议加上--depth=1以节省时间和空间。

使用特权

评论回复
13
Clyde011| | 2025-3-9 07:56 | 只看该作者
如果目标板启动卡住,建议结合earlyprintk和loglevel=8来调试。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

77

主题

866

帖子

0

粉丝