1.利用拨码开关来实现GPIO的输入
先看一下原理图
KP_COL0→GPL2_0
datasheet:GPL2CON,GPL2DAT,GPL2PUD
Add = Base Address+Offset
GPL2CON = 0x1100_0000 + 0x0100 = 0x11000000 + 0x0100
s3c_gpio_cfgpin
GPL2DAT = 0x1100_0000 + 0x0104 = 0x11000000 + 0x0104
gpio_set_value
GPL2PUD = 0x1100_0000 + 0x0108 = 0x11000000 + 0x0108
寄存器不一定都是32位的,也有16和8位的
写寄存器的时候需要注意
2.驱动
只使用module_init和module_exit,注册设备以及注册驱动都不弄了,简化
加载驱动的时候,小灯亮。卸载的时候小灯灭
3.Makefile文件简单修改
4.测试
程序源码
#include <linux/init.h>
#include <linux/module.h>
#include <asm/io.h>
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("TOPEET");
//用于存放虚拟地址和物理地址
volatile unsigned long virt_addr,phys_addr;
//用户存放三个寄存器的地址
volatile uns