linux驱动
文章平均质量分 81
奔跑的路
这个作者很懒,什么都没留下…
展开
-
driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算是明白一点了。 对于导出符号表,内核文档给出了三种解决方案,见尾部,现在忽略。 现在有两个模块,a模块导出函数myprint,b模块使用该函数,想象一下如果a转载 2014-10-23 12:44:18 · 1983 阅读 · 0 评论 -
Linux内核学习笔记——中断,tasklet和工作队列
对于操作系统来说,中断的实现和裸机代码是不一样的,对于裸机代码来说,它的处理过程更符合下面这个流程,我们在编写裸板驱动代码的时候,一般处理的是硬件中断,而且中断号也是硬件中断号,这个中断号是和CPU寄存器的连线方式直接相关的,只要连线方式一确定,那么外设对应的中断号就确定了。比如在下面这个图中,中断源可以是TIMER或者BUTTON,对应的中断号是6和16,当这些外设产生中断信号的时候,它首先通过...原创 2018-06-10 18:55:45 · 7687 阅读 · 0 评论 -
linux设备模型——总线,驱动,设备间的关系
设备模型之kobject,kset及其关系关于linux设备模型kobject,kset,ktype设备驱动基础0:设备模型之kobject,kset及其关系 设备模型之总线,驱动,设备Linux驱动之bus_register分析Linux设备管理(一)_kobject, kset,ktype分析原创 2017-07-17 09:11:43 · 1204 阅读 · 0 评论 -
内核中_init,_exit中的作用
__init, __initdata等属性标志,是要把这种属性的代码放入目标文件的.init.text节,数据放入.init.data节──这一过程是通过编译内核时为相关目标平台提供了xxx.lds链接脚本来指导ld完成的。 对编译成module的代码和数据来说,当模块加载时,__init属性的函数就被执行; 对静态编入内核的代码和数据来说,当内核引导时,do_basic_s转载 2017-03-25 21:32:06 · 615 阅读 · 0 评论 -
Openwrt学习笔记(三)——内核启动
本来想整理一下linux内核启动的大致过程,后来网上找到了朱老师的关于这方面的付费视频课程,讲的挺好,所以这里就自己偷偷懒,直接将笔记贴上来了,希望没影响到人家的知识产权http://edu.51cto.com/lesson/id-87648.html第一部分、章节目录2.16.1.做好内核分析的准备工作2.16.2.head.S文件分析12.16.3.内核启动的汇转载 2017-02-28 22:18:06 · 5081 阅读 · 1 评论 -
linux设备驱动归纳总结
前言:(总结已经基本写完,这段时间我会从新排版和修正。错误总会有的,望能指正!)前段时间学习了嵌入式驱动,趁着没开始找工作,这段时间我会每天抽出时间来复习。我的总结是根据学习时的笔记(李杨老师授课)、《linux内核设计与实现》第三版、《linux设备驱动程序》第三版和《linux设备驱动开发详解》第一版来归纳的。文章中涉及一些自己的想法,并不能保证所说的一定正确。我也转载 2014-10-16 15:45:26 · 1812 阅读 · 0 评论 -
ioctl----内核和用户空间的交互
头文件:#include 功 能: 控制I/O设备 ,提供了一种获得设备信息或设备控制参数的手段。原型:int ioctl(int fd, ind cmd, …);返回值:成功为0,出错为-1其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控制命令,至于后面的省略号,那是一些补充参数,一般最多一个,有或没有是和cmd的意义相关的。转载 2014-10-16 15:24:36 · 2869 阅读 · 0 评论 -
在内核中通过/proc/kallsyms获得符号的地址
形成过程---------------------------------------------------------------------------./scripts/kallsyms.c负责生成System.map./kernel/kallsyms.c负责生成/proc/kallsyms./scripts/kallsyms.c解析vmlinux(.tmp_vmlinux转载 2014-10-23 16:41:33 · 1221 阅读 · 0 评论 -
scull的阅读笔记
scull的阅读笔记---------scull------------Simple Character Utility for LoadingLocalities,区域装载的简单字符工具。scull设备:scull0,scull1,scull2,scull3.这四个设备分别由一个全局且持久的内存区域组成。可以使用常用命令来访问和测试这个设备,如cp,cat以及shel原创 2014-10-23 15:08:16 · 739 阅读 · 0 评论 -
Linux内核驱动——并发和竞争的处理
加锁和互斥的目的是为了保护共享资源(数据或外设地址)不被多个线程同时访问,而不是保护代码被同时执行 一、信号量信号量为1表示资源可用,为0表示资源不可用,对信号量的加减主要涉及PV操作,进入临界区调用P操作(down)将信号量减1,推出临界区调用V操作(up)将信号量加1.1. 信号量的实现struct semaphore *sem;void semaphore_init(...原创 2018-07-28 17:11:43 · 2102 阅读 · 1 评论