linux驱动
文章平均质量分 62
Wenlong_L
这个作者很懒,什么都没留下…
展开
-
linux中的异常体系
基于s5pv210cpu在linux2.6.35.6中的异常体系介绍: start_kernel: setup_arch: early_trap_init:构建异常向量表(一些固有的跳转程序)异常向量表如下所示异常向量表:__vectors_start: ARM( swi SYS_ERROR0 ) THUMB( svc #0...原创 2018-08-09 16:38:46 · 355 阅读 · 0 评论 -
linux内核中的poll机制实现原理
下面是函数调用情况:SYSCALL_DEFINE3(poll, struct pollfd __user *, ufds, unsigned int, nfds, long, timeout_msecs) #define SYSCALL_DEFINE3(name, ...) SYSCALL_DEFINEx(3, _##name, __VA_ARGS__)#d...原创 2018-08-10 16:44:14 · 1170 阅读 · 0 评论 -
linux的input子系统框架源码剖析
整个输入子系统的框架主要分为三个部分,如下图所示:下面是具体的阐述: 首先从核心文件drivers/input/input.c中的入口函数分析:input_init: // 向系统中注册设备,fops使用input_fops err = register_chrdev(INPUT_MAJOR, "input", &input_fops); 下面我...原创 2018-08-11 19:40:42 · 454 阅读 · 0 评论 -
具体LCD设备驱动分析
上一篇博客已经分析过了LCD驱动程序的框架,下面总结一下怎样将自己的LCD设备驱动加到这个驱动架构体系中。总结:我们自己写LCD设备驱动大体上包括如下步骤 一、分配一个fb_info结构体 二、设置这个fb_info结构体 三、register_framebuffer注册这个fb_info结构体 四、进行必要硬件相关的设置(比如gpio、时钟、SFR、中断等)...原创 2018-08-22 09:13:57 · 237 阅读 · 0 评论 -
linux中I2C驱动框架
一、总体介绍四个结构体:控制器部分:struct i2c_adapter i2c控制器(对应SOC部分)struct i2c_agorithm i2c算法(对应i2c怎样穿数据,包括在i2c_adapter中)触摸屏芯片部分:struct i2c_client i2c设备(具有i2c接口的设备)struct i2c_driver i2c设备的驱动(与i2c_...原创 2018-08-27 19:06:46 · 356 阅读 · 0 评论 -
浅析linux内核中信号量与自旋锁
自旋锁:自旋锁不能递归;自旋锁可以用在中断上下文(信号量不可以,因为可能睡眠),但是在中断上下文中获取自旋锁之前要先禁用本地中断;自旋锁的核心要求是:拥有自旋锁的代码必须不能睡眠,要一直持有CPU直到释放自旋锁。信号量:信号量和读写信号量适合于保持时间较长的情况,它们会导致调用者睡眠,因此只能在进程上下文使用,而自旋锁适合于保持时间非常短的情况,它可以在任何上下文使用。如果被保护的共享...原创 2018-08-24 10:38:31 · 327 阅读 · 0 评论 -
linux驱动LCD框架
框架核心文件fbmem.c:fbmem_init: register_chrdev(FB_MAJOR,"fb",&fb_fops) fb_class = class_create(THIS_MODULE, "graphics");该函数中注册了字符设备驱动,注册了一个fops结构体fb_fops,该结构体中有常见的字符设备驱动中该有的操作函数。思考:现在就定义好了操...原创 2018-08-21 16:05:16 · 688 阅读 · 0 评论 -
linux系统中的中断上下部(top half、bottom half)
问题:linux系统中对中断的处理为什么会有上下部之分呢?这得从linux中中断的特性说起:中断处理程序处于中断上下文,而中断上下文是不参与调度的,这样中断上下文不能出现可能休眠的操作,因为中断上下文一旦休眠就会交出cpu,而中断上下文不参与调度,也就是交出cpu时不会保存上下文,这样一旦交出cpu就永远不会回来了。这也就决定了在中断中不能和用户空间进行数据交互,因为这种交互可能会引起休眠。...原创 2018-08-24 17:01:30 · 3384 阅读 · 0 评论