底层课程导学

news2024/9/21 19:03:48

目录

一、底层导学

1.课程回顾

2.嵌入式系统分层

3.Linux层次结构

 二、ARM课该怎么学

1.课程内容

2.学习方法

 三、计算机基础知识

1.计算机的进制

2.总线

四、ARM存储模型

1.三级存储结

五、CPU工作原理

1.CPU工作原理

2.指令的执行过程

3.地址空间

六、ARM体系结构

1.ARM处理器概述

1.1.ARM的含义

1.2.编译原理

2. 数据类型

2.1ARM数据的类型

2.2.字节序

七、ARM工作模式

1.ARM 8个基本的工作方式(只有A系列才有8种)​

2.工作模式的理解

3.工作模式分类

​​​​​​​八、寄存器

1.寄存器   通用寄存器

​​​​​​​2.ARM寄存器​​​​​​​

3.专用寄存器

​​​​​​​4.CPSR寄存器

九、ARM异常处理

1.异常

2.​​​​​​​异常处理机制

​​​​​​​3.ARM异常源

​​​​​​​4.ARM异常模式

​​​​​​​5.ARM异常响应

6.异常向量表

​​​​​​​7.异常返回

 8.​​​​​​​异常优先级

十、ARM微架构

 1.流水线

(1)指令流水线

(2)多核处理器


一、底层导学

1.课程回顾

       C语言基础:C语言工程师

C高级及Linux :C语言工程师

数据结构:C语言工程师

       应用层开发:

IO进程:Linux C/C++ 开发      嵌入式软件

网络编程:Linux C/C++ 开发    嵌入式软件

C++ QT:C++工程师  QT工程师  嵌入式软件

底层开发:

STM32 嵌入式软件 单片机工程师

ARM  嵌入式软件 单片机工程师

系统移植  嵌入式软件 单片机工程师

驱动开发   驱动开发

2.嵌入式系统分层

应用开发: 使用系统提供的接口(API),做上层应用开发

底层开发:做操作系统本身

3.Linux层次结构

进程管理:管理进程的创建、调度、销毁、通信等

内存管理: 管理内存的申请、释放、映射等

文件管理: 管理和访问磁盘中的文件

设备管理: 硬件设备的驱动的管理

网络协议:通过网通协议栈(TCP\IP)进行通信

 二、ARM课该怎么学

1.课程内容

ARM体系结构:

   存储模型:程序的存储运行模式   架构

   工作模式:

    处理模式:发生中断或者异常进入

    线程模式:正常时

    寄存器:ARM内核内部的一些寄存器

    异常机制:异常的优先级 异常源  中断向量表

    流水线:三级线

    指令集:ARM指令

接口技术:

    GPIO:使能、配置模式(输入还是输出)、输出类型(推挽输出 开漏输出)、输出速度、输出数据寄存器(ODR\BSRR\BRR)

  PWM:屏幕亮度 电机

  UART:485 232  modbus

  ADC:模数转换  需要得到真实数据的,需要用到ADC   只是开关量,的需要ADC

  RTC\IIC\SPI\485\CAN\232

2.学习方法

 三、计算机基础知识

1.计算机的进制

 在计算机中数据的存储、运算、传输都是以高低电平的方式进行的,所以数字电路中高、低电平表示逻辑0和1

  1. 计算机的组成

输入设备:把其他信号转换成计算机能够识别的信号并送入计算机中:键盘、鼠标、麦克风

输出设备:把运算结果以人或其他设备能够识别的信号进行送到计算机外:显示器、音响

存储器:用来存储程序和数据的元件,实现存储控制程序的基础 :RAM ROM 软盘

运算器:CPU中负责进行数据运算的逻辑部件,其核心是算数逻辑单元ALU 加法器 减法器

控制器:控制器是CPU的指挥中心

2.总线

 总线

    总线是计算机中各个部件之间传送信息的公共通信干线, 在物理上就是一束导线按照其传递信息的类型可以分为数据总线、地址总线、控制总线

 DMA总线

    DMA(Direct Memory Access)即直接存储器访问,使用DMA总线可以不通过CPU直接在存储器之间进行数据传递

四、ARM存储模型

1.三级存储结

cache: 速度最快、价格最贵、容量最小、断电丢失、CPU可以直接访问

主存储器:速度、价格、容量介于CACHE和辅助存储器之间、断电丢失、CPU可以直接访问

辅助存储器:速度最慢、价格最低、容量最大、断电不丢失、cpu不可以直接访问

