驱动mmap设备操作与应用程序的mmap系统调用区别?
按键驱动代码?
按键初始化:
struct key_info{
int irq_no;
unsigned int gpio_port;
int key_no;
} key_info_table[4]={
{GPIO_EXINT0 ,GPIO_F1 ,1},
{GPIO_EXINT1 ,GPIO_F2 ,2},
{GPIO_EXINT2 ,GPIO_F3 ,3},
{GPIO_EXINT3 ,GPIO_F4 ,4},
};
//这是一个结构体数组,每个结构体成员是一个自定义的按键类型;
//此时求数组的长度可用:len=sizeof(key_ingo_table)/sizeof(key_info_table[1]);
内存和寄存器最大的区别在于读内存不会改变内存的值,但是读寄存器可能改变寄存器的值。
在应用程序中实现select的系统调用时,阻塞不是发生在驱动程序的poll函数中,而是发生在do_select()中,poll函数只是做了一个登记而已。
终端几种类型:控制台、串口、伪终端。
串口驱动分析:
发送:循环buffer—–>发送FIFO(驱动做)——>发送移位寄存器(硬件做);
接收:接收移位寄存器—–>接受FIFO(硬件做)——>flip_buf(驱动做);