LED驱动的移植记录
目的
1. 驱动程序的静态编译和动态编译
2. 应用程序如何打开/操作设备
环境
主机:ubuntu 10.10发行版
目标机:FS_S5PC100平台
交叉编译工具:arm-cortex_a8-linux-gnueabi-gcc
步骤
//修改内核配置
$ make menuconfig
Kernel Features --->
[*] Use the ARM EABI to compile the kernel
[*] Allow old ABI binaries to run with this kernel (EXPERIMENTAL)
//添加驱动文件
将实验代码LED_TEST/fsc100_led_drv.c拷贝到drivers/char下
//修改drivers/char/Kconfig
在menu "Character devices"下面
添加如下内容:
config FSC100_LED
tristate "FSC100 LED Device Support"
depends on ARCH_S5PC100
help
support led device on FS_S5PC100 develop board
//修改drivers/char/Makefile
在 obj-$(CONFIG_HANGCHECK_TIMER) += hangcheck-timer.o 下一行添加:
obj-$(CONFIG_FSC100_LED) += fsc100_led_drv.o
//交叉编译测试程序fsc100_led_test.c
arm-cortex_a8-linux-gnueabi-gcc fsc100_led_test.c –o fsc100_led_test
cp fsc100_led_test /nfs/rootfs
//----1、 静态编译LED驱动
配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
<*> FSC100 LED Device Support
保存退出,重新编译后把zImage拷贝到tftpboot下
$ make zImage
$ cp arch/arm/boot/zImage /tftpboot
重新启动开发板,加载内核并运行。在终端下执行下面操作
# mknod /dev/led c 252 0 //创建设备节点
# ./fsc100_led_test //运行测试程序并观察现象 4个LED会闪烁
//----2、 动态编译LED驱动
配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
<M> FSC100 LED Device Support
保存退出,重新编译后把zImage拷贝到tftpboot下,把驱动模块拷贝到/source/rootfs下
$ make zImage modules
$ cp arch/arm/boot/zImage /tftpboot
$ cp drivers/char/fsc100_led_drv.ko /nfs/rootfs
重新启动开发板,linux运行起来后在终端下操作
# mknod /dev/led c 252 0 //创建设备节点
#insmod fsc100_led_drv.ko //加载LED驱动模块
# ./fsc100_led_test //运行测试程序并观察现象