五、CPU工作原理

1.CPU工作原理

程序是指令的有序集合

2.指令的执行过程

取址:CPU将PC寄存器中的地址发送给内存,内存将其地址中对应的指令返回,存到CPU中的指令寄存器IR

译码:译码器对IR中的指令进行识别,将指令解析成具体的运算器

执行:控制器控制运算器对应的运算单元进行运算,运算的结果写入寄存器

注意:PC每取地址一次,自加一次

3.地址空间

   一个处理器能够访问(读写)的存储空间是有限的,我们把这个空间称为地址空间(寻址空间)。通常情况下地址空间的大小2的N次方

六、ARM体系结构

1.ARM处理器概述

1.1.ARM的含义

1.ARM公司

       1978年Acorn成立于应该剑桥

1980年晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心

1985年开发出全球第一款商用RISC处理器-ARM1

1990年艾康电脑财务危机,苹果和VLSI投资,独立出子公司Advanced RISC Machines(ARM)

1991年,ARM推出RISC处理器-ARM6  93-ARM7  97--ARM9TDMI 99--ARM9E  

2001--ARMV6  2022--ARM11

2004年,发布ARMV7架构的Cortex系列处理器,同时推出Cortex-M3

2005年,发布Cortex-A8处理器  07 M1和Cortex-A9  09 实现Cortex-A9 发布 M0

2010--M4

2.微处理器的统称

       早期经典处理器:ARM7 ARM9 ARM11

      A:   高性能 电脑 平板

      R:实时性高  航天  自动驾驶

      M:微处理器:M0  M3  M4

3.一种指令集

  指令:能够指示处理器执行某种云端的命令称为指令  +  - <<  >>

指令集:处理器能够识别的指令的集合称为指令集

      ARM指令集:所有指令(机器码),都专用32bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加4

      Thumb指令集:所有指令(机器码),都专用16bit存储空间,代码灵活,指令简洁,执行ARM指令PC每次自加2

4.RISC和CISC

RISC处理器

    只保留常用的的简单指令,硬件结构简单,复杂操作一般通过简单指令的组合实现,一般指令长度固定,且多为单周期指令

    RISC处理器在功耗、体积、价格等方面有很大优势,所以在嵌入式移动终端领域应用极为广泛

 CISC处理器

    不仅包含了常用指令,还包含了很多不常用的特殊指令,硬件结构复杂,指令条数较多,一般指令长度和周期都不固定

  CISC处理器在性能上有很大优势,多用于PC及服务器等领域

1.2.编译原理

机器码(二进制)是处理器能直接识别的语言,不同的机器码代表不同的运算指令,处理器能够识别哪些机器码是由处理器的硬件设计所决定的,不同的处理器机器码不同,所以机器码不可移植

 汇编语言是机器码的符号化,即汇编就是用一个符号来代替一条机器码,所以不同的处理器汇编也不一样,即汇编语言也不可移植

 C语言在编译时我们可以使用不同的编译器将C源码编译成不同架构处理器的汇编,所以C语言可以移植

2. 数据类型

​​​​​​​2.1ARM数据的类型

ARM采用32位架构,基本数据类型有以下三种:

Byte        8bits

Halfword  16bits

word      32bits   

数据的存储

  word型数据在内存的起始地址必须以4的整数倍存储

  Halfword型数据在内存的起始地址必须以2的整数倍存储

​​​​​​​2.2.字节序

大端对齐

低地址存到高地址,高地址存放到低地址

小端对齐

低地址存到低地址,高地址存放到高地址

注:ARM一般使用的是小端对齐

七、ARM工作模式

1.ARM 8个基本的工作方式(只有A系列才有8种)

User 非特权模式,一般在执行上层的应用程序时ARM处于该模式

FIQ  当一个高优先级中断产生后ARM将进入这种模式

IRQ   当一个低优先级中断产生后ARM将进入这种模式

SVC 当复位或执行软中断指令后ARM将进入这种模式

Abort  当产生存取异常时ARM将进入这种模式

Undef 当执行未定义的指令时ARM将进入这种模式

System 使用和User模式相同寄存器集的特权模式

Monitor 为了安全而扩展出的用于执行安全监控代码的模式(只有A系列才有)

2.工作模式的理解

不同的模式拥有不同的权限

不同的模式执行的代码不同

不同的模式拥有不同的功能

3.工作模式分类

​​​​​​​八、寄存器

