嵌入式实验指导书(3)

2019-02-26 10:53

实验八 基于linux的键盘驱动和应用程序的编写

四、实验原理

本实验采用键盘显示控制芯片hd7279,hd7279是一片具有串行接口的,可同时控制8位数码管,64个按键的智能显示驱动芯片。芯片无需外围元件可直接驱动led,各位独立控制译码/不译码及消隐和闪烁属性;具有(循环)左移,(循环)右移指令;按键内含去抖电路。Hd7279芯片通过中断检测到有按键按下,给cpu发送一个中断信号,cpu检测到中断信号,读取hd7279寄存器,取回相应的键值,Cpu通过指令控制hd7279数码管显示按键值。

五、程的编写步骤

1.键盘驱动程序的编写

键盘的设备驱动程序属于字符设备的驱动,因此,按照字符设备的规则编写。驱动程序名为Arm7279.c,具体程序见Arm7279.c程序源码。

2.将设备驱动编译成驱动模块

使用同一个驱动程序的源代码,当然一定要如下定义某些函数 int __init device_init (void);void __exit device_exit(void);module_init(device _init);module_exit (device_exit);在E:\\软件\\基本实验\\linux3530\\kbd7279\\arm7279driver目录下,存放驱动程序的源码和Makefile文件以及驱动的目标代码,Makefile文件中已编写好交叉编译选项,在linux环境下,在终端里,切换到该目录下,使用make 命令,就能把arm7279.c编译成

arm7279.ko 动态驱动模块。它在

E:\\软件\\基本实验

\\linux3530\\kbd7279\\arm7279driver/arm7279.ko

当编译通过后,启动linux主机下的nfs网络文件系统。

把arm7279.ko文件放到一个主机的共享文件夹下,如/home/nfs下。

启动主机下的系统工具/终端,在终端下,启动minicom 程序,配置好参数,实验系统上电,此时主机下的终端有输出,当linux系统正常启动后,利用ifconfig eth0 命令改变实验系统的IP地址,并且和主机的前三段保持一致,最后一段不同,如:主机为192.168.1.1,则实验系统可为192.168.1.5(除1外的小于255的任意数)。之后,利用mount -o soft,nolock,rsize=1024 -v 192.168.1.5:/home/nfs /tmp命令把主机上存放驱动模块程序的共享的文件目录安装到实验系统的根文件系统下,之后,查看一下,/mnt/yaffs目录下是否加入了主机上的共享目录下的文件。

在目标板窗口,加载驱动程序,输入指令:

[root@Techv_OMAP35xx:/var/volatile/tmp]# insmod arm7279.ko 可通过如下指令查看驱动程序是否加载:

[root@Techv_OMAP35xx:/var/volatile/tmp]# lsmod 由于键盘使用的是中断方式,所以加入了中断请求。 当卸载驱动模块时,使用rmmod arm7279.ko即可。 3.将设备驱动编译进内核

把编好的驱动程序填加内核中去,编译通过后,则驱动程序就安装上了。注意该例在于说明驱动程序的编写步骤,一些头文件、主设备号、硬件的宏定义等均没有详细说明,所以,具体的驱动程序请参看

kernel/drivers/char/arm7279.c。 4. 键盘的应用程序的编写

应用程序名为kbd.c,详细代码说明 #include #include #include #include main(int argc, char **argv) { { }

打开键盘的驱动程序后,利用驱动程序读取键值。把读到的键值通过串口发送到超级终端上显示。

键盘的应用程序,应该在加入键盘驱动之后使用,否则,无法正常运行!

}; for (;;)

ioctl(fd, 0, 0);

