ARM基础
文章目录
- 1.ARM成长史
- 1.1 ARM发展的里程碑1
- 1.2 ARM发展的里程碑2
- 1.3 ARM发展的里程碑3
- 1.4 ARM发展的里程碑4
- 2.ARM的商业模式和生态系统
- 3.先搞清楚各种版本号
- 3.1 ARM 的型号命名问题
- 3.2 ARM 的几种版本号
- 3.3 ARM型号的发展历程
- 4.SoC和CPU的区别 & 外设概念的引入
- 4.1 SoC和CPU
- 4.2 外设(Peripheral)
- 5.单片机和嵌入式
- 5.1 芯片平台
- 5.2 资源、价格、应用领域
- 5.3 开发模式
- 5.4 技术特征
- 6.嵌入式系统的特点和演进方向
- 6.1 嵌入式系统组成
- 6.2 嵌入式系统的分层
- 6.3 嵌入式系统的发展演进1
- 6.4 嵌入式系统的发展演进2
- 7.交叉编译
- 7.1 两种开发模式
- 7.2 为何使用交叉编译
- 7.3 交叉编译的特点
- 8.CPU的设计原理,数据总线和地址总线
- 8.1 三种总线
- 9.Jlink,SD卡等辅助设备
- 9.1 嵌入式开发特点
- 9.2 Jlink的作用
- 9.3 SD卡的作用
- 9.4 USB转串口线的作用
1.ARM成长史
1.1 ARM发展的里程碑1
- ARM的前身为艾康电脑(Acorn)1978年英国剑桥创建;
- 1980年末 苹果加入合作开发ARM核心;
- 1985年第一款商用的RISC处理器即为ARM1上市;
- 1990年 艾康公司 分立出我们现在所知道的 ARM Aduvanced RSIC Machines ARM公司上市;
1.2 ARM发展的里程碑2
- 1991年,ARM推出第一款嵌入式RISC处理器,即ARM6
- 1993年,发布ARM7
- 1997年,发布ARM9TDMI
- 1999年,发布ARM9E
- 2001年,发布 ARMv6 架构
- 2002年,发布 ARM11 微架构
1.3 ARM发展的里程碑3
- 2004年,发布 ARMv7 架构的 Cortex 系列处理器,同时推出Cortex-M3
- 2005年,发布 Cortex-A8 处理器
- 2007年,发布 Cortex-M1 和 Cortex-A9
- 2009年,实现 Cortex-A9、发布 Cortex-M0
- 2010年,推出 Cortex-M4、成立 Linaro,推出 Cortex-A15 MPcore 高性能处理器
1.4 ARM发展的里程碑4
- 2011年,推出Cortex-A7,ARMv8 发布
- 2012年,开始64位处理器进程
2.ARM的商业模式和生态系统
- ARM只负责设计IC,并且出卖自己的设计IP(版权)。
- ARM自己不生产芯片,而是把设计IP授权给其他半导体厂商来生产芯片。
- 严格地说,ARM并不是一家半导体厂商。
3.先搞清楚各种版本号
3.1 ARM 的型号命名问题
- ARM7 和 ARMv7不是一回事
- Cortex-A9 比 Cortex-A7更先出来
- 型号很乱,初学者分不清那个是那个
3.2 ARM 的几种版本号
- ARM内核版本号 ARMv7
- ARM SOC版本号 Cortex-A8
3.3 ARM型号的发展历程
ARM内核版本号和SoC版本号是由ARM确定的,而SoC型号是由半导体公司确定的。SOC(system on ship)内核版本号 SOC版本号 芯片型号(三星)ARMv1......ARMv4 ARM7 S3C44B0ARMv4 ARM9 S3C2440 S3C2410ARMv5 ARM9+XScaleARMv6 ARM11 S3C6410ARMv7 cortex-Mcortex-Acortex-R-----------------------------------------------------------cortex-A8 S5PV210/S5PC100cortex-A9 Exynos4412cortex-A7 全志A10 A20 A31-----------------------------------------------------------cortex-A53 A57 高通骁龙815和410,苹果iPhone5s
cortex-M microcontroller cortex-A application cortex-R realtime |
4.SoC和CPU的区别 & 外设概念的引入
4.1 SoC和CPU
- SoC = System on Chip
- 芯片的发展方向:从CPU到SoC
- 现在已经没有纯粹的CPU了,都是SoC
- ARM出卖的内核其实就是CPU(当然还需要总线),各种外设是半导体厂商自己添加的。
4.2 外设(Peripheral)
- 外设就是外部设备
- SoC中外设大部分都跑进去了
- 网卡、音频编解码等个别还经常在外面
- 芯片设计的趋势是更大集成度,近年甚至将音视频编解码、DDR都集成进SoC内做成所谓单芯片解决方案。如海思Hi3518E
- 裸机学习其实就是学习SoC的内核(CPU,表现为汇编指令集)和各种外设(如串口)
5.单片机和嵌入式
5.1 芯片平台
- 主流的芯片平台:51、PIC、AVR、MSP430、STM32等
- 主流的嵌入式平台:ARM、PPC、MIPS
5.2 资源、价格、应用领域
- 单片机片上资源有限、价格低、应用领域多为小家电、终端设备等。
- 嵌入式系统片上资源丰富、价格较高、应用领域宽广,如智能手机、平板电脑、游 戏机、路由器、摄像机、智能电视机、广告机、智能手表、收银机等。
5.3 开发模式
- 单片机开发多为裸机,程序规模小,多为单个程序员独立开发。有些复杂产品也会使用高端单片机如STM32之类,并使用RTOS(uCOS、freeRTOS等)。
- 嵌入式开发几乎全部基于嵌入式操作系统,目前使用最多的是linux和Android。
5.4 技术特征
编程语言方面:单片机主要使用C语言(少量用汇编),和标准C略有不同,很少使用结构体、函数指针等C语言高级特性。而嵌入式开发较复杂,一般分底层和应用层。底层使用C语言,应用层使用C、C++、Java等语言均有。嵌入式C语言对结构体、数据结构、算法、函数指针(用来实现面向对象)等高级特性使用比较多。
软硬件组件方面:单片机多涉及一些简单外设,譬如串口、I2C、ADC、LCD(小屏幕和分辨率);
而嵌入式系统则涉及更多复杂外设,譬如网络(有线网卡、wifi、蓝牙等)、USB、音视频编解码等。
6.嵌入式系统的特点和演进方向
- 专用、软硬件可裁剪可配置
- 低功耗、高可靠性、高稳定性
- 软件代码短小精悍
- 代码可固化
- 实时性
- 弱交互性
- 专用开发工具及开发环境
- 专业开发人员
6.1 嵌入式系统组成
- 硬件:微处理器、存储器、I/O接口、输入输出设备等
- 软件:嵌入式操作系统、BSP boardsupport package板级支持板、应用软件;
6.2 嵌入式系统的分层
- 应用程序:GUI、GPRS、3G、WIFI等;
- 操作系统:智能操作系统、操作平台;
- 硬件:中央处理器、ROM、RAM、IO和电源;
6.3 嵌入式系统的发展演进1
- 以单芯片为核心、可编程控制器存在形式
没有操作系统支持
软件以汇编为主
功能单一、处理效率低、存储容器小、没有对外接口
使用简单、价格低 - 以嵌入式CPU为基础、简单操作系统为核心
CPU种类多,通用性弱
系统开销小,效率高
达到一定兼容性,拓展性
用户体验度不高,交互界面不够友好
6.4 嵌入式系统的发展演进2
- 以嵌入式操作系统为标志
兼容性好,适用于不同平台
系统开销小,效率高,具有高度模块化及拓展性
图形化界面,用户界面友好
丰富的外部接口 - 以物联网为标志
将传感器技术、互联网技术及传统嵌入式技术综合联系
小型化、智能化、网络化及可视化
低功耗、绿色环保
多核技术SWP、云计算技术及虚拟化技术
7.交叉编译
7.1 两种开发模式
- 非嵌入式开发:A类机编写、编译,得到可执行程序,发布给A类机运行;
- 嵌入式开发:A类机编写、编译,得到可以行程序,发布给B类机运行;
7.2 为何使用交叉编译
- 嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。
- 交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和 应用级软件)
7.3 交叉编译的特点
- 必须使用交叉编译工具链;
- 由于可执行程序不能再本地运行调试,因此,必须配合一定的手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启 动、网络共享等)将可执行程序加载到目标嵌入式设备上运行调试;
8.CPU的设计原理,数据总线和地址总线
8.1 三种总线
数据总线:CUP通过地址总线寻址,然后通过数据总线与外部设备交换信息;
地址中线:地址总线的位数决定CPU的寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量;总线的速度决定CPU和外设互换信息的速度。
命令总线:CPU在通过数据总线进行数据交换时,会通过命令总线发送一个命令,然后再通过地址总线和数据总线,进行数据交换;
注意:
电脑位数指的是数据总线数量
CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。
CPU的位数指的是数据总线的位数。
32位CPU寻址的范围是4G,所以最多支持4G内存;
数据总线是32位的,所以内存是32位的好,所以编程最好用int
9.Jlink,SD卡等辅助设备
9.1 嵌入式开发特点
- 采用交叉编译,不便于本机运行调试程序;
- 嵌入式需要BootLoader来启动,BootLoader必须先存在于启动介质中,需要专业工具
- 嵌入式系统无法通过纯软件实现单步调试,因此,必须借助专用的调试器。
9.2 Jlink的作用
- 用于下载可执行程序到目标机;
- 在目标机上实现单步调试,便于开发BootLoader;
9.3 SD卡的作用
作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入 嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧录的镜像处启动。
9.4 USB转串口线的作用
- 串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。
- 因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。
相关文章:

