linux设备驱动开发学习笔记二

来源:互联网 发布:杨辉三角c语言程序居中 编辑:程序博客网 时间:2024/06/03 01:08
       这几天看完了第3章到第六章,速度上比较不给力。速度不给力有自己偷懒的原因,也因为一些内容比较难理解导致进度慢下来。不管怎么样,看完了先做点小笔记吧。 第三章前面简单介绍了内核的组成,因为是简单介绍加上有些课程有讲过这个东西,所以不难理解。这一块过了之后就讲内核的编译及加载。主要讲两个东西的用法,Kconfig和Makefile,Makefile上课学过,也做了个小实验,起码知道就是用来规定编译代码的方法和流程。那个Kconfig就有点懵了,只知道了可以用来定义编译脚本中的配置选项,还有菜单之间的依赖关系,这个东西不自己动手弄一弄似乎不能搞明白,脑子里总是乱乱的。 在下来是linux内核的引导,书上讲解的例子是X86PC的引导过程,简单说一下过程吧。系统启动-->bootloader第一阶段(MBR)-->bootloader第二阶段(LILO、GRUB等)-->启动内核-->运行init进程(用户空间)。 后面一小节突然就讲linux下C的编程特点,感觉有点突兀啦。所以觉得这一小节的内容还是单独写一篇笔记吧,或者直接去看相关的文档吧,毕竟没什么难的地方。 提一下,GNU C的功能还是挺强大的,比标准C扩展了不少,值得研究的地方还是很多,列出几个,这几个用法在demon代码里出现了多次。内建函数和特殊属性声明。特殊属性声明:_ _attribute_ _((ATTRIBUTE)),ATTRIBUTE为属性说明,如果存在多个属性,则已逗号隔开。 第四章是内核模块的讲解。驱动开发属于内核开发,每次自己开发出来的东西都要编译到内核会十分麻烦,因为这样要重新编译整个内核。所以linux下的模块机制十分有效。内核模块程序结构包括:模块加载函数、模块卸载函数、模块许可证声明、模块参数、模块导出符号、模块作者等信息声明。后面详细介绍的小节里多出了个模块使用计数,为什么要对一个模块使用的次数进行记录呢?需要查资料。后面一个讲解模块的编译Makefile也看不太懂,这些东西不实际动手实在比较难真正理解。
原创粉丝点击