摘要: poll机制是应用程序主动检测相应的事件有没有发生,没发生进程就休眠,如果事件发生了,应用程序再执行相应的操作(如读写),对应用程序来说是一种主动的检测机制。 不用poll机制,只用中断方式的话,需要应用程序去调用read、write函数,从而调用驱动程序中的xxx_read\write函数,如果设 阅读全文
posted @ 2021-06-01 23:25 Feiiiiii 阅读(532) 评论(0) 推荐(0) 编辑
摘要: poll机制概述:当应用程序调用poll函数,进程会休眠一段时间,等待事件发生;休眠期间事件发生就被唤醒,poll函数立即返回,返回值为1;如果超过设定的休眠时间事件还是没发生,poll函数也会返回,返回值为0。 对于系统调用poll或者select,他们对应的内核函数都是sys_poll,分析sy 阅读全文
posted @ 2021-06-01 00:14 Feiiiiii 阅读(645) 评论(0) 推荐(0) 编辑
摘要: 在xxx_open函数中注册中断函数: request_irq的最后参数是dev_id,我的理解是他可以像次设备号一样,可以由我们自己定义他是什么含义。 写真正的中断处理函数: 当中断发生时会调用这个函数,传入的参数是 相应的中断号 和 注册中断时传入的dev_id 按键驱动程序中,为了描述一个引脚 阅读全文
posted @ 2021-05-30 21:21 Feiiiiii 阅读(435) 评论(0) 推荐(0) 编辑
摘要: request_irq函数做的工作: 1、分配一个irqaciton结构体 2、把自己的中断程序赋值给aciton 3、把这个结构体放入irq_desc[irq]的aciton链表里 把aciton放入链表之前,还需要判断这个中断的标志,如果是IRQF_SHARED,表示可以多个action共享中断 阅读全文
posted @ 2021-05-30 00:17 Feiiiiii 阅读(119) 评论(0) 推荐(0) 编辑
摘要: 以中断产生的异常为例,产生中断异常以后,最终会调用asm_do_irq函数。 asm_do_irq函数是中断处理流程的入口。 内核里定义了一个irq_desc结构体数组,用来描述各个中断源的状态和行为: asm_do_irq函数会做这些事: 1、定义一个irq_desc结构体类型的指针,指向产生的中 阅读全文
posted @ 2021-05-29 23:32 Feiiiiii 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 由early_trap_init()函数构造异常向量基址为0xffff0000的异常向量表: 发生某种异常时,会跳转到相应的处理函数,比如如果发生中断,则会跳到vector_irq: 在vector_irq中保存现场后又会跳到__irq_usr或者__irq_svc(用户模式进中断会跳到__irq_ 阅读全文
posted @ 2021-05-29 20:28 Feiiiiii 阅读(366) 评论(0) 推荐(0) 编辑
摘要: 主设备号对应一个驱动程序 在创建设备文件时,可以指定一个设备文件的次设备号 可以为每个led灯创建不同名字的设备文件,这些不同的设备文件有相同的主设备号,不同的次设备号 当打开某个设备文件时,会根据文件的主设备号找到相应的驱动程序,执行xxx_open、xxx_write驱动函数,在驱动函数中获取自 阅读全文
posted @ 2021-05-28 23:18 Feiiiiii 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 先看/etc/init.d/rcS文件的内容 echo /sbin/mdev > /proc/sys/kernel/hotplug的意思就是当内核出现热插拔事件时,就调用mdev这个应用程序,去根据系统信息创建设备节点。 系统信息怎么来? 驱动程序中定义了一个类和类设备 在first_drv_ini 阅读全文
posted @ 2021-05-26 22:22 Feiiiiii 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 在编译模块之前首先要:配置并编译内核 板子中烧写的内核是打过补丁的linux-2.6.22.6,在编译驱动程序时,要在Makefile里指定使用的linux源码路径,也就是说驱动程序的编译依赖于内核源码,具体为啥不是很懂。 现在暂时理解为:既然驱动程序要编译为内核的一个可加载的模块,那模块总得知道它 阅读全文
posted @ 2021-05-24 23:25 Feiiiiii 阅读(63) 评论(0) 推荐(0) 编辑
摘要: ifconfig eth0 up 启动单板网卡设备 ifconfig eth0 192.168.x.x设置单板ip ping 服务器看看能不能ping通 挂接NFS需要: 服务器允许某个目录可被挂接 ①服务器的etc/exports这个文件里配置,加入可被挂载的目录的路径(最后一行是新加入的) ② 阅读全文
posted @ 2021-05-23 16:38 Feiiiiii 阅读(115) 评论(0) 推荐(0) 编辑