河北工业大学嵌入式系统知识点总结第一章

2024-06-21 03:20

本文主要是介绍河北工业大学嵌入式系统知识点总结第一章,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

嵌入式系统定义
嵌入式系统是以应用为中心、以计算机技术为基础,软、硬件可裁剪,对功能、可 靠性、成本、体积、功耗有严格要求的专用计算机系统。
嵌入式系统的特点
“嵌入性”:由于是嵌入到对象系统中,因此必须满足对象系统的环境 要求,如物理环境(小型)、电气环境(可靠)、成本(价廉)等要求。
“专用性”:软硬件的裁剪性;满足对象要求的最小软硬件配置等。
“计算机系统”:嵌入式系统必须是能满足对象系统控制要求的计算机 系统。
嵌入式系统的分类
按形态的差异,一般可将嵌入式系统分为:芯片级、板级、设备级。
按体系结构,一般可将嵌入式系统分为:普林斯顿结构(冯·诺依曼结构 )和哈佛结构。
按指令集,一般可将嵌入式系统分为:CISC(复杂指令系统)和 RISC(精简指令系统)。
CISC 和 RISC 的特点
CISC 指令丰富,程序设计方便,代码量小,执行性能高。
RISC 只包含少量常用指令和必要的支持操作系统和高级语言的指令。
CISC 和 RISC 的区别
CISC 的技术复杂性在于硬件,由硬件完成部分软件功能,芯片成本高。
RISC 的技术复杂性在于软件,由软件完成部分硬件功能,芯片成本低。
CISC 代码尺寸小,指令的执行周期数多且不固定,指令集复杂庞大,编码长度可变寄存器较少,寻址模式复杂,高级语言支持由软件完成。
RISC 代码尺寸大,指令的执行周期数少且固定,指令集简单精简,编码长度固定, 寄存器较多,寻址模式简单,高级语言支持由硬件完成
普林斯顿结构和哈佛结构的区别
普林斯顿结构是由一个中央处理单元(CPU)和单存储空间组成,也称为冯诺依曼结构,即存储器存储了数据和程序,内部使用单一的地址总线和数据总线。不能同时进行取指令和取数据操作,工作速度较慢。例如 ARM7
哈佛结构是存储器分为数据和程序两个存储空间,各自有独立的程序总线和数据总线,可以进行独立编址和独立访问,有更高的性能。例如 ARM9,Cortex系列微处理器
嵌入式系统内核种类
嵌入式微处理器(MPU)由通用计算机的微处理器演变而来,芯片内部没有存储器,I/O 接口电路也很少。在嵌入式应用中,只保留与嵌入式应用紧密相关的功能部件,以保证它能以最低的资源和功耗实现嵌入式应用需求。也称单板机。
优点是可拓展性强
缺点是要配备总线和外设接口
微控制器(MCU)一般以某种微处理器为核心,集成存储器和 I/O 接口等必要功能,也称单片机。
优点是功耗低成本低
缺点是处理速度有限
数字信号处理器(DSP)更适合执行数字信号处理算法,编译效率较高,指令执行速度较高,不适合使用操作系统
ARM 处理器的主要特征
采用 RISC 体系结构
指令长度固定(32/16 位)
流水线操作,1 个时钟可执行 1 条指令
每条指令均可按条件执行
大多数数据操作都在寄存器中完成
可通过协处理器扩展指令
有高密度编码的 Thumb(16 位)
Cortex-M0 
最小的 ARM CPU,功耗低,开发简单,优良的互联性
CM1 
CM1 处理器是第一个专为实现 FPGA 功能而设计的 ARM 处理器。
CM3 
采用较高代码密度的 Thumb-2 指令集,中断的性能提高,低功耗、低成本,高性能、易使用,ARMv7-M 体系结构。
CM3 处理器内核是嵌入式微控制器的中央处理单元,MPU微处理器,stm32f103是基于cm3内核设计的单片机,MCU微控制器
CM3 特点
• 哈佛结构
• 内核支持低功耗模式(睡眠模式、停止模式、待机模式)
• 引入分组堆栈指针机制
• 统一的存储器映射
• 位绑定操作
• 三级流水线和转移预测
• 内置嵌套向量中断控制器
CM3 中引入模式的目的
区别普通应用程序的代码 与 异常和中断服务例程的代码。
CM3 中设置两种权限的目的
提供存储器访问的保护机制,使得普通的用户程序代码不能意外地或恶意地执行涉及要害的操作。
                                