ARM基础
文章目录1.ARM成长史1.1 ARM发展的里程碑11.2 ARM发展的里程碑21.3 ARM发展的里程碑31.4 ARM发展的里程碑42.ARM的商业模式和生态系统3.先搞清楚各种版本号3.1 ARM 的型号命名问题3.2 ARM 的几种版本号3.3 ARM型号的发展历程4.SoC和CPU的区别 & 外设概念的引入4.1 SoC和CPU…...

Python排序 -- 内附蓝桥题:错误票据,奖学金
排序 ~~不定时更新🎃,上次更新:2023/02/28 🗡常用函数(方法) 1. list.sort() --> sort 是 list 的方法,会直接修改 list 举个栗子🌰 li [2,3,1,5,4] li.sort() print(li) …...
容器化部署是什么意思?有什么优势?
多小伙伴不知道容器化部署是什么意思?不知道容器化部署有什么优势?今天我们就来一起看看。 容器化部署是什么意思? 容器化部署是指将软件代码和所需的所有组件(例如库、框架和其他依赖项)打包在一起,让它…...
1.设计模式简介
一、设计模式的目的 1. 代码重用性 2. 可读性 3. 可扩展性 4. 可靠性 5. 高内聚,低耦合 二、设计模式七大原则 1. 单一职责原则 1)降低类的复杂度,一个类只负责一项职责 2)提高类的可读性,可维护性 3&#x…...
【算法题解】实现一个包含“正负数和括号”的基本计算器
这是一道 困难 题。 题目来自:leetcode 题目 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 注意: 不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。 提示: s 由数字、‘’、‘-’…...
网站服务器如何防护攻击?网站服务器被挂马如何检测
网站服务器是指安装在互联网上的服务器,主要用于提供网站服务。由于网站服务器的重要性,它也是攻击者的活动焦点,因此如何防护攻击就显得尤为重要。本文将分析网站服务器是如何被攻击的以及如何防护攻击。 网站服务器是怎么被攻击的? 网站…...
JavaSE16-面向对象-接口
文章目录一、概念二、格式1.使用interface来定义接口2.implements实现接口三、接口中的成员1.常用成员2.新增成员(不重要)2.1 默认方法2.2 静态方法2.3 私有方法四、继承关系 & 实现关系五、抽象类和接口的使用区别一、概念 接口就是规范\规则&…...
安卓设备蓝牙键盘快捷键
安卓设备蓝牙键盘快捷键前言注意鼠标按键系统快捷键桌面快捷键输入法快捷键其它快捷键旧快捷键(已失效)前言 安卓设备可以通过蓝牙或有线外接键盘,值得一提的是,安卓平板连接蓝牙键盘和蓝牙鼠标是一个不错的组合。本文以鸿蒙3.0平…...

