课程列表

基本问题

开源资源

好好学习天天向上

联大大纲—通信电子 ;教师介绍; 单片机课程学习经验- 学习路线图; 1.概述 -应用 -定义 -特点 -构成; 2.嵌入式处理器 —DIY CPU处理器ARM处理器Cortex-A8S5PV210讨论; 3.汇编语言 -作业 4.Bootloader -作业 5.Linux内核移植 6.嵌入式Linux程序设计 7.图形用户接口QT 8.其他框架介绍; 9.嵌入式物联网应用系统设计

按键中断驱动及控制

 

驱动程序列表

s5pv210_buttons.ckeypad_test设备驱动程序源文件。

s5pv210_buttons_timer():完成启动定时器功能、唤醒中断。

button_interrupt():实现按键中断处理。

s5pv210_buttons_read():完成驱动读写功能。

button_dev_init():完成端口资源申请。

 

应用层程序列表

keypad_test.c:应用层用户测试程序源码。

Makefile:驱动程序编译配置文件。

 

应用层功能:初始化端口资源,设置中断模式检测案件状态,在控制台输出按键状态信息。

相关寄存器

1GPH2CON 配置寄存器

2GPH2DAT 数据映射寄存器

3GPH2PUD 上下拉电阻寄存器

4GPH2DRV 驱动强度配置寄存器

混杂设备

Linux 内核使用struct miscdeivce 来描述一个混杂设备。

struct miscdevice {

    int minor;

    const char *name;

    const struct file_operations *fops;

    struct list_head list;

    struct device *parent;

    struct device *this_device;

    const char *nodename;

    mode_t mode;};

参数minor是这个混杂设备的次设备号,若由系统自动配置,则可以设置为MISC_DYNANIC_MINOR

参数name是设备名。使用时只需填写minor次设备号,*name设备名,*fops 文件操作函数即可。

Linux内核使用misc_register函数注册一个混杂设备,使用misc_deregister移除一个混杂设备。注册成功后,Linux内核为自动为该设备创建设备节点,在/dev/下会产生相应的节点。

注册函数:

int misc_register(struct miscdevice *misc)

输入参数:struct miscdevice

返回值:0 表示注册成功。负数表示未成功。

卸载函数:

int misc_deregister(struct miscdevice *misc)

输入参数:struct miscdevice

返回值:0 表示注册成功。负数表示未成功。

源码编译

02_keypad目录下使用make命令对led.c编译。将生成可执行目标文件keypad_test

[root@localhost leds]# make clean                                        

rm -rf *.o led                                                           

[root@localhost leds]# make                                              

arm-linux-gcc -Wall -O2 keypad_buttons.c -o keypad_test                 

[root@localhost leds]# ls                                               

driver keypad_buttons.c keypad_test Makefile                            

[root@localhost leds]# chmod 777 keypad_test                            

[root@localhost leds]#                                                          

当前目录下生成测试程序keypad_test

运行keypad_test程序(NFS 方式)

1.挂载宿主机目录

启动CBT-SuperIOT型实验系统,连好网线、串口线。通过串口终端挂载宿主机实验目录。

[root@Cyb-Bot /]# mount -t nfs -o nolock 192.168.1.7:/CBT-SuperIOT//mnt/nfs

2.进入串口终端的NFS 共享文件目录

[root@Cyb-Bot /]# cd /mnt/nfs/SRC/exp/driver/02_keypad/                 

[root@Cyb-Bot 02_keypad]# ls                                            

Makefile driver keypad_buttons.c keypad_test                            

[root@Cyb-Bot 02_keypad]#                                                       

3.运行应用

[root@Cyb-Bot 02_keypad]# ./keypad_test                                  

执行上述命令后,当操作目标板上按键后,可在控制台看到输出结果。

key 1 is down                                                            

key 1 is up                                                             

key 2 is down                                                           

key 2 is up                                                             

……