ARM基础

news2024/10/3 2:21:27

文章目录

  • 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            S3C44B0
 ARMv4            ARM9            S3C2440 S3C2410
 ARMv5            ARM9+XScale
 ARMv6            ARM11        S3C6410
 ARMv7            cortex-M
                       cortex-A
                       cortex-R
        -----------------------------------------------------------
       cortex-A8        S5PV210/S5PC100
        cortex-A9        Exynos4412
        cortex-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和开发板。

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

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

相关文章

面试问到不会的技术问题?大小公司?程序员、校招面试技巧

大家好,欢迎来到停止重构的频道。本期我们分享一下程序员面试的相关经验。可能是3月离职高峰,又或者毕业生准备找工作的缘故,最近有一些朋友问我们关于面试方面的经验。问题五花八门:面试总是紧张?项目、工作经验怎么介…

2023功能测试真的没有出路了吗?不会自动化测试的我留下了悔恨的泪水...

直接抛出我的结论:手工做业务类测试,没有前途。10K的工资已经是天花板 个人建议赶紧从业务测试跳出来,立即学习代码,走自动化测试方向。目前趋势,业务测试需要用自动化做。 为了让大家能够信服我的观点,本…

python-爬虫-字体加密

直接点 某8网 https://*****.b*b.h*****y*8*.com/ 具体网址格式就是这样的但是为了安全起见,我就这样打码了. 抛出问题 我们看到这个号码是在页面上正常显示的 F12 又是这样就比较麻烦,不能直接获取.用requests库也是获取不到正常想要的 源码的,因为字体加密了. 查看页面源代码…

开发一个会员管理系统

背景 由于现在公司内客户量剧增, 简单的靠电话及笔记本记录,来维护客户有些困难,但又不想去花钱购买那些专业版的会员管理系统,只能自己动手撸一个相对简易的会员系统来使用了。 开发语言及使用技术 后端:java、mys…

滑动窗口(同向)同向双指针 leetcode713 3 1004 1234

同向双指针的理解 双指针从同一侧开始走一般是right进行无脑遍历,left控制边界(导致模板化)深刻理解题目概念以及**(right - left 1)** 的含义多思考画图 模板 class Solution { public:int numSubarrayProductLess…

NLP中一些工具列举

文章目录StanfordcoreNLPStanzaTankitspaCySuPar总结StanfordcoreNLP 这个老早就出来了,用java写的,但是已经有很多比他效果好的了。 Stanza 2020ACL发表的,看名字就知道和上一个是同一家的。 用已经切好词的句子进行依存分析。 这个功能…

百度“文心一言”携手酷开科技,实现AI智能领域新突破!

进入21世纪,AI人工智能一直都是讨论度非常高的话题之一,各行各业的领导者都开始在智能领域进行了初步探索,这也证明了AI人工智能在未来一定会在很大程度上影响我们的生活、工作。 近日,深圳市酷开网络科技股份有限公司成为百度文…

Kuangbin 线性DP 最大和加强加强版

呃呃,一道题写了我一下午4546. 最大和加强加强版 - AcWing题库题意:思路:首先这道题没有明显的阶段,因此状态设计不能按照阶段去设计我们按照题目给的量去设计状态:设dp[i][j]为考虑前i个数分为j组的最大可能和如果这样…

百度前端二面vue面试题指南

Vue 组件间通信有哪几种方式? ​ Vue 组件间通信是面试常考的知识点之一,这题有点类似于开放题,你回答出越多方法当然越加分,表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通…

5个好用的视频素材网站

推荐五个高质量视频素材网站,免费、可商用,赶紧收藏起来! 1、菜鸟图库 视频素材下载_mp4视频大全 - 菜鸟图库 网站素材非常丰富,有平面、UI、电商、办公、视频、音频等相关素材,视频素材质量很高,全部都是…

Java——异常

目录 什么是异常 异常处理主要的5个关键字 异常的体系结构 异常语法 异常的分类 异常的处理流程 异常的处理 防御式编程 异常的抛出 throw的注意事项 异常的捕获 异常声明throws try-catch捕获处理 finally 自定义异常类 throw和throws区别 什么是异常 程序在运行时出现错…

什么情况下Java程序会产生死锁?如何定位、修复?

第18讲 | 什么情况下Java程序会产生死锁?如何定位、修复? 今天,我会介绍一些日常开发中类似线程死锁等问题的排查经验,并选择一两个我自己修复过或者诊断过的核心类库死锁问题作为例子,希望不仅能在面试时,…

NOC2021年测试卷1

一、单项选择题(共15题,每题3分,共45分) 1.下列应用不能体现人工智能技术的是()。 A、使用语音输入法输入文字B、使用OCR软件从图像中识别汉字C、某软件支持在线中英文互译D、某网站自动统计歌曲下载次数2.点击绿旗执行图中的脚本,若角色的坐标为 (25, 20) ,则说出的内…

元数据管理实践数据血缘

元数据管理实践&数据血缘 什么是元数据?元数据MetaData狭义的解释是用来描述数据的数据,广义的来看,除了业务逻辑直接读写处理的那些业务数据,所有其它用来维持整个系统运转所需的信息/数据都可以叫作元数据。比如…

微服务一 实用篇 - 2. SpringCloud02

《微服务一 实用篇 - 2. SpringCloud02》 提示: 本材料只做个人学习参考,不作为系统的学习流程,请注意识别!!! 《微服务一 实用篇 - 2. SpringCloud02》《微服务一 实用篇 - 2. SpringCloud02》1.Nacos配置管理1.1.统一配置管理1.1.1.在nacos中添加配置文件1.1.2.从微服务拉取…

GaN/氮化镓65W(1A2C)PD快充电源方案

近期美阔电子推出了一款全新的氮化镓65W(1A2C)PD快充充电器方案,该方案采用同系列控制单晶片:QR一次侧控制IC驱动MTCD-mode GaN FET(MGZ31N65-650V)、二次侧同步整流控制IC及PD3.0协议IC)可达到最佳匹配。 GaN/氮化镓作为第三代半…

IDEA中开发Android完整示例及APK的生成(包含用户名密码输入获取等操作)

先看看运行演示程序效果: 输入内容并点击确定按钮效果如下图, (已测试传到真机中安装运行效果一模一样兼容基本所有安卓版本:) 实现步骤如下: 1,先安装AndroidSDK 点击File->new project->Android 这个因为我…

TSBS 是什么?为什么时序数据库 TDengine 会选择它作为性能对比测试平台?

TSBS 是一个时序数据处理(数据库)系统的性能基准测试平台,提供了 IoT、DevOps 两个典型应用场景,它由 Timescale 开源并负责维护。作为一个性能基准测试平台,TSBS 具有便捷、易用、扩展灵活等特点,涵盖了时…

MySQL卸载教程(详细)

系列文章 C#项目–业务单据号生成器(定义规则、自动编号、流水号) 本文链接:https://blog.csdn.net/youcheng_ge/article/details/129129787 C#项目–开始日期结束日期范围计算(上周、本周、明年、前年等) 本文链接&…

taobao.open.account.update( Open Account数据更新 )

¥开放平台免费API不需用户授权 Open Account数据更新 公共参数 请求地址: HTTP地址 http://gw.api.taobao.com/router/rest 公共请求参数: 公共响应参数: 响应参数 点击获取key和secret 请求示例 TaobaoClient client new DefaultTaobaoClient(url, appkey, sec…