实验十二 LED驱动移植
【实验目的】
驱动程序的编译。
应用程序如何打开/操作设备
说明:在实验中命令行提示符为“$”表示在主机上运行,“#”表示在目标板上运行。
【实验环境】
- Ubuntu 16.04 64位发行版
- FS6818平台
【实验步骤】
- 添加驱动文件
将实验代码fs6818_led/ fs6818_led.c、fs6818_led.h拷贝到drivers/char/farsight下。
- 修改drivers/char/farsight/Kconfig,在menu "Character devices"下面添加如下内容:
config FS6818_LED
tristate "This is FS6818_LED!"
- 修改drivers/char/farsight/Makefile,在文件最后添加如下代码
obj-$(CONFIG_FS6818_LED) += fs6818_led.o
- 将fs6818led_test.c、fs6818_led.h拷贝到Linux任意目录下并交叉编译测试程序
$ arm-none-linux-gnueabi-gcc fs6818led_test.c –o fs6818_led_app
sudo cp fs6818_led_app /source/rootfs
- 编译LED驱动到内核中
- 配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
FS6818 extension device driver support --->
<*> This is FS6818_LED!
- 保存退出,重新编译后把uImage拷贝到Fastboot下
$ make uImage
重新启动开发板,烧写内核uImage并运行。在终端下执行下面操作
- 运行测试程序并观察现象
# ./ fs6818_led_app
- 配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
FS6818 extension device driver support --->
<M> This is FS6818_LED!
保存退出,重新编译后把uImage拷贝到Fastboot下,把驱动模块拷贝到/source/rootfs下
$ make uImage modules
$ cp drivers/char/farsight/fs6818_led.ko /source/rootfs/
重新启动开发板,linux运行起来后在终端下操作
- 加载LED驱动模块
#insmod fs6818_led.ko
- 运行测试程序并观察现象
# ./fs6818_led_app