Puppeteer项目结构梳理
最近接触了一个个人感觉很奈斯的项目,故记录思路如下: puppeteer项目梳理: 入口文件 run.js 入口命令 node run.js YourConfig.json 1、我们可以在自己的config.json里面设置好 ①、登录的用户名密码;aws或其它服务器的access等id,accessKey…...

(02)Unity HDRP Volume 详解
1.概述这篇文章主要针对HDRP中的Volume和Volume Post-processing进行解释,针对于各个组件只能进行部分参数的解释,具体的信息可参考官方资料,这里只是对官方文档的图片效果补充以及笔者自己的理解。看到这里进入正文,请确保你的Un…...

拒绝B站邀约,从月薪3k到年薪47W,我的经验值得每一个测试人借鉴
有时候,大佬们总是会特立独行。因为像我这样的常人总是想不通,究竟是怎样的情境,连B站这样的大厂面试都可以推掉? 缘起一通电话,踏出了改变人生轨迹的第一步 我是小瑾,今年28岁,2016年毕业于陕…...
分享一种实用redis原子锁的方式
1. setnx(lockkey, 当前时间过期超时时间) ,如果返回1,则获取锁成功;如果返回0则没有获取到锁,转向2。2. get(lockkey)获取值oldExpireTime ,并将这个value值与当前的系统时间进行比较,如果小于当前系统时间…...
【华为OD机试】 字符串解密(C++ Java JavaScript Python)
题目描述 给定两个字符串string1和string2。 string1是一个被加扰的字符串。 string1由小写英文字母(’a’’z’)和数字字符(’0’’9’)组成,而加扰字符串由’0’’9’、’a’’f’组成。 string1里面可能包含0个或多个加扰子串,剩下可能有0个或多个有效子串,这些有…...

