linux内核源码配置和编译
1.解压内核源码
2.进入linux内核源码
3.配置交叉编译工具链
4.内核源码打补丁命令
5.配置内核源码补丁文件
6.因为FSMP1A开发板是参考DK1公板进行设计的,所以需要复制DK1设备树相关内容
7.编译内核源码
测试步骤
1.将~/tftpboot目录下,创建一个20221213文件夹
2.将~/tftpboot目录下,uImage和stm32mp157a-fsmp1a.dtb拷贝到20221213文件夹
4.进入linux内核源码arch/arm/boot/目录下,将uImage 文件拷贝到~/tftpboot/
5.进入linux内核源码arch/arm/boot/dts目录下,将stm32mp157a-fsmp1a.dtb文件拷贝到~/tftpboot/
6.设置自启动参数bootargs
7.设置自启动命令bootcmd
8.将开发板重新上电,在倒计时时间进入0之前,不按下enter键,进入自启动模式
9.观察现象
内核错误方法解决
1.将设备树的源文件(stm32mp157a-fsmp1a.dts),和设备树的头文件(stm32mp15xx-fsmp1x.dtsi),复制到内核源码/arch/arm/boot/dts
2.需要打开这两个文件查看一下(更新时间戳)
测试
1.编译内核源码
time make -j4 ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000000
2.成功现象
DTC arch/arm/boot/dts/stm32mp157a-fsmp1a.dtb -------->是否生成新的设备树文件
Kernel: arch/arm/boot/uImage is ready -------->是否生成新的uImage镜像文件
3.进入linux内核源码arch/arm/boot/目录下,将uImage 文件拷贝到~/tftpboot/
4.进入linux内核源码arch/arm/boot/dts目录下,将stm32mp157a-fsmp1a.dtb文件拷贝到~/tftpboot/
5.设置自启动参数bootargs
6.设置自启动命令bootcmd
7.将开发板重新上电,在倒计时时间进入0之前,不按下enter键,进入自启动模式
8.观察现象
添加自己编写led灯驱动
1.添加自己的LED灯驱动程序选项
config LED_DRIVER
11 bool "led driver"
12 default y
13 help
14 this is DC22081 LED DRIVER
2.打开linux内核源码进入drivers/char目录下打开Makefile文件,在最后一行添加一句话
obj-$(CONFIG_LED_DRIVER) += fsmp157a_led.o
3.通过make menuconfig查看图形界面
4.在内核源码源码目录下执行make menuconfig
Device Drivers --->
Character devices --->
[*] led driver (NEW)
5.编译内核源码 time make -j4 ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000000
6.进入linux内核源码arch/arm/boot/目录下,将uImage 文件拷贝到~/tftpboot/
7.进入linux内核源码arch/arm/boot/dts目录下,将stm32mp157a-fsmp1a.dtb文件拷贝到~/tftpboot/
8.设置自启动参数bootargs
9.设置自启动命令bootcmd
10.将开发板重新上电,在倒计时时间进入0之前,不按下enter键,进入自启动模式
11.观察现象,led灯并没有点亮