驱动
文章平均质量分 95
侵蚀昨天
https://mp.weixin.qq.com/s/2f8b5pAwEZ6lnpiITZhakQ
展开
-
嵌入式设备系统有无操作系统的区别
随着通信、电子物联网的飞速发展,每天都有各种各样的芯片被研发出来,而要想知道这些芯片怎样工作以及工作后的作用,则离不开软硬件工程师的努力,任何一个计算机系统都是系统中软硬件协作的结果,没有硬件的软件是空中楼阁,没有软件的硬件是一堆废铁,硬件是软件运行的基础。软件上所有操作最终都会被硬件以硬件工作的时序进行工作,硬件建造出来是固定的,而软件则很灵活,可以根据场景适应多种应用,两者相辅...原创 2019-10-28 10:37:28 · 6155 阅读 · 0 评论 -
软件低功耗设计的一点小结
现在一般的电子产品都会在产品上表明“低功耗”两字,但是在什么情况下,低到多少才算低功耗。答案当然是越低越好,不过一般来说说明书上标明的低功耗uA都只能勉强参考,必须在实际使用的时候做到低功耗那才是能做到真正的低功耗。由于工作中有时候需要关注这些,从软件的角度大概简单总结一下: 由于以前是做手机研发,主要关注的是手机休眠时候的底电流,即手机休眠时候使用,下面大部分内...原创 2018-12-13 20:33:51 · 2788 阅读 · 0 评论 -
linux用户空间和内核空间交互的几种方式
1、编写自己的系统调用syscall2、编写驱动程序,read,write,ioctl3、proc文件系统4、sys文件系统5、内存映射mmap原创 2018-12-12 23:32:23 · 1463 阅读 · 2 评论 -
linux用户\内核空间交互之:proc文件系统
proc介绍 proc文件系统是linux中的一个虚拟文件系统,内核运行时将内核中一些关键的数据结构以文件的方式呈现在/proc目录中的一些特定文件中,这样相当于将不可见的内核中的数据结构以可视化的方式呈现给开发者。我们通过观察/proc/xxx文件,可以直观的观察到一些特定的数据结构的值。例如:/proc/cpuinfo :处理器的相关信息的文件/proc/cm...原创 2018-12-11 21:11:19 · 907 阅读 · 0 评论 -
in_interrupt()和 in_irq、in_softirq介绍
先分别看定义:#define hardirq_count() (preempt_count() & HARDIRQ_MASK)#define softirq_count() (preempt_count() & SOFTIRQ_MASK)#define irq_count() (preempt_count() & ...原创 2018-11-01 11:30:15 · 5416 阅读 · 0 评论 -
linux中断介绍(概念、顶半部和底半部、linux中断编程)
中断的概念:指CPU在执行过程中,出现某些突发事件急待处理,CPU暂停执行当前程序,转去处理突发事件,处理完后CPU又返回原程序被中断的位置继续执行.中断的分类:内部中断:来自cpu内部(软件中断、cpu溢出、触发错误等)外部中断:来自cpu外部,由外设触发屏蔽中断和不可屏蔽中断可屏蔽中断:可以通过屏蔽字被屏蔽,屏蔽后该中断不再触发响应不可屏蔽中断:中断无法...原创 2022-02-23 13:34:02 · 2358 阅读 · 0 评论 -
linux驱动中probe函数是怎么调用的
linux驱动的三个概念:设备、驱动、总线probe何时被调用:在总线上驱动和设备的名字匹配,就会调用驱动的probe函数probe函数被调用后,系统就调用platform设备的probe函数完成驱动注册最后工作。下面是probe被调用前的一些流程。device一般是先于driver注册,但也不全是这样的顺序。Linux的Device和Driver的注册过程分别枚举挂在该BUS上所...转载 2018-10-17 16:59:00 · 30164 阅读 · 0 评论 -
linux如何通过ioctl调用驱动的
ioctl作用:应用层的ioctl函数传入的cmd和arg参数会直接传入驱动层的ioctl接口,在对应驱动文件里会对相应的命令进行操作对于传递的ioctl命令有一定的规范,具体可以参考:/include/asm/ioctl.h,/Documentation/ioctl-number.txt 这两个文件 应用层和驱动程序联系如下:最终ioctl是通过系统调用sys_ioctl软中断陷...原创 2018-10-19 13:56:36 · 3340 阅读 · 4 评论 -
linux驱动中读写硬件寄存器(例如__raw_writel)
设备通常会提供一组寄存器来控制设备、读写设备和获取设备状态,即控制寄存器、数据寄存器和状态寄存器。这些寄存器可能位于I/O空间,也可能位于内存空间。当位于I/O空间时,通常被称为I/O端口,位于内存空间时,对应的内存空间被称为I/O内存。再内核访问I/O内存前,需要将设备所处的物理地址映射到虚拟地址 __iomem源码位置:include/linux/compiler.h# defi...原创 2018-10-15 20:30:36 · 7868 阅读 · 1 评论 -
EXPORT_SYMBOL的作用简单介绍
linux驱动代码中经常可以看到这个宏定义,那么这个宏定义的作用是什么呢?其实就是在这个宏定义内的函数或者标签对整个内核是公开其符号表,意思就是直接可以在内核了得其他模块直接调用,而不需要修改内核代码。一个简单的例子:// Module A (moduleA.c) #include<linux/init.h> #include<linux/module.h> #...原创 2018-06-04 15:57:29 · 1054 阅读 · 0 评论