ARM开发

ARM课程介绍 

课程特点

ARM开发 --> Linux移植 --> 驱动开发

前后联系:ARM和系统移植为驱动开发学习做准备工作

所需知识:C语言基础及STM32需要的硬件知识

课程要求

目标:学习程序运行原理、硬件的控制原理

会看原理图、芯片手册、学习解决问题的方法(不要死记硬背

要求:操作过程中一定要大胆动手、大胆操作,有问题及时询问

提醒:耐心、耐心、耐心、多敲、多敲、多敲、多练、多练、多练

课程内容

底层课程导学

Linux层次架构、计算机基础知识、总线、存储结构

ARM体系结构

ARM基础概念、ARM寄存器、工作模式、运行原理、指令流水线、异常处理

工程搭建

环境安装、工程搭建

汇编指令

数据处理、跳转、load/store、状态寄存器、异常中断、协处理器

CPU控制硬件原理

原理、实验(汇编语言、C语言)

学习方法

  • 底层课程导学

接口技术

GPIO:通用输入输出;使能、配置模式(输出)、输出类型(推挽/开漏)、输出速度、输出数据

串口:UART、232、485、SPI、I2C、单总线、CAN、USB、

无线通信:WIFI、LoRA、Zigbee、NB-IoT、蓝牙、4G、5G

PWM:脉冲宽度调制(调节平均电压、屏幕、电机)

ADC:模数转换

嵌入式系统

嵌入式系统(了解)

Linux层次结构

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

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

文件管理:访问硬盘的文件

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

网络管理:协议栈(TCP/IP、UDP/IP)进行通信

计算机的组成

控制器、运算器、存储器、输入、输出

  1. 输入设备:将其他信号转换为计算机可以识别的信号(电信号)。
  2. 输出设备:将电信号(0、1)转为人或其他设备能理解的信号。
  3. 运算器:CPU对信息处理和运算的部件,常进行算术运算和逻辑运算,其核心是算术逻辑单元ALU,CPU中用各种各样的数字电路搭配成各种各样的运算电路,如:加、减法等。
  4. 控制器:整个计算机的控制中心
  5. 存储器:存放程序和数据的部件,也是计算机能够实现“存储程序控制”的基础。

程序:指令的有序集合

ROM: flash (EMMC)、磁盘空间 、掉电不丢失数据

只读存储器_百度百科

RAM: 内存、掉电丢失数据

随机存取存储器_百度百科

计算机的进制

计算机系统中使用高、低电平表示逻辑1和0

数据在计算机中的存储、传输、运算(数据的处理方式)都是以二进制的形式进行的

数据的传输通过总线(Bus)真正传递的是电信号,高低电平(0、1)。运算在电路中进行,集成电路中运算。

总线

总线

总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线地址总线控制总线,分别用来传输数据、数据地址和控制信号

数据总线

(1)是CPU与内存或其他器件之间的数据传送的通道。

(2)数据总线的宽度决定了CPU和外界的数据传送速度。

(3)每条传输线一次只能传输1位二进制数据。如: 8根数据线一次可传送一个8位二进制数据(即一个字节)。

(4)数据总线是数据线数量之和。

地址总线

(1)CPU是通过地址总线来指定存储单元的。

(2)地址总线决定了cpu所能访问的最大内存空间的大小。如: 10根地址线能访问的最大的内存为1024位二进制数据(1024个内存单元)

(3)地址总线是地址线数量之和。

控制总线

(1)CPU通过控制总线对外部器件进行控制。

(2)控制总线的宽度决定了CPU对外部器件的控制能力。

(3)控制总线是控制线数量之和。

总结:

数据总线的宽度决定CPU与其他元器件一次最大传送的数据量;

地址总线的宽度决定CPU的寻址能力;

控制总线决定CPU对其他元器件的控制能力。

DMA总线

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

三级存储结构

cache: 速度快、价格贵、容量小、断电丢失、CPU可以直接访问。存储当前正在执行的程序中的活跃部分,以便快速地向CPU提供指令和数据

基本原理:

Cache的基本原理_cache颠簸-CSDN博客

高速缓存Cache详解(西电考研向)-CSDN博客

主存储器:速度、价格、容量介于CACHE和辅助存储器之间、断电丢失、CPU可以直接访问。存储当前正在执行的程序和数据

辅助存储器:速度慢、价格低、容量大、断电不丢失、cpu不可以直接访问。存储暂时不运行的程序和数据,需要时再传送到主存。

Cache对程序员来说一般会有透明性,也就是程序员其实是看不到Cache的,因此不能对它进行操作。

  • ARM体系结构

认识ARM

ARM的含义?

  1. ARM代表一个公司

安谋国际科技股份有限公司_百度百科

1978年Acorn成立于英国剑桥

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

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

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

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

2001--ARMV6  2002--ARM11

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

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

2010--M4

  1. ARM可以表示一些处理器的统称

早期经典处理器:ARM7 ARM9 ARM11 家族

Cortex-X系列

新出的,通常用在手机,只用一个(除了天机)-----》价格昂贵

Cortex-A系列

针对开放式操作系统的高性能处理器

应用于智能手机、数字电视、智能本等高端运用 

Cortex-R系列

提供非常高的性能和吞吐量,同时保持精准的时序属性和可预测的中断延时,通常用于时序关键的应用中

针对实时系统、满足实时性的控制需求

应于汽车制动系统、动力系统等

Cortex-M系列

为单片机驱动的系统提供了低成本优化方案

应用于传统的微控制器市场、智能传感器、汽车周边等

  1. ARM表示一种指令集

指令:能够指示处理器执行命令称之为指令

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

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

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

ARM的命名指令集架构、 处理器架构、 处理器型号三类命名规则

架构:

arm-v6,arm-v7(32Bits),arm-v8(64Bits),arm-v9.2

架构指支持的汇编指令集(不同架构,汇编指令集不同)

ARMv8-A--------->A53-------->S5P6818 (主频:1.4GHz)

内核:

cortex-A9,A53,A73,A77

ARM公司授权芯片的公司,芯片产家在内核的基础上,增加了一些外设,发布一款芯片,这些芯片可以统称为SoC(天机9300、骁龙)

SoC:System of Chip:(片上系统)

S5P6818(8核)

指令集(RISC和CISC)

精简指令集(RISC)-->微处理器

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

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

举例:如有加法运算器 ,没有乘法运算器    3*3  ---》3+3+3  

复杂指令集(CISC)-->电脑CPU

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

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

ARM-v7架构:

ARM 指令集(32-bit) :一条指令占32位内存空间

Thumb 指令集(16-bit ):一条指令占16位内存空间

ARM-V8架构:(向下兼容ARM-v7架构)

ARM指令集:A64

Thumb指令集:T32

ARM-v7:

ARM指令集:A32

Thumb指令集:T16

ARM指令集功能更全,性能更高

thumb指令集比ARM指令集指令密度要大

 

指令对比查看

  1. 查看精简指令的指令(可以编译后,用反汇编查看代码指令)

使用交叉编译工具编译程序,生成arm的可执行程序

创建一个a.c文件,随便写一个程序

编译生成a.out可执行文件:arm-none-linux-gnueabi-gcc a.c

查看可执行文件属性:file a.out

使用反汇编的命令将elf文件转换为反汇编文件.dis

arm-none-linux-gnueabi-objdump -D a.out > a.dis

  1. 查看ubuntu复杂指令集的指令:

编译生成a.out可执行文件:gcc a.c

查看文件属性:file a.out

反汇编:objdump -D a.out > a.dis

编译原理

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

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

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

ARM的数据类型

ARM-v7架构:32bit处理器

char:8位

halfword:16位

word:32位

doubleword:64位(cortex-a)

ARM-v8架构:64bit处理器 ,向下兼容32位(我们学习32位)

char:8位

halfword:16位

word:32位

doubleword:64位(cortex-a)

quadword:128位(ARM-v8)

处理器的32位和64位什么含义?

32位:一条指令可以进行32位数据的运算

64位:一条指令可以进行64位数据的运算

字节序

大端对齐

低地址存放高字节,高地址存放低节字

小端对齐

低地址存放低字节,高地址存放高字节

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

(1.指针 2.共用体)

 

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

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

相关文章

ChatGPT对话为什么不用WebSocket而使用EventSource?

文章目录 1. 引言2. WebSocket和EventSource简介2.1 WebSocket2.2 EventSource 3. ChatGPT对话系统的特点4. EventSource的优势4.1 简单易用4.2 容错性强4.3 兼容性良好 5. 为何选择EventSource而非WebSocket?5.1 单向通信模式5.2 长轮询模式5.3 简化部署和维护 6. …

SpringBoot+Netty+Websocket实现消息推送

这样一个需求&#xff1a;把设备异常的状态每10秒推送到页面并且以弹窗弹出来&#xff0c;这个时候用Websocket最为合适&#xff0c;今天主要是后端代码展示。 添加依赖 <dependency><groupId>io.netty</groupId><artifactId>netty-all</artifact…

用Go汇编实现一个快速排序算法

本代码全网首发&#xff0c;使用Go plan9 windows arm64汇编&#xff0c;实现基础版快速排序算法。 未引入随机因子的快速排序的普通Go代码长这样。 func QuickSort(arr []int) {if len(arr) < 1 {return}base, l, r : arr[0], 0, len(arr)-1for i : 1; i < r; {if arr…

Vue H5项目,怎么引入uni.webview sdk,调用uni postMessage实现手机蓝牙连接打印功能(uniapp)

前言 目前公司Vue H5项目&#xff0c;用webview打包成APP&#xff0c;现产品提出这样打包出来的app运行较慢&#xff0c;需要用uniapp方式&#xff08;即使用HBuilder编辑器来打包H5&#xff09;来打包&#xff0c;那需要的基座就不是安卓的基座而是uniapp的基座&#xff0c;而…

扭矩法、屈服点法哪个比较高效?——SunTorque智能扭矩系统

在机械制造和维修领域&#xff0c;拧紧螺栓和螺母是一项重要的操作。拧紧方法的合理选择和使用&#xff0c;对于确保机械设备的稳定性和安全性具有至关重要的作用。本文SunTorque智能扭矩系统将介绍两种最常用的拧紧方法&#xff0c;并探讨它们的轴力范围计算方法。一、扭矩法 …

电信网关配置管理系统后台 upload.php 文件上传漏洞复现

0x01 产品简介 中国电信集团有限公司(英文名称“China Telecom”、简称“中国电信”)成立于2000年9月,是中国特大型国有通信企业、上海世博会全球合作伙伴。 0x02 漏洞概述 电信网关配置管理系统后台 /manager/teletext/material/upload.php 接口存在文件上传漏洞,攻击者…

【数电笔记】56-消抖开关

目录 说明&#xff1a; 1. 按键抖动形成的原因 2. 按键消抖的方法 3. 用与非RS触发器构成消抖开关&#xff08;硬件消抖&#xff09; 说明&#xff1a; 笔记配套视频来源&#xff1a;B站本系列笔记并未记录所有章节&#xff0c;只对个人认为重要章节做了笔记&#xff1b;标…

【稳定检索|投稿优惠】2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024)

