武汉理工大学嵌入式系统应用之临时抱佛脚复习

其实大学很多课程的期末冲刺复习非常简单,就是在大脑中构建一个redis数据库就行了,缓存下一大堆键值对,然后考试的时候输出,很没意思。

嵌入式系统的定义

应用为中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、重量、功耗严格要求的专用计算机系统。

处理器的分类

(1)微控制器(Microcontroller Unit, MCU):推动嵌入式计算机系统走向独立发展道路的芯片,也叫单片机。

(2)嵌入式DSP(Embedded Digital Signal Processor, EDSP):在微控制器的基础上对系统结构和指令系统进行了特殊设计,使其适合执行DSP算法并提高了编译效率和指令执行速度。

(3)嵌入式微处理器(Embedded Microprocessor Unit, EMPU):为通用计算机的微处理器演变而来,芯片内部没有存储器,IO电路也很少。去除了多余的功能部件,只保留与嵌入式应用紧密相关的功能部件,保证以最低的资源和功耗实现嵌入式的应用需求。

(4)嵌入式片上系统(System on a Chip, Soc):是ASIC设计方法学中产生的一种新技术,是以嵌入式系统为核心,以IP复用技术为基础,集软件、硬件与一体,并追求产品系统最大包容的集成芯片。

主流嵌入式微处理器

有以下四个特点:

(1)大量使用寄存器,对实时多任务有很强的支持功能。

(2)具有功能很强的存储区保护功能。

(3)可扩展的处理器结构。

(4)小体积,低功耗,低成本,高性能。

嵌入式系统的体系结构

在这里插入图片描述
中间层:中间层为上层软件提供了设备的操作接口,将系统软件与底层硬件的部分进行了分离,完成底层硬件的初始化、数据的输入输出操作、硬件的配置等功能。

嵌入式系统的应用举例

嵌入式系统可应用在工业控制、交通管理、信息家电、家庭智能管理系统、物联网、电子商务、环境监测和机器人等众多方面。

在这里插入图片描述
(1)嵌入式应用的开发需要更加强大的开发工具与操作系统的支持。
(2)嵌入式系统与物联网的深度融合。
(3)可穿戴设备与嵌入式系统的密切结合。
(4)更加友好的UI设计。

嵌入式操作系统举例

嵌入式Linux:

(1)RT-Linux(Real-Time Linux):是美国墨西哥理工学院开发的嵌入式Linux操作系统,具有很好的实时性,广泛应用在航空航天、科学仪器、图像处理等众多领域。

(2)μ-Linux:一个代码紧凑,高度优化的嵌入式Linux。

(3)红旗嵌入式Linux:国内做的比较好的一款嵌入式操作系统,重点支持p-Java。

WindowsCE,Symbian,Android都是嵌入式操作系统。

ARM简介

全称 Advanced RISC Machines,其特点有:

(1)体积小、功耗低、成本低、性能高。
(2)支持Thumb(16位)/ARM(32位)双指令集,具有很好的兼容性。
(3)大量使用寄存器,指令执行速度更快。
(4)大多数数据操作都在寄存器中完成。
(5)寻址方式简单灵活,执行效率高。
(6)指令长度固定。

ARM7采用普林斯顿(冯诺依曼)结构,ARM9及以后采用哈佛结构。

在这里插入图片描述
哈佛结构通过将程序指令存储和数据存储分开,采用独立编址和独立访问的方式,提高了数据吞吐量和执行效率。

ARM7采用三级流水线技术(取指、译码、执行
),ARM9及以后采用五级流水线(取指、译码、访存、回写)。

ARM9采用哈佛架构,避免了数据访问和取指令之间的总线冲突,采用更为高效的五级流水线设计。这种五级流水线技术把三级流水线中的执行单元进一步细化,减少了在每个时钟周期内必须完成的工作量,进而允许使用较高的时钟频率,解决了三级流水线中存储器访问指令在指令执行阶段的延迟问题。

Cotrex-A8处理器架构

(1)指令读取单元。
(2)指令译码单元。
(3)指令执行单元。
(4)数据存取单元。
(5)L2缓存单元。
(6)NEON媒体处理引擎。
(7)ETM单元。
(8)外部接口。

ARM处理器工作模式

一共有七种工作模式:

(1)用户模式(usr)。
(2)系统模式(sys)。
(3)快中断模式(fiq):用于高速数据传输及通道处理。
(4)外部中断模式(irq):用于通用中断处理。

(5)管理模式(svc)。
(6)数据访问中止模式(abt)。
(7)未定义模式(und)。

除了用户模式以外,都是特权模式。

除了用户模式和系统模式以外,都是异常模式。

ARM微处理器共有37个32位的寄存器,其中31个通用寄存器:PC、堆栈以及其他通用寄存器;6个状态寄存器。

