嵌入式系统知识点整理
嵌入式系统最初的应用是基于单片机的
Ready System开发出世界上第一个商用商用嵌入式实时内核(VTRX32)
嵌入式系统的定义:以应用为中心,以计算机技术为基础,软硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统
SOC(System on Chip):片上系统——在单芯片上集成了数字信号处理器、微控制器、存储器、数据转换器、接口电路等电路模块,可以直接实现信号的采集、转换、存储、处理等功能,其中知识产权核设计是SOC设计的基础
IP核是指具有知识产权的、功能具体、接口规范、可在多个集成电路设计中重复使用的功能模块,是实现系统芯片(SOC)的基础
IP核3个程度的设计:行为、结构、物理
行为——软核
结构——固核
物理——硬核嵌入式系统的特点:系统内核小、专用性强、系统精简、高实时性、多任务性、有专门的开发工具和环境
嵌入式系统的组成:硬件层、中间层、系统软件层、应用软件层
中间层(板级支持包,BSP,Board Support Package):将系统的上层软件和底层硬件分离开来,使得系统的底层驱动程序与硬件无关
板级支持包的特性:硬件相关性和操作系统相关性
-
嵌入式系统的硬件初始化:
- 片级初始化:完成CPU的初始化
- 板级初始化:完成CPU以外的其他硬件设备的初始化
- 系统级初始化:完成软件初始化
设备驱动程序:就是一组库函数,用来对硬件进行初始化和管理,并向上层软件提供良好的访问接口
-
设备驱动程序的基本功能:
- 硬件启动
- 硬件关闭
- 硬件启用
- 硬件停用
- 读操作
- 写操作
-
冯诺依曼体系结构(普林斯顿结构)和哈佛体系结构的区别
冯诺依曼体系结构是将程序指令存储器和数据存储器合并在一起的存储器结构。程序和数据共用一个存储空间,程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。采用统一的地址和数据总线,程序指令和数据的宽度相同。
哈佛体系结构是将程序指令存储器和数据存储器分开的存储器结构。该结构是一种并行结构,它的主要特点是将程序和数据存储在不同的存储空间中,即程序存储器和数据存储器是两套相互独立的存储器,每个存储器独立编址、独立访问。与两个存储器相对应的是系统中的4套总线:程序的数据总线和地址总线,数据的数据总线和地址总线
小端字节顺序存储法:低字节数据存放在内存低地址处,高字节数据存放在内存高地址处
大端字节顺序存储法:低字节数据存放在内存高地址处,高字节数据存放在内存低地址处内核:是操作系统的一个组件,它包含了操作系统主要的功能,即OS的特性和相互之间的依赖关系。这些功能包括任务管理、存储管理、输入输出设备管理、文件系统管理
-
嵌入式系统的分类:
- 按系统类型分类:商用系统、专用系统和开源系统
- 按响应时间分类:实时操作系统和非实时操作系统
- 按软件结构分类:单体结构、分层结构、微内核结构
优先级反转:一个任务等待优先级比它低的任务释放资源而被阻塞,如果这时有中等优先的就绪任务,阻塞会进一步恶化。它严重影响了实时任务的完成。
VxWorks:实时付费闭源嵌入式操作系统
windows CE:实时付费开源嵌入式操作系统
μC/OS:实时付费开源嵌入式操作系统
Linux:分时免费开源嵌入式操作系统嵌入式应用软件的开发方式一般是:在宿主机上搭建开发环境,进行应用程序编程和交叉编译。然后在宿主机和目标机之间建立联系,将应用程序下载到目标机上进行交叉调试。经过调试和优化,最后将应用程序固化到目标机中实际运行。
ARM7架构采用了三级流水线:取址、译码、执行
ARM9架构采用了五级流水线:取址、译码、执行、数据缓存、写回ARM微处理器共有37个32位寄存器,其中31个为通用寄存器,6个为状态寄存器
R0-R7:在所有的运行模式下,未分组寄存器都指向同一个物理寄存器,未被系统用作特殊的用途
R8-R14:分组寄存器
其中:
R13在ARM指令中常用作堆栈寄存器
R14连接寄存器:保存子程序的返回地址
R15用作程序计数器(PC)-
ARM的7中运行模式及含义
- 用户模式:ARM处理器程序执行的正常状态
- 管理模式:系统的保护模式
- 系统模式:系统运行具有特权的操作系统任务
- 快速中断模式:用于高速数据传输和通道管理
- 外部中断模式:用于相应正常的中断
- 数据访问终止模式:当指令或数据预取终止时进入该状态,用于虚拟存储和存储保护
- 未定义指令中止模式:当系统运行未定义的指令时进入该状态,用于支持硬件协处理器的软件仿真
当程序的正常执行流程发生暂停时,称之为异常
-
ARM体系结构支持的异常模式以及进入模式
- 复位->管理模式
- 数据中止 -> 数据访问中止模式
- 指令预取中止 -> 数据访问中止模式
- 软件中断 -> 管理模式
- 快速中断请求FIQ -> FIQ
- 外部中断请求IRQ -> IRQ
- 未定义指令异常 -> 未定义指令中止模式
-
Boot Loader两种操作模式
- ”启动加载”模式
- “下载”模式
-
Boot Loader启动过程分为两个阶段:
- 初始化硬件配置
- 加载操作系统
第一阶段:异常中断初始化->相关必需硬件初始化->将第二阶段代码复制到内存->跳到第二阶段的内存处
第二阶段:BSS清零->设置各种模式下的堆栈->开IRQ中断->跳转到C代码的MAIN入口 一个任务,也称作为一个线程,是一个简单的程序,该程序可以认为CPU完全只属于该程序
-
μC/OS_II有5中状态:
- 休眠态
- 就绪态
- 执行态
- 中断
- 挂起或等待
-
根据prio的值来修改就绪表的程序是什么?
OSRdyGrp |= OSMapTb1[prio >> 3]; OSMapTb1[prio >> 3] |= OSMapTb1[prio & 0x07];
-
根据就绪表如何获得优先表中当前优先级最高的任务的任务号?
OSPrioHighRdy = (INT8U)((OSUnMapTb1[OSRdyGrp] << 3) + OSUnMapTb1[OSRdyTb1[OSUnMapTb1[OSRdyGrp]]])
-
死锁:在一组任务当中,每个任务占有着若干的资源,同时又等待其他任务占用的资源,从而造成所有任务都无法进展下去的现象,这种现象叫做死锁
- 互斥条件
- 环路等待
- 不可剥夺
- 请求和保持
可重入代码是指一段代码(如一个函数)可以被多个任务同时调用,而不需要担心数据被破坏。就是说可重入函数可以在任何时候被中断执行,过一段时间以后又可以继续运行,而不会因为在函数中断时被其他任务重新调用,影响函数中的数据。
-
S3C2410A微处理器的两级引导的方式
- 第一级引导是在系统复位时,CPU判断引脚OM[1:0]的状态,如果OM[1:0]的配置是00,CPU通过Nand Flash控制器将Nand Flash的前4K字节的数据复制到SRAM中,
并跳转到SRAM中,运行该程序 - 第二级引导在Nand Flash的前4K字节的数据一般存放着操作系统的Boot loader。当该程序段运行时,将初始化Nand Flash控制器,SDRAM,调整系统总线和接口电路。
然后把位于其他地方的Boot loader复制到SDRAM中,并跳转到SDRAM中,执行Boot loader,引导操作系统及运行其他应用程序。
- 第一级引导是在系统复位时,CPU判断引脚OM[1:0]的状态,如果OM[1:0]的配置是00,CPU通过Nand Flash控制器将Nand Flash的前4K字节的数据复制到SRAM中,
上一篇: C语言实现卡尔曼滤波
下一篇: 嵌入式系统总结1