搜索
bottom↓
回复: 7

迅为4412开发板Linux驱动教程之内核开发基础

[复制链接]

出0入0汤圆

发表于 2015-8-10 14:36:11 | 显示全部楼层 |阅读模式

视频教程:http://v.youku.com/v_show/id_XMTMwNjAwMDc0OA==.html

主要内容
• Linux体系结构
• Linux内核结构
• Linux内核源码目录结构

Linux体系结构



从上图可知,Linux体系结构由用户空间和内核空间构成
• 为什么Linux体系要分为用户空间和内核空间?
• 从程序员的角度分析       
– 将linux底层和应用分开,做应用的做应用,做底层的做底层,各干各的。
经济学的原理是,分工产生效率。

从安全性的角度分析,为了保护内核。现代CPU通常都实现了不同的
工作模式。以ARM为例:ARM实现了7种工作模式,不同模式下CPU可
以执行的指令或者访问的寄存器不同:
– (1)用户模式usr (2)系统模式sys(3)管理模式svc(4)快速中断fiq(5)外部中
断irq(6)数据访问终止abt(7)未定义指令异常
– 以(2)X86为例:X86实现了4个不同级别的权限,Ring0—Ring3 ;Ring0下可以
执行特权指令,可以访问IO设备;Ring3则有很多的限制
– 以Android为例:将应用放到Java虚拟机上面运行,应用更加远离底层
• 用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系
统调用”和“硬件中断“来完成用户空间到内核空间的转移

Linux内核结构



System Call Interface (SCI层)
– 为用户空间提供了一套标准的系统调用函数来访问Linux内核。
• Procees Management(PM)
– 进程管理是创建进程(fork、exec),停止进程(kill、exit),并控制他们之
间的通信(signal等)。还包括进程调度,控制活动进程如何共享CPU
• Memory Management(MM)
– 内存管理的主要作用是控制多个进程安全的共享内存区域

• Virtual File Systems(VFS)
– 虚拟文件系统,隐藏各种文件系统的具体细节,为文件操作提供统一的
接口
– Linux提供了一个大的通用模型,使这个模型包含了所有文件系统功能的
集合(一切皆文件)



• Device Drivers设备驱动
– Linux内核中有大量的代码在设备驱动程序部分,用于控制特定的硬件设
备。
– Linux驱动一般分为网络设备、块设备、字符设备、杂项设备
• 网络协议栈
– 内核网络协议栈为Linux提供了丰富的网络协议实现。

目录结构
• Linux内核源码采用树形结构。功能相关的文件放到不同的子目录下面
,使程序更具有可读行。



• arch目录
– arch目录是平台目录。内核支持的所有CPU架构,在该目录下都有对应的
子目录。每个CPU的子目录,又进一步分解为boot,mm,kernel等子目录
,分别控制系统引导,内存管理,系统调用。还有动态调频,主频率设
置部分等









小结
• 2%的程序员写出80%的有效代码
– 刚开始学习的时候最重要的就是看代码,但是学习Linux系统,不能一头
扎进内核中无关的代码中,好几万个文件一辈子也看不完。
• Linux很复杂,很强大。
– 内核源码解压编译后有1.3G,通过裁减编译出的linux镜像zImage不到4M
– 4M源码镜像中,还有大部分不用我们关心
– 我们只需要了解对写代码有帮助的部分,掌握我们需要掌握的代码
– 前面Linux代码中只有红色标记的一部分是需要了解或者掌握的
• 作为开发者只需要学会使用它,我们要重点学习只是其中很小的一部
分。
– 对架构有一定的了解即可
– 学习的重点是驱动开发相关的知识、函数的调用、驱动的协议、简单的
硬件知识

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2015-8-10 17:45:47 | 显示全部楼层
下载下来学习下                                                                             

出0入0汤圆

 楼主| 发表于 2015-8-12 10:40:57 | 显示全部楼层
eryueniao 发表于 2015-8-10 17:45
下载下来学习下                                                                              ...

              

出0入0汤圆

发表于 2015-9-19 15:56:23 | 显示全部楼层
最近也在用讯为的4412在做开发,Audio codec是WM8960,在播放音乐的时候,MIC上无法录制语音了,也不知道是不是驱动设置的不对造成的。
不知道楼主可否指点一二。

出0入0汤圆

 楼主| 发表于 2015-9-21 13:56:31 | 显示全部楼层
Divingbear 发表于 2015-9-19 15:56
最近也在用讯为的4412在做开发,Audio codec是WM8960,在播放音乐的时候,MIC上无法录制语音了,也不知道是 ...

可以在驱动加点打印,看看录音是走的哪个函数,播放音乐走的哪个函数,看看有没有执行到

出0入0汤圆

发表于 2015-9-21 19:21:21 | 显示全部楼层
进来看一看吧

出0入8汤圆

发表于 2015-9-21 21:40:53 | 显示全部楼层
做得不错,以前还画过4412板子,只是还不会软件,

出0入0汤圆

 楼主| 发表于 2015-11-13 09:50:32 | 显示全部楼层
本帖最后由 buguai 于 2015-11-13 09:52 编辑
liaihua1997 发表于 2015-9-21 21:40
做得不错,以前还画过4412板子,只是还不会软件,


            
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-25 09:28

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表