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

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

相关文章

Java反转字符串的五种方法总结

《Java反转字符串的五种方法总结》:本文主要介绍五种在Java中反转字符串的方法,包括使用StringBuilder的reverse()方法、字符数组、自定义StringBuilder方法、直接... 目录前言方法一:使用StringBuilder的reverse()方法方法二:使用字符数组方法三:使用自

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Linux系统之authconfig命令的使用解读

《Linux系统之authconfig命令的使用解读》authconfig是一个用于配置Linux系统身份验证和账户管理设置的命令行工具,主要用于RedHat系列的Linux发行版,它提供了一系列选项... 目录linux authconfig命令的使用基本语法常用选项示例总结Linux authconfi

Python依赖库的几种离线安装方法总结

《Python依赖库的几种离线安装方法总结》:本文主要介绍如何在Python中使用pip工具进行依赖库的安装和管理,包括如何导出和导入依赖包列表、如何下载和安装单个或多个库包及其依赖,以及如何指定... 目录前言一、如何copy一个python环境二、如何下载一个包及其依赖并安装三、如何导出requirem

Nginx配置系统服务&设置环境变量方式

《Nginx配置系统服务&设置环境变量方式》本文介绍了如何将Nginx配置为系统服务并设置环境变量,以便更方便地对Nginx进行操作,通过配置系统服务,可以使用系统命令来启动、停止或重新加载Nginx... 目录1.Nginx操作问题2.配置系统服android务3.设置环境变量总结1.Nginx操作问题

前端知识点之Javascript选择输入框confirm用法

《前端知识点之Javascript选择输入框confirm用法》:本文主要介绍JavaScript中的confirm方法的基本用法、功能特点、注意事项及常见用途,文中通过代码介绍的非常详细,对大家... 目录1. 基本用法2. 功能特点①阻塞行为:confirm 对话框会阻塞脚本的执行,直到用户作出选择。②

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

Rust格式化输出方式总结

《Rust格式化输出方式总结》Rust提供了强大的格式化输出功能,通过std::fmt模块和相关的宏来实现,主要的输出宏包括println!和format!,它们支持多种格式化占位符,如{}、{:?}... 目录Rust格式化输出方式基本的格式化输出格式化占位符Format 特性总结Rust格式化输出方式

在不同系统间迁移Python程序的方法与教程

《在不同系统间迁移Python程序的方法与教程》本文介绍了几种将Windows上编写的Python程序迁移到Linux服务器上的方法,包括使用虚拟环境和依赖冻结、容器化技术(如Docker)、使用An... 目录使用虚拟环境和依赖冻结1. 创建虚拟环境2. 冻结依赖使用容器化技术(如 docker)1. 创

CentOS系统Maven安装教程分享

《CentOS系统Maven安装教程分享》本文介绍了如何在CentOS系统中安装Maven,并提供了一个简单的实际应用案例,安装Maven需要先安装Java和设置环境变量,Maven可以自动管理项目的... 目录准备工作下载并安装Maven常见问题及解决方法实际应用案例总结Maven是一个流行的项目管理工具