linux 驱动
^^WyZ^^
这个作者很懒,什么都没留下…
展开
-
Linux 中的内存管理单元MMU
MMU (内存管理单元)基础概念1、TLB – 转换旁路缓存,里面存放着少量的虚拟内存与实际物理内存之间的对应关系,被称为快表。2、TTW – 漫游转换表,当TLB中没有对应的转换关系,通过对内存中的转换表的访问来获得虚拟地址和物理地址的对应关系。TTW成功后,结果应写入 TLB中。ARM 处理器寻物理地址过程,①虚拟地址通过TLB快表查出对应的实际物理地址;②TLB对应的缓存中没有对应的表,即转换表遍历硬件(TTW 功能),找到对应转换关系后将其存入TLB缓冲区中。内核空间与用户空间在一个3原创 2021-07-01 16:50:47 · 352 阅读 · 0 评论 -
linux 里面的原子操作
原子操作整型原子操作1、整型原子类型位 atomic_t设置整型原子变量值: void atomic_set(atomic * v , int i);ATOMIC_INIT( i); – 返回已初始化位i 的整型原子变量。2、获得原子数值atomic_read(atomic_t *v);3、原子变量加 / 减void atomic_add(int i,atomic_t * v ) ;void atomic_sub(int i,atomic_t * v) ;4、原子变量自增 / 自减原创 2021-06-30 21:11:44 · 165 阅读 · 0 评论 -
Linux 驱动中断部分
中断1、定义中断 : cpu在运行工作时,出现了某些突发事件,放下目前手上的工作,处理这个突发事件,处理完毕在返回处理中断前的事件。2、Linux里中断处理框架Linux里将中断分为上半部与下半部,原因:进行中断处理的时间需要越短越好,因此将紧急且短暂的事件放在上半部,将处理时间长的事件放入下半部。2.1 中断上下半部差别上半部:紧急且短暂的事件,不能被其他中断打断。下半部: 耗时且较为复杂的事情,永许被其他中断打断。###ps— 自己理解 下半部的功能是不是与单独扔出一个线程类似,相当于扔原创 2021-06-30 20:17:07 · 103 阅读 · 0 评论 -
阻塞IO,非阻塞IO,异步通知
阻塞IO – 在设备资源未准备好,或者设备无法访问时,一直阻塞等待,让线程休眠,出让调度器给其他线程,一直等待到设备可以访问为止。非阻塞IO – 在设备资源无法满足时,或者设备无法访问时,有两种处理办法,要么直接返回,要么一直轮询,轮询需要用到poll(),select()函数,io多路转接,一直阻塞在poll()函数调用直到当设备资源满足。异步通知:一旦设备资源满足时,主动通知应用程序,(ps: 异步事件,无法预料的事件,什么时间到来不知道)...原创 2021-06-20 16:48:59 · 114 阅读 · 0 评论 -
Linux字符设备框架
字符驱动框架利用模块的方式加载字符设备,不直接将字符设备模块编译进内核在写makefile时 可写 obj-m += xxx.o 来编译成模块,或者 obj -$(CONFIG_ISDN) – 此时需要在make menuconfig 中找到对应的模块选择M – 表示编译成模块字符驱动设备框架1、字符设备号申请相关函数与头文件1、int register_chrdev_region(dev_t det, unsigned devnum, const char * devname); --静态原创 2021-06-16 16:51:57 · 154 阅读 · 1 评论