1.寄存器   通用寄存器

概念:寄存器是处理器内部的存储器,没有地址

作用:一般用于暂时存储参与运算的数据和运算结果

分类:

通用寄存器、专用寄存器、控制寄存器

​​​​​​​2.ARM寄存器​​​​​​​

3.专用寄存器

R15(PC,Program Counter)

程序计数器,用于存储当前取址指令的地址

R14(LR,Link Register)

链接寄存器,一般有以下两种用途:

> 执行跳转指令(BL/BLX)时,LR会自动保存跳转指令下一条指令的地址

程序需要返回时将LR的值复制到PC即可实现

> 产生异常时,对应异常模式下的LR会自动保存被异常打断的指令的下

一条指令的地址,异常处理结束后将LR的值复制到PC可实现程序返回

R13(SP,Stack Pointer)

栈指针,用于存储当前模式下的栈顶地址

​​​​​​​4.CPSR寄存器

CPSR(Current Program Status Register),当前程序状态寄存器

CPSR寄存器分为四个域,[31:24]为条件域用F表示、[23:16]为状

态域用S表示、[15:8]为预留域用X表示、[8:0]为控制域用C表示

Bit[4:0]

[10000]User    [10001]FIQ     [10010]IRQ     [10011]SVC

[10111]Abort   [11011]Undef   [11111]System  [10110]Monitor

Bit[5]

[0]ARM状态     [1]Thumb状态

Bit[6]

[0]开启FIQ     [1]禁止FIQ

Bit[7]

[0]开启IRQ     [1]禁止IRQ

Bit[28]

> 当运算器中进行加法运算且产生符号位进位时该位自动置1,否则为0

> 当运算器中进行减法运算且产生符号位借位时该位自动置0,否则为1

Bit[29]

> 当运算器中进行加法运算且产生进位时该位自动置1,否则为0

> 当运算器中进行减法运算且产生借位时该位自动置0,否则为1

Bit[30]

当运算器中产生了0的结果该位自动置1,否则为0

Bit[31]

当运算器中产生了负数的结果该位自动置1,否则为0

九、ARM异常处理

1.异常

概念:

  处理器在正常执行过程中可能遇到一些不正常的事件发生,这时处理器就要将当前程序暂停下来转而去执行这个异常事件,异常事件处理完之后返回被异常大端的地方继续执行。

2.​​​​​​​异常处理机制

不同的处理器对异常的处理的流程大体相似,但是不同的处理器在具体实现的机制上有所不同;比如处理器遇到哪些事件认为是异常事件遇到异常事件之后处理器有哪些动作、处理器如何跳转到异常处理程序如何处理异常、处理完异常之后又如何返回到被打断的程序继续执行等我们将这些细节的实现称为处理器的异常处理机制

​​​​​​​3.ARM异常源

 概念

    导致异常产生的事件称为异常源

 ARM异常源

    FIQ 快速中断请求引脚有效

    IRQ 外部中断请求引脚有效

    Reset 复位电平有效

    Software Interrupt 执行swi指令

    Data Abort 数据终止

    Prefetch Abort 指令预取终止

    Undefined Instruction 遇到不能处理的指令

​​​​​​​4.ARM异常模式

异常模式

    在ARM的基本工作模式中有5个属于异常模式,即ARM遇到异常后会切换成对应的异常模式​​​​​​​

​​​​​​​5.ARM异常响应

ARM产生异常后的动作(自动完成)

  1. 拷贝CPSR中的内容到对应的异常模式下的SPSR
  2. 修改CPSR的值

 2.1修改终端禁止位禁止相应的中断

 2.1修改模式位进入相应的异常模式

 2.3修改状态位进入ARM状态

  1. 保存返回地址到对应模式下的LR中
  2. 设置PC位相应的异常向量

6.异常向量表

异常向量表

> 异常向量表的本质是内存中的一段代码

> 表中为每个异常源分配了四个字节的存储空间

> 遇到异常后处理器自动将PC修改为对应的地址

> 因为异常向量表空间有限一般我们不会再这里

写异常处理程序,而是在对应的位置写一条跳转指令使其跳转到指定的异常处理程序的入口

注:ARM的异常向量表的基地址默认在0x00地址但可以通过配置协处理器来修改其地址

​​​​​​​7.异常返回

ARM异常返回动作(自己编写)

  1. 将SPSR的值复制给CPSR-》恢复为跳转之前的模式
  2. 将LR的值复制给PC-》返回跳转之前程序执行的地方
    1. IRQ异常举例

