iTOP-STM32MP157开发板采用ST推出的双核cortex-A7+单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板+底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐用,可满足高速信号环境下使用。共240PIN,CPU功能全部引出:底板扩展接口丰富底板板载4G接口(选配)、千兆以太网、WIFI蓝牙模块HDMI、CAN、RS485、LVDS接口、温湿度传感器(选配)光环境传感器、六轴传感器、2路USB OTG、3路串口,CAMERA接口、ADC电位器、SPDIF、SDIO接口等
第十二章 编译Linux内核
12.1 内核源码的编译
kernel 的源码路径为“iTOP-STM32MP157开发板光盘资料\04_TF-A、uboot和内核源码\kernel”,如下图所示(日期可能会有变化,使用最新日期即可):
kernel 源码的编译器和编译uboot与TF-A的编译器相同,都为gcc-arm-10.3-2021.07-x86_64-arm-none-linux-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文件然后进行烧写即可。
12.2 驱动模块的使用
由于一些驱动的依赖特性,一些驱动并不能直接编译进内核,或者编译进内核之后并不能挂载成功。所以就需要我们进行手动挂载,以下为不能是在内核中不能成功挂载的模块:
我们都存放在了“output/ko”路径下,每个模块的原始路径如下图所示:
模块 | 模块编译成功之后存放的位置 |
RTL8723BU(蓝牙WIFI) | linux-5.4.31/drivers/net/wireless/rtl8723bu/8723bu.ko |
4.3寸屏幕触摸 | linux-5.4.31/drivers/input/touchscreen/tsc2007.ko |
10.1寸屏幕触摸 | linux-5.4.31/drivers/input/touchscreen/ gt911.ko |
Ov5640摄像头模块 | linux-5.4.31/drivers//media/i2c/ov5640.ko |
如果要使用这些外设,需要将对内核源码的output/ko路径下的模块拷贝到文件系统使用insmod命令进行手动加载,我们以RTL8723BU为例,在3.16 蓝牙WIFI测试章节进行了演示,其他模块的操作步骤相同。在我们提供好的镜像中,已经配置完成,不需要在进行上述配置。