相信自己,只有不想做的,没有做不到的。
分类: LINUX
2013-11-07 22:50:41
实验目的】
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
sudo cp fsc100_led_test /source/rootfs
? 设置u-boot环境变量
# setenv serverip 192.168.1.100
# setenv ipaddr 192.168.1.200
# setenv bootcmd tftp 20008000 zImage\; go 20008000
# setenv bootargs root=nfs nfsroot=192.168.1.100:/source/rootfs console=ttySAC0,115200 init=/linuxrc ip=192.168.1.200
# saveenv
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
2、 动态编译LED驱动
? 配置内核时按“空格”选择,配置完成后保存退出
$ make menuconfig
Device Drivers --->
Character devices --->
? 保存退出,重新编译后把zImage拷贝到tftpboot下,把驱动模块拷贝到/source/rootfs下
$ make zImage modules
$ cp arch/arm/boot/zImage /tftpboot
$ cp drivers/char/fsc100_led_drv.ko /source/rootfs
重新启动开发板,linux运行起来后在终端下操作
? 创建设备节点
# mknod /dev/led c 252 0
? 加载LED驱动模块
#insmod fsc100_led_drv.ko
? 运行测试程序并观察现象
# ./fsc100_led_test