R0~R7:未分组的寄存器。

R8~R14:分组寄存器。

R13:堆栈指针。

R14:链接寄存器(LR),保存子程序返回地址,发生异常时,将R14对应的异常模式版本设置为异常返回地址。

R15:程序计数器(PC)。

R16(CPSR):当前程序状态寄存器。

下图需要背下来。
在这里插入图片描述
在这里插入图片描述

big.LITTLE多核处理技术

big.LITTLE技术能够将两个不同但相互兼容的处理器结合在同一个的片上系统,并允许功耗管理软件来为每项任务选择最匹配的单个或多个处理器。

“LITTLE”,最低功耗的处理器,通过运行操作系统以及某些应用程序来实现“随时随地网络接入”的基本任务,如社交媒体和音频播放。随后,操作系统和应用程序可以迅速切换至更高性能的处理器来满足更高性能需求的任务,比如导航和游戏。

异常处理

只考复位、IRQ(外部中断模式)和FIQ(快速中断模式)。

1优先级最高,6优先级最低。

复位异常:管理模式、优先级1。

IRQ:外部中断模式、优先级4,当CPSR的I为设置为0时,产生该异常,常用于设备外设请求。

FIQ:快速中断模式,优先级3,当CPSR的F为0时,产生该异常。

大端存储和小端存储

在计算机中普遍使用大端存储,方法也很简单,数据写下来默认左边为高位,从左往右读,地址由低到高,即高位存储在低地址。

例如0x11223344,这一共是4个字节,那么假设从0x2000H开始存,那么2000H存储的就是0x11,2001H存的就是0x22。

寻址方式

寻址方式其实在计算机组成中讲的很详细,简单来说就是这么几种:

(1)寄存器直接寻址:寄存器里面直接存数据。
(2)立即寻址:直接把操作数作为指令。
(3)寄存器偏移寻址:一般就是把寄存器里面的数据左移若干位作为数据。
(4)寄存器间接寻址:寄存器存的是地址,要根据这个地址找到存储器中的数据。
(5)基址(变)寻址:寄存器中的地址,再加上一个立即数的偏移量得到有效地址。这个常用于循环,通过修改寄存器,来遍历一段连续内存。
(6)多寄存器寻址:举几个例子好了。

LDMIA R1!, {R2-R4, R6};将R1指向的单元中的数据读出到R2,R3,R4,R6中,R1自动+1
STMIA R0!, {R2-R7, R12};将寄存器R2~R7, R12的值存到R0指向的寄存器中,R0自动+1

(7)堆栈寻址:共有4种类型的堆栈,分别是FA、EA、FD、ED。F表示满,即栈顶指针指向一个存在的元素,A表示增,即指针生长方向,E表示空,D表示降。

ARM指令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
msr:将普通寄存器中的数据写到特殊寄存器中;
mrs:将特殊寄存器中的数据写到普通寄存器中;

msr  cpsr, r0  			=== cpsr=r0
mrs  r0, cpsr  			=== r0=cpsr

C和汇编混合编程

ATPCS规定数据栈为FD类型,8字节对齐。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/690309.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于Python的北京天气数据可视化分析

项目用到库 import numpy as np import pandas as pd import datetime from pyecharts.charts import Line from pyecharts.charts import Boxplot from pyecharts.charts import Pie,Grid from pyecharts import options as opts from pyecharts.charts import Calendar 1.2…

【Vue】——组件的注册与引用

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

大泽动力30KW静音汽油发电机

安全操作: 在使用前,确保发电机放置在通风良好、干燥、无易燃物品的地方。 避免在发电机运行时触摸其热表面或运转部件,以免烫伤或受伤。 遵循发电机的启动和停机程序,不要随意操作。 燃油管理: 使用高质量的汽油&…

【C/C++】IO流

目录 前言: 一,C语言的I/O流 二,C的I/O流 2-1,C标准IO流 2-2,IO流的连续输入 前言: “流”即是流动的意思,是物质从一处向另一处流动的过程,是对一种有序连续且具有方向性的数据…

地面站Mission planner

官方教程; Mission Planner地面站介绍 | Autopilot (gitbook.io) Mission Planner 功能/屏幕 — Mission Planner 文档 (ardupilot.org) 安卓或者windows软件下载地址: 地面站连接及使用 plane (cuav.net) 在完全装机后再进行各干器件的校准,没有组…

【十大排序算法】插入排序

插入排序,如一位细心的整理者, 她从序列的左端开始, 挨个将元素归位。 每当她遇到一个无序的元素, 便将它插入已经有序的部分, 直至所有元素有序排列。 她不张扬,却有效率, 用自己的方式&…

如何恢复已删除的文件(简单5 分钟方法)