特权级   用户级
异常程序代码处理者模式XXXXXX
主程序代码线程模式线程模式
通用寄存器
R0-R7 为低组寄存器,可被所有指令访问 。 
R8-R12 为高组寄存器,可以被所有的 32 位指令访问,但不能被 16 位指令访问。
堆栈寄存器 R13
CM3 处理器内核中有两个堆栈指针(PSP、 MSP),支持两个堆栈,两种堆栈都指向 R13,因此在任何时候 只有一个是可见的。当引用 R13(或写作 SP)时,引用到的 是当前正在使用的那一个,另一个必须用特殊的指令来访问(MRS,MSR 指令)。
主堆栈指针 MSP 是默认的堆栈指针,由需要特权访问的应用程序代码使用。
进程堆栈指针 PSP 用于不处于异常服务例程中的常规的应用程序代码。
MSP 可用于处理模式和线程模式,PSP 只可用于线程模式。
控制寄存器 control
用途:定义特权级别和选择当前使用的指针
control[0]=0,特权级线程模式;control[0]=1,用户级线程模式。
control[1]=0,选择 MSP(复位后的默认值);control[1]=1,选择 PSP。
仅在特权级线程模式或特权级处理者模式下操作时才允许更改 control[0];仅在特 权级线程模式下操作时才允许更改 control[1]
由于处理者模式一定是特权级且使用 MSP,所以处理者模式中 control[1]一定等于0,control 仅用于定义线程模式的特权级别和在线程模式中选择堆栈指针。
当在特权级模式下,令 control[0]=1 进入了用户级线程模式后,唯一返回特权级的途径就是触发一个中断,再由服务例程改写该位。
程序计数器 R15
存储的是当前正在执行的指令的地址,因为 CM3 内部使用了指令流水线,所以读 PC 时返回的值是当前指令的地址+4。位[0]总为 0,指令按字或半字对齐。
链接寄存器 R14
调用子程序时存储返回地址,也用于异常返回
AMBA 规范包括 AHB 系统总线和 APB 外设总线,分别适用于高速与相对低速设备的连接。
CM3 包含 5 个总线,都是 32 位,I-code 存储器总线(AHB)、D-code 存储器总线(AHB)、系统总线(AHB)、外部专用外设总线(APB)、内部专用外设总线(AHB)
存储区格式
字是 4 个字节,半字是 2 个字节
大端格式:字数据的高字节存储在低地址中,低字节存储在高地址中
小端格式:字数据的高字节存储在高地址中,低字节存储在低地址中
CM3 处理器支持非对齐的传送,数据存储器的访问无须对齐
位绑定操作
定义:位绑定操作把别名区的一个字映射到位绑定区的一位,位绑定区中每一位都映射到别名地址区的一个字,对别名地址的访问最终会变成对位绑定区的访问。对此别名区的操作只有字的最低位是有效的。
好处:提高位操作的速度;使代码量小,速度更快,效率更高,更安全;用于化简跳转程序;其他总线活动不能中断位绑定操作。
支持位绑定操作的两个内存区
0x2000 0000~0x200F FFFF(SRAM 区中的最低 1MB)
0x4000 0000~0x400F FFFF(片上外设区中的最低 1MB)
计算        位绑定区和位绑定别名区的对应关系
对于 SRAM 位绑定区的某个位,记它所在字节地址为 A,位序号位为 n(0<=n<=7), 则该位在别名区的地址为
Address = 0x2200 0000+(A-0x2000 0000)×32+4×n
对于片上外设位绑定区的某个位,记它所在字节地址为 A,位序号位为 n
(0<=n<=7),则该位在别名区的地址为
Address = 0x4200 0000+(A-0x4000 0000)×32+4×n
Cortex-M3 处理器能支持所有的 16 位 Thumb 指令集和基本 32 位 Thumb-2 指令集。
CM3 处理器使用 3 级流水:取指、解码和执行。
充分利用现有的硬件资源,提高了微处理器的运行效率。取指、解码和执行 3 步的时间是一样的,这样才实现了流水线的重叠技术。
程序计数器 R15(PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或“正在译码”的指令。
一般来说,人们习惯性约定将“正在执行”的指令作为参考点,则:PC 值=当前程序执行位置+8 注:ARM 状态时,每条指令为 4 字节
思考题:PC 初始指向 0x4000,问执行完指令“ADD PC,PC,#4”后,PC 的值为多少?
①PC 指向 0x4000 地址,取指 ADD 指令。
②PC 指向 0x4004 地址,解码 ADD 指令。
③PC 指向 0x4008 地址,执行 ADD 指令。
④指令内容是 pc=pc+4
所以执行完指令后,PC 的值为 0x400C。
中断和异常的区别
中断来自片上外设或外扩的外设;异常因 CM3 内核的活动产生
在 CM3 中,优先级的数值越小,优先级越高。除 3 个系统异常外(优先级为负数), 所有的异常都是可编程的,但不能被编程为负数。
向量中断控制器 NVIC 的功能支持向量中断、可屏蔽中断、嵌套中断、动态优先级调整
中断、异常过程
保存现场->取向量->更新寄存器
保存现场:把 8 个寄存器的值压入当前正在使用的栈(PSP 或 MSP),进入了服务例程后就一直使用 MSP
取向量:从向量表中找出对应的服务程序入口地址
更新寄存器:选择堆栈指针 MSP/PSP,更新堆栈指针 SP,更新连接寄存器 LR,更新程序计数器 PC。
占先
在中断处理过程中,当一个新的中断比当前的中断优先级更高时,处理器将打断当前的流程,响应优先级更高的中断,此时产生中断嵌套。占先是一种对更高优先级中断的响应机制。
末尾连锁
在当前的中断执行返回后,系统处理挂起的中断时,继续使用上一个中断已经压栈 的成果。末尾连锁是处理器用于加速中断响应的一种机制。
迟来
如果前一个中断服务程序尚未进入执行阶段,并且迟来中断的优先级比前一个中断的优先级高,则迟来的中断弄够抢占前一个中断得到优先服务,这种现象称为迟来。是加速占先的一个机制
返回
在没有挂起中断或没有比压栈的中断优先级更高的中断时,处理器执行出栈操作,并返回到被压栈的中断服务程序或线程模式。若在状态恢复过程中出现一个中断,且该中断的优先级比正在返回的中断服务程序或线程更高,则处理器放弃状态恢复操作,并将新的中断作为末尾连锁处理。
APB2 总线:GPIO 端口 A~G,TIM1、8,USART1(高速外设)
APB1 总线:TIM2、3、4、5,USART2、3、4、5(低速外设)

这篇关于河北工业大学嵌入式系统知识点总结第一章的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080070

相关文章

关于C++中的虚拟继承的一些总结(虚拟继承,覆盖,派生,隐藏)

1.为什么要引入虚拟继承 虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如下: class A class B1:public virtual A; class B2:pu

嵌入式软件工程师应聘知识点

嵌入式软件工程师应聘 修改浏览权限 | 删除 数据结构(C语言)部分常考的知识点: 1、局部变量能、全局变量和静态变量 2、堆和栈 3、Const、volatile、define、typedef的用途 4、链表(比如链表的插入、删除和排序) 5、排序(考查冒泡法的较多) 6、可重入函数 、malloc函数 7、指针(常考函数指针,函数指针,数组指针,指针数组和

大学湖北中医药大学法医学试题及答案,分享几个实用搜题和学习工具 #微信#学习方法#职场发展

今天分享拥有拍照搜题、文字搜题、语音搜题、多重搜题等搜题模式,可以快速查找问题解析,加深对题目答案的理解。 1.快练题 这是一个网站 找题的网站海量题库,在线搜题,快速刷题~为您提供百万优质题库,直接搜索题库名称,支持多种刷题模式:顺序练习、语音听题、本地搜题、顺序阅读、模拟考试、组卷考试、赶快下载吧! 2.彩虹搜题 这是个老公众号了 支持手写输入,截图搜题,详细步骤,解题必备

十五.各设计模式总结与对比

1.各设计模式总结与对比 1.1.课程目标 1、 简要分析GoF 23种设计模式和设计原则,做整体认知。 2、 剖析Spirng的编程思想,启发思维,为之后深入学习Spring做铺垫。 3、 了解各设计模式之间的关联,解决设计模式混淆的问题。 1.2.内容定位 1、 掌握设计模式的"道" ,而不只是"术" 2、 道可道非常道,滴水石穿非一日之功,做好长期修炼的准备。 3、 不要为了

通信系统网络架构_2.广域网网络架构

1.概述          通俗来讲,广域网是将分布于相比局域网络更广区域的计算机设备联接起来的网络。广域网由通信子网于资源子网组成。通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网构建,将分布在不同地区的局域网或计算机系统互连起来,实现资源子网的共享。 2.网络组成          广域网属于多级网络,通常由骨干网、分布网、接入网组成。在网络规模较小时,可仅由骨干网和接入网组成

数据库期末复习知识点

A卷 1. 选择题(30') 2. 判断范式(10') 判断到第三范式 3. 程序填空(20') 4. 分析填空(15') 5. 写SQL(25') 5'一题 恶性 B卷 1. 单选(30') 2. 填空 (20') 3. 程序填空(20') 4. 写SQL(30') 知识点 第一章 数据库管理系统(DBMS)  主要功能 数据定义功能 (DDL, 数据定义语

人工智能机器学习算法总结神经网络算法(前向及反向传播)

1.定义,意义和优缺点 定义: 神经网络算法是一种模仿人类大脑神经元之间连接方式的机器学习算法。通过多层神经元的组合和激活函数的非线性转换,神经网络能够学习数据的特征和模式,实现对复杂数据的建模和预测。(我们可以借助人类的神经元模型来更好的帮助我们理解该算法的本质,不过这里需要说明的是,虽然名字是神经网络,并且结构等等也是借鉴了神经网络,但其原型以及算法本质上还和生物层面的神经网络运行原理存在

Java注解详细总结

什么是注解?         Java注解是代码中的特殊标记,比如@Override、@Test等,作用是:让其他程序根据注解信息决定怎么执行该程序。         注解不光可以用在方法上,还可以用在类上、变量上、构造器上等位置。 自定义注解  现在我们自定义一个MyTest注解 public @interface MyTest{String aaa();boolean bbb()

Linux系统稳定性的奥秘:探究其背后的机制与哲学

在计算机操作系统的世界里,Linux以其卓越的稳定性和可靠性著称,成为服务器、嵌入式系统乃至个人电脑用户的首选。那么,是什么造就了Linux如此之高的稳定性呢?本文将深入解析Linux系统稳定性的几个关键因素,揭示其背后的技术哲学与实践。 1. 开源协作的力量Linux是一个开源项目,意味着任何人都可以查看、修改和贡献其源代码。这种开放性吸引了全球成千上万的开发者参与到内核的维护与优化中,形成了

tensorboard-----summary用法总结

Tensorflow学习笔记——Summary用法         最近在研究tensorflow自带的例程speech_command,顺便学习tensorflow的一些基本用法。 其中tensorboard 作为一款可视化神器,可以说是学习tensorflow时模型训练以及参数可视化的法宝。 而在训练过程中,主要用到了tf.summary()的各类方法,能够保存训练过程以及参数分布图并在