迅为iTOP-STM32MP157开发板编译Linux内核
1 内核源码的编译
kernel 的源码路径为“iTOP-STM32MP157 开发板光盘资料\04_TF-A、uboot 和内核源码\kernel”,如下图所示(日期可能会有变化,使用最新日期即可):
kernel 源码的编译器和编译 uboot 与 TF-A 的编译器相同,都为 gcc-arm-10.3-2021.07-x86_64-arm-nonelinux-gnueabihf。
将“ ”源码拷贝源码到“/home/topeet”目录下,使用如下命令
tar -vxf linux-5.4.31_20210817.tar.gz
解压源码压缩包,得到“linux-5.4.31”文件夹,使用如下命令
cd linux-5.4.31/
进入该文件夹,如下图所示。
使用命令”./create.sh”来进行编译,编译过程如下图示所示:
编译完成如下图所示:
如下图所示,在“output”目录下,编译生成了“uImage”kernel 镜像。
如下图所示,在“output/dts/”目录下生成设备树文件“****.dtb”。
如上图所示,这七个设备树文件是我们所需要的,分别对应七个不同的屏幕。编译完成以后,我们需要制作对应的镜像,这样才能使用 STM32CubeProgrammer 工具烧写进开发板。
而我们通过烧写软件烧写的镜像为 bootfs.ext4,存放路径为“output”目录下,如下图所示
bootfs.ext4 镜像之中存放的就是我们 uImage 和 dtb 设备树文件,大家可以自行挂载来进行查看。
至此我们的内核设备树镜就制作完成了,然后只需要将我们制作的 bootfs.ext4 替代 image 烧写目录下的 bootfs.ext4 文件然后进行烧写即可。
2 驱动模块的使用
由于一些驱动的依赖特性,一些驱动并不能直接编译进内核,或者编译进内核之后并不能挂载成功。所以就需要我们进行手动挂载,以下为不能是在内核中不能成功挂载的模块:
我们都存放在了“output/ko”路径下,每个模块的原始路径如下图所示:
迅为iTOP-STM32MP157开发板:
核心板参数
尺寸: 46mm*58mm
CPU: STM32MP157A
主频: 650M
内存:: 1G
存储 8G
工作电压: 直流5V供电
系统支持: 流畅运行最小Linux系统、Buildroot、QT5.12.10、ubuntu_base_20.04、Debian系统
引角扩展: 引出脚多达240个,满足用户各类扩展需求
底板参数
尺寸: 190mm*125mm
POWER: 电直流电源输入接口,12V/3A+电源输入
SWITCH: 电源开关
DIP: SWITCH 4位拨码开关
ADC电位器: 1路
SDIO接口: 1个
JTAG: 1个
CAMERA接口: 1个
CAN接口: 1路CAN
User Key: 5个功能按键
MIC: 支持MIC输入
PHONE: 支持耳机输出
串口: 3路
USB Host: 2路 USB Host,支持USB2.0协议
TF Card: 1个标准TF卡接口
网口: 1路千兆以太网口
LED: 3个(1个电源指示灯,2个可控LED)
HDMI接口: 1路
LCD接口: 1路LVDS9(HDMI口输出LVDS信号),1路RGB
USB OTG: 2路 USB OTG2.0
RTC: 1个
RS485接口: 1路
WIFI/蓝牙芯片: 1路
4G模组选配: 1个
六轴传感器: 1个
蜂鸣器: 1个
红外传感器: 1个
光环境传感器: 1个
温湿度传感器: 1个
SPDIF接口: SPDIF输入、SPDIF输出