嵌入式系统001-内核开发基础

一、linux内核驱动开发基础

.Linux体系结构

.Linux内核结构

.Linux内核源代码目录结构

Linux体系结构

在这里插入图片描述
.从上图可知,Linux体系结构由用户空间和内核空间构成
.为什么Linux体系要分为用户空间和内核空间?
.从程序员的角度分析

将linux底层和应用分开,做应用分开,做应用的做应用,做底层的做底层,歌干各的。经济学的原理是,分工产生效率。
.ARM的7种工作模式,不同模式下CPU可以执行的指令或者访问的寄存器不同:
(1)用户模式usr
(2)系统模式sys
(3)管理模式svc
(4)快速中断 fiq
(5)外部中断 irq
(6)数据访问终止
(7)未定义指令异常
以x86为例:X86实现了4个不同级别的权限,Ring0-Ring3;Ring0下可以执行特权指令,可以访问IO设备Ring3则有很多的限制
.用户空间和内核空间是程序执行的两种不同状态,我们可以通过“系统调用”和“硬件中断“来完成用户空间到内核空间的转移

Linux内核结构

. System Call interface (SCI层)
为用户空间提供一套标准的系统调用函数来访问Linux内核。
. Procees Management(PM)
进程管理是创建进程(fork、exec),停止进程(kill、exit),并控制他们之间的通信(signal等)。还包括进程调度,控制活动进程如何共享CPU
. Memory Management(MM)
内存管理的主要作用是控制多个进程安全的共享内存区域
. Virtual File Systems(VFS)
1.虚拟文件系统,隐藏各种文件系统的具体细节,为文件操作提供统一的接口
2.Linux提供了一个大的通用模型,使这个模型包含了所有文件系统功能的集合(一切皆文件)
. Device Drivers设备驱动
1.linux内核中有大量的代码在设备驱动程序部分,用于控制特定的硬件设备。
2.Linux驱动一般分为网络设备、块设备,字符设备,杂项设备
. 网络协议栈
内核网络协议栈为linux提供了丰富的网络协议实现.

目录结构

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

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

小结

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值