成功移植内核源码
开发板可以挂在linux操作系统
添加led驱动到内核源码drivers/char目录下
打开linux内核源码进入drivers/char目录下打开Kconfig文件,对Kconfig文件进行分析
vi Kconfig
2.添加自己的LED灯驱动程序选项
10 config LED_DRIVER
11 bool "led driver"
12 default y
13 help
14 this is DC22081 LED DRIVER
3.打开linux内核源码进入drivers/char目录下打开Makefile文件,在最后一行添加一句话
50 obj-$(CONFIG_LED_DRIVER) += fsmp157a_led.o
通过make menuconfig查看图形界面
在内核源码源码目录下执行make menuconfig
Device Drivers --->
Character devices --->
[*] led driver (NEW)
编译内核源码
.编译内核源码
time make -j4 ARCH=arm uImage vmlinux dtbs LOADADDR=0xC2000000
2.成功现象
CC drivers/char/fsmp157a_led.o
-------->是否生成对应的led灯.o文件
3.进入linux内核源码arch/arm/boot/目录下,将uImage 文件拷贝到~/tftpboot/
cp uImage ~/tftpboot/
4.进入linux内核源码arch/arm/boot/dts目录下,将stm32mp157a-fsmp1a.dtb文件拷贝到~/tftpboot/
cp stm32mp157a-fsmp1a.dtb ~/tftpboot/
5.设置自启动参数bootargs
FSMP1A> setenv bootargs root=/dev/nfs nfsroot=192.168.1.250:/home/linux/nfs/rootfs,tcp,v4 rw console=ttySTM0,115200 init=/linuxrc ip=192.168.1.100
FSMP1A> saveenv
6.设置自启动命令bootcmd
FSMP1A> setenv bootcmd tftp 0xc2000000 uImage\;tftp 0xc4000000 stm32mp157a-fsmp1a.dtb\;bootm 0xc2000000 - 0xc4000000
FSMP1A> saveenv
7.将开发板重新上电,在倒计时时间进入0之前,不按下enter键,进入自启动模式
8.观察现象,led灯并没有点亮
led灯测试步骤
将fsmp157a_led_test.c和fsmp157a_led.h这两个文件拷贝到~/nfs/rootfs目录
2.编译led灯应用程序
arm-linux-gnueabihf-gcc fsmp157a_led_test.c
3.在串口工具执行./a.out
4.观察串口工具是否打印信息,并且LED1/LED2/LED3是否点亮