ioremap_gpio子系统_中断
【一】、ioremap
void *ioremap(phys_addr_t offset, unsigned long size)
功能:物理地址到虚拟地址映射
参数:
@offset 物理地址
@size 映射地址范围
返回值:成功返回映射后的虚拟地址,失败返回NULL
void iounmap(void __iomem *addr)
功能:解映射
参数:
@addr 虚拟地址
【1】led驱动:
字符设备驱动
register_chrdev
创建设备文件 --- class_create device_create
misc杂项设备
参考代码
【二】、GPIO子系统
struct gpio {
unsigned gpio; //gpio号
unsigned long flags; //GPIOF_DIR_OUT GPIOF_DIR_IN GPIOF_INIT_LOW
//GPIOF_INIT_HIGH GPIOF_OUT_INIT_LOW
//GPIOF_OUT_INIT_HIGH
const char *label; //名字
};
gpio号:s5p6818
GPIOA[31:0] : 0 - 31
GPIOB[31:0] : 32-63
GPIOC[31:0] : 64-95
GPIOD[31:0] :
GPIOE[31:0] :
int gpio_request(unsigned gpio, const char *label)
功能:向内核请求注册使用gpio
参数:
@gpio gpio号
@label 名字
返回值:失败返回负数错误码
void gpio_free(unsigned gpio) //释放gpio
int gpio_request_one(unsigned gpio,unsigned long flags, const char *label)
功能:向内核请求注册使用gpio,并设置gpio引脚功能
参数:
@gpio gpio号
@flags gpio功能
@label 名字
返回值:失败返回负数错误码
void gpio_free(unsigned gpio) //释放gpio
int gpio_request_array(const struct gpio *array, size_t num)
功能:向内核请求注册使用一组gpio,并设置gpio引脚功能
参数:
@array struct gpio结构体指针
@num 个数
返回值:失败返回负数错误码
void gpio_free_array(const struct gpio *array, size_t num)
int gpio_direction_input(unsigned gpio)
功能:设置gpio引脚的方向为输入方向
参数:
@gpio gpio号
int gpio_direction_output(unsigned gpio, int value)
int gpio_get_value(unsigned gpio)
void gpio_set_value(unsigned gpio, int value)
int gpio_to_irq(unsigned gpio)
功能:将gpio号转成中断号
参数:
@gpio gpio号
返回值:成功返回中断号,失败返回负数错误码
【三】中断