1、实验目的
1、学习和掌握如何将一个驱动程序添加到Kconfig,编译到内核。
二、实验内容
1.编写EduKit-IV试验箱Linux操作系统下LED灯的驱动;
2.编写EduKit-IV试验箱Linux操作系统下LED灯的应用程序。
三、主要仪器设备
1、Ubuntu12.04系统。
2、英培特eduk4-s3c2410试验平台
四、操作方法和实验步骤
在终端中输入命令设置环境变量
source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh
1. 编译busybox
将eduk4-led.c文件复制到内核目录$KERNELDIR/drivers/char
cd $SIMPLEDIR/ 8.1-led_test/driver/
cp eduk4-led.c $KERNELDIR/drivers/char
修改$KERNELDIR/drivers/char目录下的Kconfig文档,如下
cd $KERNELDIR/drivers/char
# Edukit_led config menu
config EDUKIT_LED
tristate "Edukit4 Led"
修改$KERNELDIR/drivers/char目录下的Makefile文档,如下
obj-$(CONFIG_EDUKIT4_LED) += eduk4-led.o
回到终端,输入以下命令配置裁剪内核
cd $KERNELDIR
make menuconfig
选择Load an Alternate Configuration File,键如config-eduk4
再选择Device Drivers
选择Character devices
选择Edukit4 Led并按y键
推出并保存
编译一下Make,将生成zImage,并将其下载到flash中(注意,前面配置的环境变量会迫使arm-linux-gcc跳到2.x版,会导致内核编译失败,故重启终端,可以解决问题)
问题详见:http://www.360doc.com/content/07/0429/23/26230_474510.shtml#
但有一个环境变量source /usr/local/src/EduKit-IV/Mini2410/set_env_linux.sh
还是需要的,因为它指定了make出的zImage放到什么地方,否则会出错
切换路径到$SIMPLEDIR/8.1-led_test/app下
然后make
Make install
Make clean
连接好交叉串口线于板载COM和PC上,并连接好交叉网线
打开minicom
sudo minicom
给平台上电,在minicom下将led_test下载到tmp目录下
给led_test添加执行权限777,并运行led_test。
四个LED灯循环闪烁,驱动添加成功