2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024) 2024 International Conference on Art Appreciation and Social Science Education(ICAASSE) 一、【会议简介】 2024年艺术鉴赏与社会科学教育国际会议(ICAASSE 2024)&#xff0c;这场学术盛宴&#xff0c;将于2024年2月1…

郝斌C语言自学教程笔记

赫斌C语言——笔记目录 c语言编程预备知识流程控制函数变量指针结构体位运算符 前段时间康哥看我C语言基础不牢,推荐我学习郝斌老师的C语言课程&#xff0c;花2周看完之后发现确实是目前所看的C语言课程中最好的&#xff0c;不仅非常适合入门&#xff0c;而且对即使学了几年C语…

怒斥以色列后突发心脏病倒地,土耳其议员抢救无效身亡!

这两天互联网上热传一段视频&#xff0c;说的就是土耳其议员在议会演讲时突然倒地晕厥&#xff0c;两天后就去世了。这可真是让人震惊啊&#xff01; 据说这位议员是土耳其反对党幸福党的&#xff0c;名字叫比特梅兹。他在议会发表批评以色列的言论时&#xff0c;情绪过于激动…

安装2023最新版Java SE 21.0.1来开发Java应用程序

安装2023最新版Java SE 21.0.1来开发Java应用程序 Install the latest version of Java SE 21.01 to Develop Java Applications By JacksonML 本文简要介绍如何下载和安装2023年最新版Java Development Kit (简称JDK&#xff0c;即Java开发工具包标准版&#xff09;21.0.1&…

长尾问题之LDAM

做法&代码&公式 step1: 全连接层的权重W和特征向量X都归一化,相乘 W * X P (得到各个类别的概率) # 定义权重&#xff0c;初始化 weight nn.Parameter(torch.FloatTensor(num_classes, num_features)) weight.data.uniform_(-1, 1).renorm_(2, 1, 1e-5).mul_(1e5)#…

Java 线程的基本概念

创建和运行线程 方法一&#xff0c;直接使用 Thread // 创建线程对象 Thread t new Thread() {public void run() {// 要执行的任务}};// 启动线程 t.start();例如&#xff1a; // 构造方法的参数是给线程指定名字&#xff0c;推荐 Thread t1 new Thread("t1") …

网络安全——SQL注入实验

一、实验目的要求&#xff1a; 二、实验设备与环境&#xff1a; 三、实验原理&#xff1a; 四、实验步骤&#xff1a; 五、实验现象、结果记录及整理&#xff1a; 六、分析讨论与思考题解答&#xff1a; 七、实验截图&#xff1a; 一、实验目的要求&#xff1a; 1、…

《Cadence 16.6电路设计与仿真从入门到精通》——1.4 Cadence SPB 16.6的启动

《Cadence 16.6电路设计与仿真从入门到精通》——1.4 Cadence SPB 16.6的启动  2017-05-027334 版权 简介: 本节书摘来自异步社区《Cadence 16.6电路设计与仿真从入门到精通》一书中的第1章,第1.4节,作者: 王超 , 胡仁喜等 更多章节内容可以访问云栖社区“异步社区”公…

《PCL多线程加速处理》-滤波-统计滤波

《PCL多线程加速处理》-滤波-统计滤波 一、效果展示二、实现方式三、代码一、效果展示 提升速度随着点云越多效果越明显 二、实现方式 1、原始的统计滤波实现方式 #include <pcl/filters/statistical_outlier_removal.h>pcl::PointCloud<pcl::PointXYZ

使用 Python 使用贝叶斯神经网络从理论到实践

一、说明 在本文中&#xff0c;我们了解了如何构建一个机器学习模型&#xff0c;该模型结合了神经网络的强大功能&#xff0c;并且仍然保持概率方法进行预测。为了做到这一点&#xff0c;我们可以构建所谓的贝叶斯神经网络。 这个想法不是优化神经网络的损失&#xff0…

MySQL如何进行Sql优化

&#xff08;1&#xff09;客户端发送一条查询语句到服务器&#xff1b; &#xff08;2&#xff09;服务器先查询缓存&#xff0c;如果命中缓存&#xff0c;则立即返回存储在缓存中的数据&#xff1b; &#xff08;3&#xff09;未命中缓存后&#xff0c;MySQL通过关键字将SQ…

基于CNN+数据增强+残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)+数据集+模型(三)

系列文章目录 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xff08;一&#xff09; 基于CNN数据增强残差网络Resnet50的少样本高准确度猫咪种类识别—深度学习算法应用(含全部工程源码)数据集模型&#xf…

cytoscapejs获取被点击节点位置,并在该节点附近进行双击展示弹窗

获取节点位置 event.target.renderedPosition()其中event是cytoscapejs监听事件中自带的参数 实现 HTML <div id"cy" style"width: 100%; height: 550px; position: relative"><div id"pop-window">进入详情页</div></d…