大家不要只收藏不关注呀,哪怕只是点个赞也可以呀!🤣
粉丝私信发邮箱,免费发你PDF!!!
因为准备备考中级嵌入式设计师证书,所以买了一些资料回来准备复习,本书为倪奕文老师编制的书,如果大家有时间和精力还是很建议大家去买一本的,这本书反而是能够让小白很快了解嵌入式所学知识的书籍,特地做此笔记,我希望我做一些工作能够让你花更少的时间去了解更多的知识,并尽量不要走弯路,我会尽量把自己理解到的东西用更容易懂的话写出来,一家之言,如果有错欢迎指正批评,望共同进步,接下来我将每四学时的内容整理一次发布。
一、嵌入式系统基础
1、嵌入式硬件基础(除进制转换外,考选择题)
1.嵌入式微处理器结构
冯-诺依曼结构将程序和数据存放到同一存储器的不同物理地址,采用单一的地址和数据总线,程序指令和数据的宽度相同。指令执行耗费时间久,高速运算时会出现瓶颈效应。
哈佛结构时并行的体系结构,将数据与程序存储在不同的存储器中,这样存放数据的存储器叫做数据存储器,存放程序的存储器叫做程序存储器。存在两套独立的总线,可以同时获取指令(来自程序存储器)和操作数(来自数据存储器),使得数据的吞吐率提高了一倍。
2.计算机硬件组成
硬件系统由运算器、控制器、存储器、输入设备、输出设备五部分组成。
存储器有内部存储器(速度快、容量小)和外部存储器(速度慢,容量大)。
外设:键盘鼠标显示器等等
主机:CPU(运算器、控制器、寄存器组、内部总线)+主存储器,cpu的功能是实现程序控制、操作控制、时间控制、数据处理等
运算器:算术逻辑单元、累加寄存器、数据缓冲寄存器、条件状态寄存器
运算器的功能是实现所有的算术运算与逻辑运算
控制器:指令控制器、程序计数器、地址寄存器、指令译码器
控制器的功能:控制整个CPU工作,包括程序控制、时序控制
CPU依据指令的不同阶段来区分二进制的指令和数据,因为在指令周期的不同阶段,指令会命令CPU去取指令或者数据。
3.数据的表示
进制的转换:16进制用0x或H,例如0x18F或18FH都表示十六进制的18F
各种进制之间转换,这里只需要注意一点,m转换为n进制,要先将m转换为十进制,再将十进制转换为n进制。
数的表示:各个数值再计算机中表现的形式为机器数,特点是使用二进制用0和1,小数点隐含,不占位置。
机器数有无符号和带符号数之分,无符号数表示正数,没有符号位。带符号数最高位为符号位,正数的符号为0,负数的符号为1。定点表示法分为纯小数和纯整数两种,小数点不占存储位,按照一下约定:
纯小数:约定小数点的位置的在机器数的最高位数值之前。
纯整数:约定小数点的位置的在机器数的最低位数值之后。
真值:机器数对应的实际数值。
编码方式:原码、反码、补码、移码。
原码是正常二进制表示,最高位表示符号。
数值0的原码有两种形式+0(00000000),-0(10000000)
正数的反码就是原码,负数的反码在原码的基础上,除了符号位,其他位全部按位取反。数值0的反码有两种形式:+0(00000000),-0(11111111)
补码:正数的补码就是原码:负数的补码在原码的基础上,除了符号位,其他位全部按位取反,而后末尾+1,若有进位则产生进位。因此数值0的补码只有一种形式+0=-0=00000000
移码是用作浮点运算的阶码,无论正负数,都是将原码的补码的首位取反。
浮点数的运算:表示方法为N=Fx2^E,E代表阶码,F代表尾数,类似科学计数法,比如85.125 =0.85125x102,二进制如101.011=0.1.1.11x23
浮点数所能表示的数值范围由阶码确定,所表示的数值精度由尾数确定
带符号尾数的补码必须为1.0xxx(负数)或者0.1xxxxxx(正数)
浮点数的运算步骤:对阶、尾数计算、结果规格化
算术运算与逻辑运算:简单,自己学习。
短路计算方式:逻辑运算符左边的值就能推出整个表达式的值。
4.校验码
校验码有:奇偶校验码、CRC校验码、海明校验码。
奇偶校验码:发送端编码中的1为奇数或者偶数,接收端检查1的个数是否是正确的奇偶。只能检错,无法纠错。
CRC校验码:找出一个能整除多项式的编码,首先用原始报文除多项式,将得到的余数作为校验位加在原始报文后面,作为发送数据发给接收方。多项式的最高位和最低位必须是1。接收方收到带校验和的帧之后,用多项式来除,余数为0,则表示信息无错,否则要求发送方进行重传。
例如:假设原始信息串为10110,CRC的生成多项式G(x)=x^4+x+1,求CRC校验码。
1)首先多项式为4次项,那么就要在原始信息串后加4个0,得到101100000,作为被除数;
2)由多项式得到出书,多项式中x的幂指数存在的位置为1,不存在的地方为0,即X4为1,X3为0,x2为0,x1为1,x^0为1,即:10011;
3)生成CRC校验码,用101100000/10011得到余数1111。(如果余数不足,则再左边补0,假如余数为11,则最终得到0011)
4)生成要发送的信息串101101111,发送方将此数据发送给接收方。
5)接收方进行校验,接收方接受带校验和的帧之后,用多项式G(x)来除,余数为0,则表示信息无错;否则要求发送方进行重传。
注意:这里采用的是模二除法,和传统的除法意义不一样,是二进制除法,实际上就是按位异或,相同为0不同为1,有粉丝朋友问这里他算出来是1010,这里不是传统的除法,注意这点。
海明校验码:海明校验码的本质还是奇偶校验方式检验,优点是既可以检错也可以纠错。
通过首先将信息位写入,校验位置保留即2^n次的位置全部保留,之后通过异或运算,计算出校验位。接收方收到校验位之后会进行校验位与信息位所算出的结果异或,如果是奇校验,那么应该全为1,如果为偶校验那么全部为0。如果不全为0,那么传输出现错误,找到出错位,将该位逆转。
2、计算机指令和中断(除中断原理,考选择题)
1. 计算机指令
计算机指令由操作码和操作数组成,操作码是要完成的操作,操作数是参加运算的数据及其所在的单元地址,操作码和操作数都是以二进制数码存储到存储器中。
指令执行过程可分为取指令—分析指令—执行指令
取指令:将程序计数器PC的指令地址取出,送入地址总数,CPU根据指令地址去内存中取出指令的内容存入指令寄存器IR。(pc指令地址------>取出指令------->存入IR)
分析指令:取指令后由指令译码器进行分析,分析需要执行什么操作
执行指令:最好取出指令中所需要的源操作数,执行操作
根据不同的周期阶段去区分从存储器取出的是指令还是数据。也可根据取数与取指令的地址去区分。
指令的寻址方式:顺序寻址方式、跳跃寻址方式
指令操作数的寻址方式:立即寻址方式、直接寻址方式、间接寻址方式、寄存器寻址方式、基址寻址方式、变址寻址方式、相对寻址方式。
特权指令:类似root权限下的指令,必须管理员才能使用的指令
指令系统CISC和RISC
CISC是复杂指令系统,兼容性强,指令繁多,长度可变,由微程序实现
RISC是精简指令系统,指令少,使用频率接近,主要依靠硬件实现。
2. 指令的流水线处理
流水线会让指令的执行加快,RISC的流水线技术:超流水线、超标量、超长指令字VLIW。
但是流水线处理发生错误时也会导致阻塞并延期。
三种错误:数据冒险(指令所用的数据未返回)、结构冒险(同一指令中不同功能抢占同一个硬件)、控制冒险(流水线遇到分支或者其他可能引起指令改变)
3. 中断原理(大题会考流程)
3、存储系统和性能(一般只考选择题)
1. 存储系统
存储器结构:越快的越贵:寄存器、高速缓冲、RAM、ROM、外部磁盘、远程二级存储
存储器的访问方式:地址访问、内容访问
寻址方式:随机存储器、顺序存储器、直接存储器
局部性原理:在CPU运行时,访问的数据会趋于一个小的空间地址。
时间局部性:相邻的时间内会访问同一个数据项。
空间局部性:在最近的将来会用到的数据的地址和现在的地址是相近的。
高速缓存cache:三种映射方法:直接映像(地址变换简单但不灵活、易造成浪费)、全相联映像(地址变换复杂,速度慢,但是不容易发生块冲突)、组组相联映像(前面两种方式的结合,主存和cache存储器都是先分块后分组,组间采用直接映像,组内全相联映像)。
命中率及平均时间,CPU与内存之间的数据交互,内存会先将数据拷贝到cache中,根据局部性原理,数据会被循环执行,不会每一次都去内存中读取,CPU访问的数据在cache中命中,那么直接从cache中读取数据。那如果要访问的数据不在cache中,那么则需要从内存中读取。
I/O端口的地址编码形式:I/O独立编址和存储器统一编址。
I/O独立编址:I/O端口编址与存储器的编址相互独立,即空间分开设置互不影响,优点是不占用内存空间;使用I/O指令,程序清晰,译码电路比较简单。缺点是只能用I/O指令,访问端口的方法不如访问存储器的方法多。
存储器统一编址:从存储空间中划出一部分地址给I/O端口。只能从地址范围来区分两种操作。
2. 总线
广义来说,连接两个以上电子元器件的导线都可以称为总线,通常分为以下三类:
内部总线:(内部芯片级别的总线,芯片与处理器之间通信的总线)
系统总线:板级总线分为数据总线(CPU与RAM之间的总线)、地址总线(RAM之中存储的数据的地址)和控制总线将控制器的信号传送到周边设备。
外部总线:设备一级的总线,微机和外部设备的总线。代表的有RS-232串行总线、SCSI(并行总线)、USB(通用串行总线)
从请求总线到完成总线使用的操作序列称为总线事务,典型的总线事务包括:请求操作、裁决操作、地址传输、总线释放。
总线完成一次传输分为四个阶段:总线裁决、寻址阶段、数据传输阶段、结束阶段。
3. 性能和可靠性
MTBF = MTTF + MTTR
系统可靠性= MTTF / (MTTF + MTTR) * 100%
串联系统:一个设备不可靠,整个系统才会奔溃
并联系统:所有设备不可靠,整个系统才会奔溃
处理能力或效率由三个决定:吞吐率、响应时间、资源利用率
基准程序法:目前一致承认的测试系统性能的较好方法。
4、嵌入式软件架构(一般只考选择题)
1. 嵌入式软件基础
嵌入式软件分类:系统软件(设备驱动程序,嵌入式操作系统,嵌入式中间件等)、应用软件(上位机,下位机等)、支撑软件(在线仿真工具,交叉编译器等)
设备驱动层:BSP(板级支持包),对硬件进行管理和控制,并为上层软件提供所需的驱动支持,BSP的基本思想是把嵌入式操作系统和具体的硬件平台隔离。
BSP主要包括两个方面的内容:引导加载程序和设备驱动程序
引导加载程序:系统上电后运行的第一段软件代码,初始化硬件设备,建立内存空间的映射图,将系统的软硬件环境设置到一个合适的状态。
引导加载程序一般包括以下功能:片级初始化(微处理器的初始化)、板级初始化(正确设置各种寄存器来完成除微处理器之外的硬件设备的初始化)、加载内核(将操作系统和应用程序的映像从FLASH中复制到内存中)
设备驱动程序:嵌入式系统中必不可少的部分,具备的功能:硬件启动、硬件关闭、硬件停用、硬件启用、读操作、写操作。文章来源:https://www.toymoban.com/news/detail-401500.html
2. 嵌入式操作系统
嵌入式操作系统的特点:系统内核小、专用性强、系统精简、高实时性、多任务的操作系统。
嵌入式实时操作系统:要求系统在投入运行前即具有确定性和可预测性。具有及时响应和高可靠性的特点。
实时操作系统的特征包括:高精度计时系统、多级中断机制、实时调度机制。
多任务系统上下文切换:即当处理器的控制权由运行任务转移到另外一个就绪任务时所指向的操作
机内自检:对硬件进行上电自检,周期自检,维护自检,启动自检等,确保系统故障的及时发现与定位。
微内核操作系统:将最为核心必要的部分放到内核,其他能独立的部分都放入到用户进程中,系统就会被分为用户态和内核态。
单体内核内核庞大,有较高的运行效率,但占用资源较多且不易剪裁,系统稳定性和安全性不好。
微内核系统的效率较差,但是内核精炼,便于裁剪和移植,安全性、可靠性和稳定性较高。
嵌入式软件学习路线
C语言进阶
嵌入式系统软件及操作系统:笔记(二)
嵌入式软件基础资料打印文章来源地址https://www.toymoban.com/news/detail-401500.html
到了这里,关于软考-嵌入式系统设计师:[嵌入式系统基础:笔记(一)]的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!