嵌入式系统设计实验五
合肥学院
嵌入式系统设计实验报告
(20 13- 2014第2学期)
专 业: 11级自动化卓越班
实验项目: 嵌入式Linux设备驱动开发实验
实验成员:
指导老师: 干 开 峰
实验时间: 2014 年 5 月 23 日
电子信息与电气工程系
2014年4月制
实验五 嵌入式Linux设备驱动开发试验
一、实验目的
1、实习嵌入式Linux下设备驱动程序的设计方法的基本方法。
2、掌握字符设备驱动程序的设计和调试方法。
3、实习设备驱动的测试和使用。
二、实验内容
本实验要求学生熟悉嵌入式Linux下设备驱动程序的设计方法的基本方法,掌握字符设备驱动程序的设计和调试方法,完成LED驱动程序的编写和调试,并在目标开发板上测试。
三、实验过程
1、最简单的LED 驱动
在drivers/char 目录下,我们建立一个驱动程序文件mini2440_leds.c,
内容如下:(部分截图)
接下来,我们添加LED 设备的内核配置选项,打开drivers/char/Kconfig 文件
接下来,再根据该驱动的配置定义,把对应的驱动目标文件加入内核中,打开
linux-2.6.32.2/drivers/char/Makefile 文件
接上面的步骤,在内核源代码目录下执行:make menuconfig 重新配置内核
依次选择进入如下子菜单项:
Device Drivers --->
Character devices --->
如图,进入LED 驱动配置菜单,在此按空格键选择“ LED Support for Mini2440 GPIO LEDs”选项,并退出保存内核配置。
在内核源代码根目录下执行;make zImage,把生成的新内核烧写到开发板中。
2、基于中断的按键驱动程序
(1)驱动程序分析及编写
在/linux-2.6.32.2/drivers/char/目录下创建一个新的驱动程序文件mini2440_buttons.c,内容及详细注释如下:(部分截图)
(2)把按键驱动加入内核
接下来,我们把按键驱动加入到内核中,打开linux-2.6.32.2_fa/drivers/char/Kconfig 文件
接下来,再根据该驱动的配置定义,把对应的驱动目标文件加入内核中,打开
linux-2.6.32.2/drivers/char/Makefile 文件
这样,我们就在内核中添加做好了LED 驱动
(3)配置编译新内核
接上面的步骤,在内核源代码目录下执行:make menuconfig 重新配置内核,
依次选择进入如下子菜单项:
Device Drivers --->
Character devices --->
如图,进入按键驱动配置菜单:
在此按空格键选择“ Buttons driver for FriendlyARM Mini2440 development boards(NEW) ”选项,并退出保存内核配置。在内核源代码根目录下执行;make zImage,把生成的新内核烧写到开发板中。
3、添加PWM 控制蜂鸣器驱动
(1)编写添加驱动程序
在 linux-2.6.32.2/drivers/char/目录下,增加一个驱动程序文件mini2440_pwm.c,
内容如下:(部分截图)
(2)把驱动程序加入内核
打开 linux-2.6.32.2/drivers/char/Kconfig 文件,加入如下部分
再打开linux-2.6.32.2/drivers/char/Makefile,把该驱动程序的目标文件根据配置定义加入
(3)配置编译新内核
接上面的步骤,在内核源代码目录下执行:make menuconfig 重新配置内核
依次选择进入如下子菜单项:
Device Drivers --->
Character devices --->
如图,进入PWM 控制蜂鸣器的配置菜单:
在此按空格键选择“ Buzzer driver for FriendlyARM Mini2440 development boards(NEW)”选项,并退出保存内核配置。在内核源代码根目录下执行;make zImage,把生成的新内核烧写到开发板中。
(4)测试驱动
①测试led驱动
首先,新建一个leds_test.c文件,然后在虚拟机终端执行arm-linux-gcc -o leds_test leds_test.c即可生成可执行目标文件led