printf(\exit(0); int fd;

if ((fd = open(\

close(fd);

六、实验步骤

1.本实验使用实验教学系统的CPU板,在进行本实验时,LCD电源开关应处在关闭状态。 2.在PC串口和实验箱的CPU之间,连接串口直连电缆,在PC网口和实验箱的CPU网口之间,连接网口交叉电缆。

3.搭建开发环境,注意以下操作在/home/nfs1下 4.目标板小键盘驱动程序 (1)位置:

E:\\软件\\基本实验\\linux3530\\kbd7279

a.将kbd7279、lcddriver拷贝到主机/home/nfs1子目录 b.小键盘驱动程序名字:

/home/nfs1/ kbd7279/arm7279driver/arm7279.ko 将arm7279.ko拷贝到主机/home/nfs1子目录 [root@localhost ~]# cd /home/nfs1 [root@localhost nfs1]# ls -l

-rw-r--r-- 1 root root 90953 04-18 10:56 arm7279.ko

(3)在目标板窗口,加载驱动程序 [root@Techv_OMAP35xx:] #cd /tmp [root@Techv_OMAP35xx:/var/volatile/tmp]# ls

arm7279.ko kbd7279

加载驱动程序root@Techv_OMAP35xx:/var/volatile/tmp# insmod arm7279.ko 显示:

k=11c011cRegistering Kbdboard Device on c8a5a000 ARM800 --- > [O] Initializing HD7279 Device --- > [OK] Kbd7279 Driver Installed. set_up Setup

则说明驱动模块正常加载。

root@Techv_OMAP35xx:/var/volatile/tmp# (4)列表驱动程序模块,检查

root@Techv_OMAP35xx:/var/volatile/tmp# lsmod

Module Size Used by Not tainted arm7279 5052 0 - Live 0xbf007000 (5)用chmod命令改变应用程序kbd权限 (在主机终端窗口)

[root@localhost ~]# cd /home/nfs1/kbd7279/app_key [root@localhost app_key]# ls –l

-rw-rw-rw- 1 root root 5427 2011-05-20 kbd -rw-rw-rw- 1 root root 318 2010-05-26 kbd.c -rw-rw-rw- 1 root root 126 2010-05-26 Makefile

设置权限

[root@localhost app_key]# chmod 777 kbd

(6)执行应用程序 (在目标板终端窗口)

root@Techv_OMAP35xx:#cd /tmp/kbd7279/app_key root@Techv_OMAP35xx:/var/volatile/tmp/kbd7279 # ./kbd

Open successful Get a Key:f Get a Key:b Get a Key:7 Get a Key:3

程序运行时,目标板小键盘输入一个字符,目标板终端窗口显示该字符,同时目标板LED显示该字符。

Ctrl+c,停止运行。

5.在目标板终端下,使用卸载驱动模块的命令 rmmod arm7279.ko 当终端上输出 You have uninstall The Kbd7279 Driver succesfully, if you want to install again,please use the insmod command

则说明驱动模块正常卸载。

实验九 基于linux的跑马灯应用程序的编写

四、实验原理

通过上位机键盘控制跑马灯循环的方向,循环的速度。

六、将应用程序动态调试

把user_led目录拷贝到/nfs1文件夹中,进入user_led文件夹内的driver和app文件夹,使用命令 make 命令编译驱动程序生成leddriver.ko和应用程序led。

按着提示要求输入控制命令,LED灯开始显示。

解释:在终端下,键入执行命令./led,则在终端中首先输出LED round show in the EL_ARM800,Please enter the number 1 or 2 or 3 or 4 and L or R then Enter !以及Such as 1L or 2L or 3L or 4L or 1R or 2R or 3R or 4R,then Enter !等输出。其中1,2,3,4,是选择led闪烁的时间间隔,数值越小,闪烁间隔越短。L(l)和R(r)则选择led闪烁的方向。L(l)则确定闪烁方向为向左,R(r)则确定闪烁方向向右。闪烁总是一次闪烁8下,即从一头到另一头,回车键敲一次,则闪烁8下。和时,如选择“1” 敲回车,输入选择时间间隔,之后,选择“L”,敲回车,输入选择方向等等。当需要改变方向和时间间隔时,需要先输入字符“q”,之后连续敲回车键两次次,则可以重新选择参数。当需要退出应用程序时,输入q,回车,再输入q,再回车,则退出应用程序。


嵌入式实验指导书(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:金蝶K3RISE专业版V12.2升级指南

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: