基于ARM9开发板mini2440原理图,分析LED、按键、蜂鸣器硬件连接情况,结合设备驱动相关知识,实现了按键控制流水灯、蜂鸣器设备,编写相应的驱动程序,实现一定的功能。
本文是我实现的其中的一个功能:其中一个按键驱动LED亮,一个按键驱动LED全灭。
一、实验分析
由下面两图可以看出每个按键所用到的外部中断分别是EINT8、EINT11、EINT13、EINT14、EINT15、EINT19,所对应的IO口分别是GPG0、GPG3、GPG5、GPG6、GPG7、GPG11。按键对应的CPU管脚GPF0-GPF4都是占两位(如:GPF0[1:0])。按键是一种中断,要想让按键工作在中断模式下,就要设置GPF0-GPF4(GPF3除外)管脚都设置在中断模式下,即为10。对于LED对应的CPU管脚GPB5~GPB8也是占两位。要想让LED工作,就要让LED工作在输出模式下,即对应管脚设置为01.
二、实验设备与软件环境
1、操作系统:Linux虚拟机、Red Hat Enterprise Linux 6.3。
2、硬件平台:FriendlyARM开发板mini2440。
3、软件:SecureCRT 8.1。
4、内核版本:linux 2.6.32.2。
三、具体操作过程
1.编写button驱动代码:final.c
(1)在/opt /shiyan目录下创建finally文件夹
①在/opt/shiyan目录下右击鼠标打开终端;
②输入“mkdir finally”,创建一个名为finally的文件夹
(2)输入“cd lesson_button”命令,进入lesson_button目录下
(3)输入gedit final.c
(4)编写final.c代码(源代码见附录1)
2. 进入finally目录下编写Makefile文件
3. 在finally目录执行make命令,生成final.ko文件
4.编辑编译应用程序(源代码见附录2)
(1)在/opt /shiyan/finally目录下编辑应用程序final_test.c
(2)在/opt /shiyan/finally目录下执行arm-linux-gcc button_test.c -o button_test命令
5.将生成的final.ko文件和final_test文件发送到开发板上
(1)打开window上的secureCRT软件
(2)连接mini2440开发板,把USB串口接到电脑
(3)输入“rz”命令,添加final.ko文件和final_test文件