2023.6.8小记——嵌入式系统初识、什么是ARM架构?

news2024/12/1 0:24:55

今天还挺充实的,早上在图书馆本来想学一下notion,结果看李沐老师的动手深度学习看到十点半,在电脑上配置了李沐老师的d2l和jupyter,等后续有时间的时候再继续学。

下午看了一下notion的使用方法,这玩意初学者用起来是真的麻烦,如果每天没有很多事情需要schedule的话,用这个我认为反而是个累赘,还不如mac自带的提醒事项。

然后去健身房练了腿🏋️‍♀️,100kg深蹲,再做两组固定器械就去洗澡了。晚上在图书馆复习了一下嵌入式,最近因为看老石的视频,感觉复习嵌入式的时候也有了些动力。

现在回来写一下一天的总结~ 👇👇👇


1. 什么是嵌入式系统?

老师PPT中给出的定义是:

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

简单来说,就是含有处理器的、专用的软硬件系统,具有自主的信息处理能力。

看一下嵌入式系统的体系结构:
请添加图片描述

其中,硬件层是使用硬件描述语言——verilog完成的电路设计,将代码烧到FPGA上,快速进行调试。除了FPGA之外,还有专用集成芯片ASIC的存在。FPGA的速度没有ASIC快,但是可以快速成品而且价格便宜。因此在当前行业里,FPGA几乎是所有电子系统的必要部件。

2. 嵌入式系统的两种设计方法

分别是传统设计方法和系统级设计方法。

在传统设计中,硬件和软件是分离设计的,过程如下:
请添加图片描述

而在系统级设计方法中,强调软硬件的协同设计和系统整合,可以更好地管理复杂性并提高设计效率。

3. 什么是ARM?

我还是想引用一下chatgpt对ARM的解释,我觉得写的很不错:

ARM 的全称是 “Advanced RISC Machines”,意为 “高级精简指令集计算机”。ARM 是一种广泛使用的处理器架构和系列,由 ARM Holdings(现为 Arm Limited)开发和授权给各个芯片制造商使用。

ARM 架构采用精简指令集计算机(Reduced Instruction Set Computing,RISC)的设计理念,旨在提供高效、低功耗的处理器解决方案。ARM 处理器广泛应用于移动设备、嵌入式系统、智能手机、平板电脑、物联网设备和消费电子产品等领域。

ARM 提供了多个处理器系列,包括 Cortex-A 系列、Cortex-R 系列和 Cortex-M 系列。Cortex-A 系列用于高性能应用,如移动设备和嵌入式系统;Cortex-R 系列用于实时应用,如汽车电子和工业控制;Cortex-M 系列用于低功耗、低成本的嵌入式系统,如微控制器和传感器设备。

复习之后,我认为ARM最大的特点就是:

  • 采用精简指令集,用简单的指令实现复杂的功能
  • 体积小、低功耗、低成本、高性能
  • 支持thumb(16位,半字)和arm(32位,一个字)的双指令集
  • 大量使用寄存器,指令执行速度快
  • 寻址方式简单
  • 指令长度固定

迄今为止,arm定义了8个版本,用1-8来表示。每一个版本下又有不一样的额外版本。命名规则如下:
请添加图片描述
请添加图片描述

其中,老师要求重点掌握的是ARM7和ARM9。

ARM7的主要特点如下:

  • 采用冯诺依曼结构,数据存储器和指令存储器合并到一起
  • 采用三级流水,包含:取指、译码、执行
  • 其中,执行包含了很多操作,如移位操作、读通用寄存器内容、输出结果、写通用寄存器等。

这就导致三级流水存在很严重的问题:执行单元的工作占用很多时钟周期,并且数据存储器和指令存储器的合并会导致流水线阻断的情况,从而影响流水性能。

所以引入了采用五级流水的ARM9,将数据存储器和指令存储器给分开

其中,五级流水的功能如下:
请添加图片描述

本质就是把原来执行单元所做的工作给细分了两个出来,一个是存储器访问,一个是寄存器回写,这样就减少了每个时钟周期内必须完成的工作。
同时将数据存储器和指令存储器给分开也解决了三级流水中访存在指令执行阶段的延迟问题。


今天时间不早了,就先写那么多,没有把复习的内容全部写完,我发现上面写的东西还是过多了,有点不够精简。但是我又觉得每部分都比较重要,唉。。。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python如何一行输出五个星号

Python如何一行输出五个星号 Python是一种流行的编程语言,它被广泛用于各种领域,包括Web开发,数据科学和机器学习。在这篇文章中,我们将探讨如何使用Python在一行中输出五个星号。 输出五个星号的方法 Python提供了几种方法来在…

牛客网语法刷题(C语言) — 输出格式化

🤩本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。 🥰内容专栏:这里是《C语言—语法篇》专栏,笔者用重金(时间和精力)打造,基础知识一网打尽,…

从字符串中读写的方法:c语言中的sscanf、sprintf函数,c++中的I/O流strstream、stringstream

一、sscanf、sprintf函数 众所周知,c语言中我们常使用的标准输入输出流函数为scanf()、printf(),默认从键盘上输入数据、向屏幕输出数据。此外,c语言中还提供了另一组库函数sscanf()、sprintf()函数,它们的功能与前者相同&#x…

spark复习重点

