嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统。由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户的应用程序等四个部分组成,用于实现对其他设备的控制、监视或管理等功能。
两种指令集:CISC 复杂指令集和RISC 精简指令集
引入Thumb16位指令集,是压缩指令集,运行没有ARM快,但是节省空间。
ARM处理器可以在AMR指令集和Thumb指令集状态下进行切换
包括31个通用寄存器和6个ARM处理器。ARM总共有7种不同的处理器模式,分别为用户模式,快速中断模式,外部中断模式,管理模式,数据访问中止模式,未定义指令中止模式,系统模式。
指令存储和数据存储是分开的,采用存储器地址对齐。
实现虚拟内存,就是程序,数据,堆栈的总大小可以超过实际可用的物理内存大小,实现方式就是把需要运行的部分送到内存,而其他未使用的部分保存在磁盘上,这个调度是由操作系统来做的。需要有中转站FCSE附加硬件,将虚拟地址转换为修改的虚拟地址。
总共有7种处理异常,复位异常,未定义指令异常,软件中断异常,指令预取终止异常,数据访问终止异常,外部中断请求被触发,快速中断请求被触发。
立即寻址,寄存器寻址,寄存器偏移寻址,寄存器间接寻址,基址变址寻址,多寄存器寻址,堆栈寻址,相对寻址。
一是地址映射,二是对地址访问的保护和限制。虚拟地址被送到MMU,把虚拟地址映射为物理地址。
进程是由进程标识符PID表示的,三种进程调度策略,包括分时调度策略,先到先服务的实时调度策略,时间片轮转的实时调度策略。
Rootf根文件系统,嵌入式系统一般从Flash启动,最简单的方法是将Rootf装载到RAM的RamDisk。
主要的存储设备为RAM和ROM,采用Flash存储器。
由汇编和c语言联合编写而成。初始化硬件设备和建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。
技术上指的是一个提供硬件抽象层,磁盘及文件系统控制,多任务等功能的系统软件。
方法一,通过insmod命令手工将module载入内核。方法二,根据需要载入module(demand loaded module)。
正在使用的模块不能被卸载。系统调用module的cleanup子程序,释放内核资源,修改reference list,释放分配给该module的内核内存。
使用Boot Loader将内核映像载入,内核数据结构初始化内核引导和外设初始化,加载init进程和inittab脚本,启动运行rc启动脚本,shell的启动。
Linux中文件系统具有树结构,新mount进来的文件系统被添加到这个树结构。所有的文件系统无论什么形式都可以被mount到目录里,文件系统内的文件构成这个目录的内容。
所有嵌入式系统的启动都至少需要使用某种形式的永久性存储设备,他们需要合适的驱动程序,当前在嵌入式Linux中三种常用的块驱动程序可以选择,包括Blkmem驱动层,RamDisk驱动层,MTD驱动层。
三类硬件设备,包括字符设备,块设备和网络设备。
# mknod /dev/lp0 c 6 0
使用mknod命令可以创建指定类型的设备文件,同时为其分配相应的主设备号和次设备号,生成设备文件要以root权限用户访问。/dev/lp0 是设备号,c表示字符设备,b表示块设备,6是主设备号,0是次设备号。次设备号可以是0-255之间的值。
block 块设备驱动
char 字符设备驱动
cdrom包含了所有的CDROM代码,CDROM设备
pci为PCI伪设备驱动源码
scsi 为SCSI设备驱动
net网络驱动源码
sound所有声卡驱动源码
解决快速数据访问的有效方法。DMA控制器可以不需要处理器的干预,在设备和系统内存高速传输数据,提高了与设备通信的吞吐量,免除大量计算开销。DMA控制器由主存地址寄存器,数据数量寄存器,DMA的控制/状态逻辑,DMA请求触发器,数据缓存寄存器和终端结构。