- 博客(5)
- 收藏
- 关注
原创 中断处理(按键驱动)
用今天写的一个按键驱动程序,来说明中断的处理过程:代码如下:#define GPH0CON 0xE0300C00int major = 250;int minor = 0;int devno;void *gphcon=NULL;struct key_device{ char val; struct cdev cdev; struct semaphore sem; wa
2012-12-11 19:18:09 2929
原创 四种IO模型在底层驱动的实现方法
四种IO模型,及其在驱动中实现的方法一、非阻塞IO当设备没有要操作的资源时,它会立即返回。这种操作,一般要在应用层循环检测,比较占用cpu资源。二、阻塞IO这种实现方法需要借助于等待队列对待buf有两种队列,读和写,可以在设备的私有资源中定义两个队列:wait_queue_head_t rq,wq;当读写时,没有相应的资源,并且是以阻塞方式读写设备的,那么,就可以
2012-12-09 14:37:23 2799
原创 LINUX驱动中的并发控制
如果多个应用进程同时访问一个外设,就会产生并发竞态竞态的原因:(1)SMP多处理器(2)进程间的任务抢占(3)中断解决的方法:方法一、中断禁止local_irq_disablelocal_irq_enable中断禁止,只能解决因中断引起的竞态:任务抢占(它是基于中断的)、中断(硬中断,软中断,TASKLET,)方法二、原子操作:特点:使用原子变量的设备只
2012-12-08 16:16:31 1024
原创 file、inode在应用层和驱动层之间的联系
应用层和驱动的衔接,一直是一个老大难问题,若弄不清楚,总觉得驱动写起来似是而非的。下面就说说我对他们的理解,还有就是如何实现一个驱动支持多个上设备的问题。最主要涉及两个机制:inode和file在驱动中:(1)、我们先找到一个设备号devno,可以动态申请,也可以静态设定,假设静态设定为major,minor,通过宏MKDEV(major,minor)来生成devno(2)、构
2012-12-08 15:30:39 6533
原创 U-boot
U-BOOTcortexa8的引导过程,及存储空间的排布芯片内部集成有irom,iram,其中,irom的起始地址就是0地址,程序启动时,先从0地址开始运行,此处集成的是三星厂家的引导程序,它的功能是:通过nand控制器,从nand里面读取boot的前16K(iram的大小为16K)到iram中去执行。uboot编译好后,已经有链接地址,并且大小大于16K,所以完整的uboot不可
2012-12-02 15:23:44 1628
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人