本文介绍如何使用文件恢复程序恢复已删除的文件。其中包括与恢复已删除文件相关的提示。 如何恢复已删除的文件 从硬盘中恢复已删除的文件并不是一件疯狂的事情,但一旦意识到文件已被删除,尝试恢复会有所帮助。被删除的文件通常直到被其他文件覆盖后才真…

如何在Python中向Word文档添加段落

如何在Python中向Word文档添加段落 添加段落代码解析添加前与添加后 在这篇博客文章中,我们使用Python向Word文档添加段落。 添加段落 from docx import Document# 打开一个现有的Word文档 doc Document(rC:\Users\Administrator\Desktop\Word文档\example.docx)…

02Linux文件,目录,过滤,管道常用命令

Linux基础概述 Linux基础目录 Linux没有盘符这个概念, 只有一个顶级根目录 /, 所有文件都在它下面 在Windows系统中路径之间的层级关系使用/来表示在Linux系统中路径之间的层级关系使用/来表示,出现在开头的/表示根目录, /home/a.txt表示根目录下的home文件夹内有a.txt文件 …

Python中__面向对象__学习 (上)

目录 一、类和对象 1.类的定义 2.根据对象创建类 二、构造和析构 1.构造方法 (1)不带参数的构造方法 (2)带参数的构造方法 2.析构方法 三、重载 1.定制对象的字符串形式 (1)只重载__str__方法 …

STM32 HAL库开发——入门篇(3):OLED、LCD

源自正点原子视频教程: 【正点原子】手把手教你学STM32 HAL库开发全集【真人出镜】STM32入门教学视频教程 单片机 嵌入式_哔哩哔哩_bilibili 一、OLED 二、内存保护(MPU)实验 2.1 内存保护单元 三、LCD 3.1 显示屏分类 3.2 LCD简介 3.3 LCD…

【JAVASE】日期与时间类(上)

一:概述 从JAVA SE 8开始提供了java.time包,该包中有专门处理日期和时间的类。 LocalDate LocalDateTime 和LocalTime 类的对象封装和日期、时间有关的数据,这三个类都是final类,而且不提供修改数据的方法,即这…

ai辅助教育孩子

孩子经常躺在床上看手机是一个需要关注的问题,因为这不仅可能影响他们的视力健康,还可能影响睡眠质量和身体健康。以下是一些建议,帮助应对这一问题: 设定明确的规定: 与孩子一起制定使用手机的规则,如每天…

前端多人项目开发中,如何保证CSS样式不冲突?

在前端项目开发中,例如突然来了一个大项目,很可能就需要多人一起开发,领导说了,要快,要快,要快,你们给我快。然后下面大伙就一拥而上,干着干着发现,一更新代码&#xff0…

LiDAR360MLS 7.2.0 雷达点云数据处理软件功能介绍

新增模块和功能: 支持手持、背包数据的解算 SLAM解算成功率提升 SLAM解算效率提升 采集端与后处理端保持一致 赋色优化 新增平面图模块 新增平面图全自动矢量化功能 新增平面图矢量一键导出DXF功能 新增平面图正射影像一键导出功能 支持交叉、垂直绘制 支…

添加west扩展命令

使用west工具的帮助命令,west -h,不仅可以列出west工具的内置命令,也可以列举当前工程中实现的扩展命令,如build,flash等。 本文将介绍如何添加扩展命令。 west扩展命令的位置通过以下方式查找: 1. 首先找…

python-自幂数判断

[题目描述]: 自幂数是指,一个N 位数,满足各位数字N 次方之和是本身。例如,153153 是 33 位数,其每位数的 33 次方之和,135333153135333153,因此 153153 是自幂数;16341634 是 44 位数…

react的自定义组件

// 自定义组件(首字母必须大写) function Button() {return <button>click me</button>; } const Button1()>{return <button>click me1</button>; }// 使用组件 function App() {return (<div className"App">{/* // 自闭和引用自…

Springboot 通过SSE 实现实时消息返回

网上搜了好多都是用 SseEmitter 实现的,自己搭的demo确实也可以了,但是我项目里有一个过滤器,死活配置都不行,终于用google搜了一下,第一篇帖子便解决了这个问题,代码和大佬链接如下: https://github.com/CodingChaozhang/spring_boot_practice_demo/blob/master/springboot_s…

基于电荷的EPFL HEMT模型

来源&#xff1a;Charge-Based EPFL HEMT Model&#xff08;TED 19年&#xff09; 摘要 本文介绍了一种面向设计的、基于电荷的模型&#xff0c;用于直流操作下的AlGaAs/GaAs和AlGaN/GaN高迁移率场效应晶体管。该固有模型基于物理原理&#xff0c;不引入任何经验参数。核心概…