什么是大数据 大数据是指数据量巨大、类型繁多、处理速度快的数据集合。它不仅包括传统的结构化数据,还包括非结构化数据、半结构化数据等多种形式的数据。大数据的处理需要使用特殊的技术和工具,如分布式存储、分布式计算、数据挖掘、机器学习等。 大…

软考A计划-系统架构师-官方考试指定教程-(7/15)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

uniapp主题切换功能的第二种实现方式(scss变量+require)

在上一篇 “uniapp主题切换功能的第一种实现方式(scss变量vuex)” 中介绍了第一种如何切换主题,但我们总结出一些不好的地方,例如扩展性不强,维护起来也困难等等,那么接下我再给大家介绍另外一种切换主题的…

聊聊那些奇葩的代码规范 —— 滥用静态导入

因为有些要求感觉实是太过奇葩,收集下来娱乐下大家。 代码规范要求 要求如果代码可以静态导入的话,就必须要静态导入。 所有的代码如果不静态导入,就直接 PR 拒绝合并。 举例:equalsAnyIgnoreCase("test","tes…

总结894

学习目标: 月目标:6月(线性代数强化9讲遍,背诵15篇短文,考研核心词过三遍) 周目标:线性代数强化3讲,英语背3篇文章并回诵,检测 每日必复习(5分钟&#xff0…

chatgpt赋能python:Python怎么Import自己写的SEO文章

Python怎么Import自己写的SEO文章 如果你是一位Python开发人员,并且正在为SEO优化而努力编写文章,那么你可能会想知道如何将自己编写的SEO文章导入您的程序中以便更好的利用。 在这篇文章中,我们将介绍如何使用Python中的import语句将自己编…

UNIX网络编程卷一 学习笔记 第十九章 密钥管理套接字

随着IP安全体系结构(IPsec)的引入,密钥加密和认证密钥的管理越来越需要一套标准机制。RFC 2367介绍了一个通用密钥管理API,可用于IPsec和其他网络安全服务,该API创建了一个新协议族,即PF_KEY域,…

chatgpt赋能python:Python一行输入三个数:方便快捷,还能提高效率!

Python一行输入三个数:方便快捷,还能提高效率! Python是一门非常流行的编程语言,不仅仅因为它简单易用,更因为它拥有丰富的生态系统和强大的库支持。但是,Python的输入方式却是许多人常常感到头疼的部分。…

学会使用“条件断点“来解放你的鼠标

(PS:对调试较为熟悉却没有使用过条件断点的同学可以直接翻到文章底部看操作的GIF图~) 一、背景 "Debug"想必大家在开发的过程中也是有经常使用的,这里简单的介绍一下浏览器"Debug"其中的两种方式。&#xff…

使用idea创建java web项目

创建web项目有很多方法,就说一个最简单的方法吧。 创建一个java项目,点击创建右击项目选择添加框架支持。勾选上web应用程序,点击确定。 再点击当前文件,编辑配置 点击加号,选择Tomcat服务器(本地&#xf…

【连续介质力学】变形梯度

变形梯度 简介 本节讨论两个不同质点P和Q的之间的相对运动变化 拉伸比和相对伸长 d X ⃗ d\vec X dX : 在参考构形连接质点P和Q的向量,线单元 M ^ \hat M M^: d X ⃗ d\vec X dX 方向的单位向量 d x ⃗ d\vec x dx : 在当前构形连接质点P’和Q‘的向量&#xff…

对象存储分布式代理-go初学者的开源练手项目

最近写了一个go语言练手项目osproxy和osproxy-grpc,代码已完全开源到github。 相信不少接触go语言的读者,都是被它"极简协程",“高并发”,"高性能"的特性所吸引,我也不例外,想着学完之…

基于MATLAB涡度通量数据处理技术应用

点击查看原文 本文基于MATLAB语言、以实践案例为主,提供代码、原理与操作结合 1、以涡度通量塔的高频观测数据为例:基于MATLAB开展上机操作 2、涡度通量观测基本概况:观测技术方法、数据获取与预处理等 3、涡度通量数据质量控制&#xff1…

第3章 需求分析(上)

第3章 需求分析(上) 3.1 需求分析任务 3.1.1 确定对系统的综合要求 1. 功能需求 通过需求分析应该划分出必须完成的所有功能。 2. 性能需求 性能需求指定系统必须满足的定时约束或容量约束 3. 可靠性和可用性需求 可靠性需求定量地指定系统的可靠…

二叉树的最近公共祖先LCA

一、什么是最近公共祖先 LCA为最近公共祖先(Lowest Common Ancestor)的缩写。 对于一棵有根树T的两个节点u,v,最近公共祖先LCA(T,u,v)代表一个节点x。 LCA(5,6) 2 LCA(7,12) 3 LCA(2,1)1 二、公共祖先的朴素解法 两个节点先调整到相同的深度每一次…

Qt6使用cmake创建项目

目录 创建普通项目 创建qt项目 创建具有资源文件的qt项目 在QT6中,官方推荐在新的项目中使用CMake。 在Qt Creator中使用CMake构建系统时,与往常的qmake有一些不一样,因此写一篇文章来记录一下。 创建普通项目 我们先写一个最简单的项目…

chatgpt赋能python:Python的Unicode编码介绍

Python的Unicode编码介绍 什么是Unicode Unicode是一个字符集,它定义了世界上几乎所有的字符,包括字母、数字、符号和标点。Unicode使用唯一的数字编码来表示每个字符,这使得在不同的操作系统和编程语言中展示和处理字符非常方便。在Python…