​​​​​​​​​​​​​​             2.异常优先级

 8.​​​​​​​异常优先级

十、ARM微架构

 1.流水线

(1)指令流水线

指令流水线机制的引入确实能够大大的提升指令执行的速度,但在实际执行程序的过程中很多情况下流水线时是无法形成的,比如芯片刚上电的前两个周期、执行跳转指令后的两个周期等

所以指令流水线的引入以及优化只能使平均指令周期不断的接近1而不可能真正的达到1,且流水线级数越多芯片设计的复杂,程度就越高,芯片的功耗就越高.

单片机是3级流水线

(2)多核处理器

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

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

相关文章

自动化测试实战项目(二)连连看外挂

自动化测试和做外挂的原理很相似&#xff0c;都是模拟用户的鼠标和键盘操作, 给自己的程序写自动化就是做测试&#xff0c;给别人的程序写自动化就是外挂了。 本文使用的技术也同样适用制作“对对碰”&#xff0c;"找茬" 之类游戏的外挂。 阅读目录 QQ连连看外挂实…

《面试1v1》垃圾回收机制

我是 javapub&#xff0c;一名 Markdown 程序员从&#x1f468;‍&#x1f4bb;&#xff0c;八股文种子选手。 面试官&#xff1a; 小伙子,跟我聊聊垃圾回收机制吧。什么是垃圾?怎么回收? 候选人&#xff1a; 好的面试官,来吧!垃圾就是那些不再被程序使用的对象。Java 通过…

Spring Boot定时任务

目录 1.概述 2.Spring Boot定时任务 2.1.快速使用 2.2.cron表达式 3.业务示例 3.1.业务描述 3.2.业务实现 4.实现原理 5.自定义线程池 1.概述 在某些业务场景中&#xff0c;需要定时执行一些任务&#xff0c;有可能是定时统计然后生成报表&#xff0c;有可能是定时发…

Python自定义函数

目录 1. 语法 2. 常见用法 2.1. 函数的返回值 2.2. 函数互相调用 3. 实战练习 3.1. 定义执行Linux命令的函数 1. 语法 #定义函数 def 函数名(参数1, 参数2):函数体(代码块)......#调用函数(定义函数时使用了参数&#xff0c;调用也必须使用参数) 函数名(参数1, 参数2) 定…

React学习6 路由

SPA的理解 单页Web应用&#xff08;single page web application&#xff0c;SPA&#xff09;。整个应用只有一个完整的页面。点击页面中的链接不会刷新页面&#xff0c;只会做页面的局部更新。数据都需要通过ajax请求获取, 并在前端异步展现。 什么是路由? 一个路由就是一个…

网络连接管理除了TCP三次握手,还有TCP四次挥手

网络连接管理除了TCP三次握手&#xff0c;还有TCP四次挥手 TCP三次握手&#xff0c;TCP四次挥手 网络连接管理除了TCP三次握手&#xff0c;还有TCP四次挥手TCP三次握手TCP四次挥手总结 TCP三次握手 网络通信建立连接&#xff0c;TCP会进行三次握手&#xff0c;三次握手主要是两…

【叠高高】叠蛋糕游戏的微信小程序开发流程详解

记得小时候玩过的搭积木游戏吗&#xff0c;和叠高高游戏原理差不多的&#xff0c;与之类似的还有盖高楼游戏&#xff0c;就是看谁盖的&#xff08;叠的&#xff09;最高&#xff0c;这里讲一下比较基础的叠高高游戏小程序实现过程&#xff0c;对编程感兴趣的同学可以参考学习一…

Linux Shell 实现一键部署Rust1.69

rust 前言 一门赋予每个人&#xff0c;构建可靠且高效软件能力的语言。 全世界已有数百家公司在生产环境中使用 Rust&#xff0c;以达到快速、跨平台、低资源占用的目的。很多著名且受欢迎的软件&#xff0c;例如 Firefox、 Dropbox 和 Cloudflare 都在使用 Rust。从初创公司…

网络安全工程师的入门学习路径,年薪30W不是梦!

最近看到网上有很多人在问诸如&#xff1a;“怎样成为网络信息安全工程师”等相关问题&#xff0c;这可能与近几年网络安全事件频发&#xff0c;国家对于互联网信息安全和互联网舆情的重视程度不断提升有关&#xff0c;网络信息安全工程师随之成为炙手可热的职业。 首先&#…