金三银四,助力你的大厂梦,2023年软件测试经典面试真题(1)(共3篇)
前言 金三银四即将到来,相信很多小伙伴要面临面试,一直想着说分享一些软件测试的面试题,这段时间做了一些收集和整理,下面共有三篇经典面试题,大家可以试着做一下,答案附在后面,希望能帮助到大…...
假如面试官要你手写一个promise
promise 在开发中,经常需要用到promise,promise具有很多特性,这一次将对promise特性进行总结,并从零写一个promise。 步骤一 Promise特点 1,创建时需要传递一个函数,否则会报错2,会给传入的函…...

【leetcode】寻找重复数
题目链接:寻找重复数https://leetcode.cn/problems/find-the-duplicate-number/ 方法一:快慢指针 因为只有一个数字是重复的,且一个数字正好对应一个唯一的下标,所以可以将数组抽象为一个链表,假定数组为{1,2,3,4,5,…...
LeetCode 1247. Minimum Swaps to Make Strings Equal【数学,贪心,字符串】
本文属于「征服LeetCode」系列文章之一,这一系列正式开始于2021/08/12。由于LeetCode上部分题目有锁,本系列将至少持续到刷完所有无锁题之日为止;由于LeetCode还在不断地创建新题,本系列的终止日期可能是永远。在这一系列刷题文章…...
pid控制加热算法,附代码仓库
1、该项目层次化结构清晰,代码框架耦合度低,可复用性、可移植性强。 2、功能代码与底层硬件无直接关联,无需更改上层应用逻辑,只需更改接口文件,即可移植到不同的硬件平台; 3、使用lwrb开源组件、pid开源算…...
一文看懂预训练和自训练模型
说到预训练模型,不得不提迁移学习了,由于很多数据不是标签数据,人工标注非常耗时,神经网络在很多场景下受到了限制。但是迁移学习和自学习的出现,在一定程度上缓解甚至解决了这个问题。我们可以在标签丰富的场景下进行…...

(五十四)大白话索引的页存储物理结构,是如何用B+树来实现的?.md
上一次我们给大家说了主键索引的目录结构,只要在一个主键索引里包含每个数据页跟他最小主键值,就可以组成一个索引目录,然后后续你查询主键值,就可以在目录里二分查找直接定位到那条数据所属的数据页,接着到数据页里二…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...

【第二十一章 SDIO接口(SDIO)】
第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...

【2025年】解决Burpsuite抓不到https包的问题
环境:windows11 burpsuite:2025.5 在抓取https网站时,burpsuite抓取不到https数据包,只显示: 解决该问题只需如下三个步骤: 1、浏览器中访问 http://burp 2、下载 CA certificate 证书 3、在设置--隐私与安全--…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
力扣-35.搜索插入位置
题目描述 给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。如果目标值不存在于数组中,返回它将会被按顺序插入的位置。 请必须使用时间复杂度为 O(log n) 的算法。 class Solution {public int searchInsert(int[] nums, …...

以光量子为例,详解量子获取方式
光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...
CSS设置元素的宽度根据其内容自动调整
width: fit-content 是 CSS 中的一个属性值,用于设置元素的宽度根据其内容自动调整,确保宽度刚好容纳内容而不会超出。 效果对比 默认情况(width: auto): 块级元素(如 <div>)会占满父容器…...

算法岗面试经验分享-大模型篇
文章目录 A 基础语言模型A.1 TransformerA.2 Bert B 大语言模型结构B.1 GPTB.2 LLamaB.3 ChatGLMB.4 Qwen C 大语言模型微调C.1 Fine-tuningC.2 Adapter-tuningC.3 Prefix-tuningC.4 P-tuningC.5 LoRA A 基础语言模型 A.1 Transformer (1)资源 论文&a…...