Web的基本漏洞--文件包含漏洞

目录 一、文件包含漏洞的介绍 1.文件包含漏洞的原理 2.常见的文件包含函数 3.文件包含漏洞的分类 本地文件包含漏洞 远程文件包含漏洞 3.文件包含漏洞的危害 4.文件包含漏洞的防范措施 5.文件包含漏洞的绕过手法 空字符绕过 超长字符绕过 一、文件包含漏洞的介绍 1…

5年经验之谈:月薪3000到30000,测试工程师的变“行”记

自我介绍下&#xff0c;我是一名转IT测试人&#xff0c;我的专业是化学&#xff0c;去化工厂实习才发现这专业的坑人之处&#xff0c;化学试剂害人不浅&#xff0c;有毒&#xff0c;易燃易爆&#xff0c;实验室经常用丙酮&#xff0c;甲醇&#xff0c;四氯化碳&#xff0c;接触…

你需要知道的 Selenium4 新特性

前言 最近又用到了Selneium&#xff0c;发现已经来到了 4.9 版本了。本篇文章来介绍下它较比 Selenium3 的一些新特性。 记录下&#xff0c;当是做笔记了。 最令人惊喜的是&#xff0c;Selenium4 会自动回收浏览器资源。 本文所使用的 Selenium 版本为 4.9.9 知识点&#x1f4…

开发一个收废品小程序步骤

随着环保意识的提升和可持续发展的迫切需求&#xff0c;废品回收成为了一个重要的议题。预约上门回收小程序的开发为用户提供了方便、快捷的废品回收服务&#xff0c;促进了废品资源的再利用和环保行动的推进。本文将介绍开发预约上门回收小程序的流程&#xff0c;以帮助开发人…

java12--本章作业

1. 第1题 public class Hello{public static void main(String[] args){Person[] persons new Person[3];persons[0] new Person("zsq", 18, "学生");persons[1] new Person("zzq", 19, "大学生");persons[2] new Person("zq…

【leetcode】1130. 叶值的最小代价生成树

1130. 叶值的最小代价生成树 1、问题描述2、解决方案2.1、动态规划2.1.1、问题分析2.1.2、代码实现 2.2、单调栈 1、问题描述 1130. 叶值的最小代价生成树 给你一个正整数数组 arr&#xff0c;考虑所有满足以下条件的二叉树&#xff1a; 每个节点都有 0 个或是 2 个子节点。数…

一文3000字实现基于Selenium+Python的web自动化测试框架

一、什么是Selenium&#xff1f; Selenium是一个基于浏览器的自动化测试工具&#xff0c;它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium主要包括三部分&#xff1a;Selenium IDE、Selenium WebDriver 和Selenium Grid。 Selenium IDE&#xff1a;Firefo…

2.4 IDEA开发词频统计项目

一、词频统计准备工作 &#xff08;一&#xff09;启动集群的HDFS与Spark 启动HDFS服务 启动Spark集群 &#xff08;二&#xff09;在HDFS上准备单词文件 在master虚拟机上创建单词文件 - words.txt 将单词文件上传到HDFS指定目录/wordcount/input 二、本地模式运行Sp…

RCE漏洞演示,墨者靶场

#案列演示 打开墨者靶场&#xff0c;黑盒#命令注入执行分析 这个功能点有这么个功能&#xff0c;进行类似的像我们电脑上ping命令&#xff0c;这相当于就满足了命令&#xff0c;明显可能出现命令执行漏洞&#xff0c;可控变量和漏洞函数都存在。第一要去分析是什么操作系统&am…

批量 ping 网段的终极方法

我们分析和判定网络故障&#xff0c;如果有 10 设备&#xff0c;100 台设备&#xff0c;1000 台设备怎么办&#xff1f;一个个 ping 过去人都要疯掉了&#xff0c;这种情况在大型网络中我们有可能遇到&#xff0c;那怎么办呢&#xff1f;来听听海翎光电小编的一点看法吧&#x…

Spark写入Hive报错Mkdir failed on :com.alibaba.jfs.JindoRequestPath

1. 报错内容 23/05/31 14:32:13 INFO [Driver] FsStats: cmdmkdirs, srcoss://sync-to-bi.[马赛克].aliyuncs.com/tmp/hive, dstnull, size0, parameterFsPermission:rwx-wx-wx, time-in-ms32, version3.5.0 23/05/31 14:32:13 ERROR [Driver] ApplicationMaster: User class …