ARM通识——关于ARM的一些认识

以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。

注意,由于文章的撰写时间过早,很多内容没有更新,这里仅当一个通识了解。

1、ARM发展的里程碑

  • ARM的前身为艾康电脑(Acorn),于1978年,于英国剑桥创立。
  • 在1980年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。
  • 1985年开发出全球第一款商用RISC处理器,即ARM1。
  • 1990年艾康电脑财务危机,受苹果和VLSI的投资,分割出独立子公司Advanced RISC Machines (ARM) ,ARM公司正式成立面世。
  • 1991年,ARM推出第一款嵌入式RISC处理器,即ARM6。
  • 1993年,发布ARM7。
  • 1997年,发布ARM9TDMI。
  • 1999年,发布ARM9E。
  • 2001年,发布ARMv6架构。
  • 2002年,发布ARM11微架构。
  • 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高性能处理器。
  • 2011年,推出Cortex-A7,ARMv8发布 。
  • 2012年,开始64位处理器进程。

2、ARM的商业模式和生态系统

(1)商业模式

ARM之前的半导体圈,比如Intel、AMD、Motorola、Zilog、VIA等公司,自己设计、生产与销售芯片。ARM只负责设计IC,并且出卖自己设计的IP版权,也就是说,ARM自己不生产芯片,而是把IP授权给其他半导体厂商来生产芯片。

(2)生态系统

ARM的合作伙伴,包括一些国际大厂商,比如SAMSUNG、TI、ST、 NXP、VLSI、Digital Semiconductor、 Sony、Qualcomm、HP、IBM等等,中国授权厂商有华为海思、全志、瑞芯微、MTK等等。

3、 ARM的几种版本号

ARM 内核版本号(或者说架构?),比如ARMv7。

ARM SoC 版本号,比如Cortex-A8。

SoC型号(即芯片型号),比如三星的S5PV210 。

其中,ARM内核版本号和SoC版本号是由ARM确定的,而SoC型号是由半导体公司(比如三星公司)确定的。

4、ARM型号的发展历程

ARM 内核版本号ARM SoC 版本号SoC型号(即芯片型号)
ARMv1
……
ARMv4ARM7S3C44B0
ARM9S3C2440    S3C2410
ARMv5ARM9+xScale
ARMv6ARM11S3C6410
ARMv7Cortex-M系列
Cortex-A系列

Cortex-A8:S5PV210、S5PC100

Cortex-A9:Exynos5250

Cortex-A7:全志A10 A20 A31

Cortex-A15:Exynos4412和5450

Cortex-A53、A57:高通骁龙815和410

Cortex-R系列
ARMv8

Cortex系列后ARM产品线分割成3个系列,这个是市场细分的需要和选择。 ARM已经发布了一些64位架构如A53等,主要面向高性能服务器类应用。 ARM下一步重点发展方向是Cortex-M7,特点是低功耗,主要面向物联网终端。

5、课程为什么选三星的CPU?

  • 三星的芯片本身使用广泛、有很好的企业应用基础
  • 资料多、积累好,便于学习
  • 开发板和方案商多,软硬件平台好找
  • 体系很典型,适合用来学习

6、三星主要的ARM CPU有哪些?

  • ARM7,比如44B0
  • ARM9,比如2440  2410   2416
  • ARM11,比如6410
  • Cortex-A8,比如S5PV210、S5PC100
  • Cortex-A9,比如4412、4418

7、SoC和CPU的区别与联系

SoC是System on Chip的缩写。

目前芯片的发展方向,是从CPU到SoC。现在很少纯粹的CPU芯片了,几乎都是SoC芯片。ARM销售的内核其实就是CPU(当然还需要总线),各种外设是半导体厂商自己添加的。

8、外设(Peripheral)

外设也就是外部设备。

目前,很多外设都设计进SoC中了,只有网卡、音频编解码等个别还经常在外面。

芯片设计的趋势是更大集成度,近年甚至将音视频编解码、DDR都集成进SoC内做成所谓单芯片解决方案。如海思Hi3518E芯片。

裸机学习,其实就是学习SoC的内核(CPU,表现为汇编指令集)和各种外设。

9、主流学习型主芯片介绍

(1)三星的芯片

  • S3C44B0
  • S3C2440、S3C2410
  • S3C6410
  • S5PV210
  • Exynos4412 S5P4418

(2)其他半导体厂商的芯片

  • Freescale i.MX5系列
  • TI Omap系列
  • Qualcomm 骁龙系列
  • 全志科技A10 A20 A31 A33等
  • 行业专用型SoC如华为海思HI3518系列

10、嵌入式和单片机的区别

(1)芯片平台

  • 主流的单片机平台:51、PIC、STM32、AVR、MSP430等。
  • 主流的嵌入式平台:ARM、PPC、MIPS。

(2)资源、价格、应用领域

  • 单片机片上资源有限、价格低、应用领域多为小家电、终端设备等。
  • 嵌入式系统片上资源丰富、价格较高、应用领域宽广,譬如智能手机、平板电脑、游戏机、路由器、摄像机、智能电视机、广告机、智能手表、收银机等。

(3)开发模式

  • 单片机开发多为裸机,程序规模小,多为单个程序员独立开发。有些复杂产品也会使用高端单片机如STM32之类,并使用RTOS(uCOS、freeRTOS等)。
  • 嵌入式开发几乎全部基于嵌入式操作系统,目前使用最多的是linux和Android。

(4)技术特征

  • 编程语言方面:单片机主要使用C语言(少量用汇编),和标准C略有不同,很少使用结构体、函数指针等C语言高级特性。而嵌入式开发较复杂,一般分底层和应用层。底层使用C语言,应用层使用C、C++、Java等语言均有。嵌入式C语言对结构体、数据结构、算法、函数指针(用来实现面向对象)等高级特性使用比较多。
  • 软硬件组件方面:单片机多涉及一些简单外设,譬如串口、I2C、ADC、LCD(小屏幕和分辨率);而嵌入式系统则涉及更多复杂外设,譬如网络(有线网卡、wifi、蓝牙等)、USB、音视频编解码等。

(5)职业发展

  • 单片机学习路线短,职业平缓,薪资发展很早达到瓶颈,一般瓶颈薪资6~8k。
  • 嵌入式学习路线长,职业生涯久,薪资发展多年才会达到瓶颈,一般瓶颈薪资12~15k。

11、嵌入式系统的构成特点

(1)嵌入式系统的特点

  • 专用、软硬件可裁剪可配置
  • 低功耗、高可靠性、高稳定性
  • 软件代码短小精悍
  • 代码可固化
  • 实时性
  • 弱交互性
  • 专用开发工具及开发环境
  • 专业开发人员

(2)嵌入式系统的组成

  • 硬件
    • 微处理器
    • 存储器
    • I/O接口、输入输出设备等等
  • 软件
    • 嵌入式操作系统
    • BSP,即board support package板级支持包
    • 应用软件

(3)嵌入式系统的分层

12、嵌入式系统的演进方向

(1)以单芯片为核心、可编程控制器存在形式

  • 没有操作系统支持
  • 软件以汇编为主
  • 功能单一、处理效率低、存储容器小、没有对外接口
  • 使用简单、价格低

(2)以嵌入式CPU为基础、简单操作系统为核心

  • CPU种类多,通用性弱 系统开销小,效率高
  • 达到一定兼容性,拓展性
  • 用户体验度不高,交互界面不够友好

(3)以嵌入式操作系统为标志

  • 兼容性好,适用于不同平台
  • 系统开销小,效率高,具有高度模块化及拓展性
  • 图形化界面,用户界面友好
  • 丰富的外部接口

(4)以物联网为标志

  • 将传感器技术、互联网技术及传统嵌入式技术综合联系
  • 小型化、智能化、网络化及可视化
  • 低功耗、绿色环保
  • 多核技术SWP、云计算技术及虚拟化技术

13、何为交叉编译

(1)两种开发模式

非嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。

嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行。

(2)为何使用交叉编译

嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。

交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)。

(3)交叉编译有什么特点

必须使用专用的交叉编译工具链。

由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。

14、CPU的设计原理、数据总线和地址总线

(1)CPU和总线示意图

(2)地址总线和数据总线

CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。

地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量。

总线的速度决定CPU和外设互换信息的速度。

(3)注意

CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。

CPU的位数指的是数据总线的位数。 32位CPU寻址的范围是4G,所以最多支持4G内存。

数据总线是32位的,所以内存是32位的好,所以编程最好用int……

15、为何需要Jlink、SD卡等辅助设备

(1)嵌入式开发特点

交叉编译,不便于本机运行调试程序。

嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。

嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器

(2)Jlink的作用

下载可执行程序到目标机。

在目标机上实现单步调试,便于开发bootloader。

(3)SD卡的作用

作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入 嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧录的镜像处启动。

(4)USB转串口线的作用

串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。

因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。

(5)其他开发辅助工具

USB OTG线、DB9串口线、交叉网线。

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

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

相关文章

使用RMAN备份数据库

1.1使用控制文件备份全库 1.1.1配置备份路径 1.1.2 RMAN备份全库 1.2使用catalog数据库备份全库 1.2.1配置到远程数据库的TNS 1.2.2创建表空间及设置用户 1.2.3进入目录数据库并注册 1.2.4 CATALOG方式备份全库 转载于:https://www.cnblogs.com/myrunning/p/4231057.html

「北京」京东 JD.COM 招聘中/高级前端工程师

职位描述: 1、计算机或相关专业专科以上学历,2年以上网站前端开发经验,电子商务相关从业经验优先;2、精通各种Web前端技术,对符合web标准的网站重构有丰富经验,有成功作品;3、理解并掌握JavaScr…

前端上传组件Plupload使用指南

我之前写过一篇文章《文件上传利器SWFUpload使用指南》,里面介绍了上传组件SWFUpload的使用方法,但现在随着html5技术的逐渐推广和普及,再去使用以flash为上传手段的SWFUpload显然就有点过时了,毕竟html5原生的就给我们提供了文件…

HTML5简易在线画图工具

HTML5简易在线画图工具 原文:HTML5简易在线画图工具继上次学习了HTML5的路径画圆做了动态时钟、异次元空间的反转做了运动的太阳系,这两天将画线、画圆、填充等知识点结合起来做了一个简易的在线画图工具: 查看DEMO:HTML5简易在线画图工具 功…

【excel技巧读书笔记001】清除打开过的文件记录

我们在工作的时候经常打开工作薄,这些工作薄都会在最近使用的工作薄列表看到,如果不希望别人看到自己打开过的记录,可以将最近使用的工作薄列表清空。具体步骤如下:1.【文件】-【选项】-【高级】-【显示】显示此数目的最近使用文档…

快速开发系统之前台页面 ---- NO1----登录页面

2019独角兽企业重金招聘Python工程师标准>>> 快速开发系统之前台页面 ---- NO1----登录页面 <% page language"java" contentType"text/html; charsetutf-8"pageEncoding"utf-8"%> <!DOCTYPE html> <html lang"z…

HP服务器F10 Function Disabled,无法使用F10安装操作系统

HP惠普服务器正确安装操作系统的方法是使用F10引导安装&#xff0c;可以自动安装操作系统&#xff0c;与硬件结合的更好&#xff0c;而且安装完成后&#xff0c;如果是windows操作系统&#xff0c;可以有HP管理页。某次&#xff0c;在使用F10引导安装操作系统的时候&#xff0c…

apt-get for ubuntu 工具简介

先介绍几个和apt-get相关的目录: /var/lib/dpkg/available 文件的内容是软件包的描述信息, 该软件包括当前系统所使用的 Debian 安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. /var/cache/apt/archives 目录是在用 apt-get install 安装软件时&#xff0c…

【VMCloud云平台】SCAP(一)规划

完成了System Center中的悍将SCO基础篇后&#xff0c;咱们来聊聊SCAP&#xff0c;很多人说SCAP是一个简单的组件&#xff0c;何必单独拿出来聊呢&#xff1f;我倒是认为不然&#xff0c;作为System Center中为数不多的主打Portal类型的组件&#xff08;除开组件的Web Console就…

android学习日记12--布局管理器

1、概述  布局管理器的用途&#xff1a;  a、可以更好的管理组件;  b、通过使用布局管理器&#xff0c;Android应用程序可以做到平台无关性 布局管理器都是ViewGroup的子类&#xff0c;所有可充当容器的父类都是ViewGroup&#xff0c;而ViewGroup也是View的子类 下面分别…

PXE装机+kickstart无人值守安装

搭建PXE远程安装服务器&#xff0c;本例集成了TFTP服务、DHCP服务&#xff0c;能够向客户机发送PXE引导程序&#xff0c;内核&#xff0c;启动菜单等。1.准备RHEL6安装源&#xff0c;网络安装源一般通过HTTP&#xff0c;FTP协议发布&#xff0c;另外页支撑NFS协议。采用FTP协议…

内核通识——内核中架构相关代码简介

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、内核代码基本分为3块 &#xff08;1&#xff09;arch目录 本目录下全是cpu架构有关的代码。本文说的就是这个目录中的内容。 &#xff08;2&#xff09;drivers目录 本目录下全是硬件的驱动。 &…

一道关于比赛胜负的Sql查询题目

以前做过一道题目&#xff0c;一直没有来得及总结下来。贴图&#xff1a; 记得以前曾经找到了两种方法&#xff0c;今天试了一下&#xff0c;还是可以的&#xff0c;贴出过程&#xff1a; 下面是具体的查询方法&#xff1a; 原来放的是图片,今天又练习了一下,附代码: 1 create …

SharePoint 2013 Nintex Workflow 工作流帮助(六)

博客地址 http://blog.csdn.net/foxdave 工作流动作 7. Call web service&#xff08;Integration分组&#xff09; 一个调用WebService的操作。 自然&#xff0c;配置项中主要是指向一个WebService进行调用。 关于配置项的说明&#xff1a; URL 必填项&#xff0c;也就是WebSe…

uboot的移植一一更换控制台串口

以下内容源于朱有鹏嵌入式课程的学习与整理&#xff0c;如有侵权请告知删除。 1、场景需求 X210开发板的SOC中一共有4个串口&#xff08;串口0~3&#xff09;&#xff0c;并且用DB9接口引出了2个串口&#xff0c;分别是串口0和串口2。其中靠近网口的是串口0&#xff0c;远离网口…

充实你的素材库!10款免费的 PSD 素材下载

由于网页设计师没有时间来自己从零开始设计&#xff0c;所以在设计项目中使用网络上已有的设计素材是常见的方式。这就是为什么我们经常会到网上搜索可以免费下载的素材。 今天&#xff0c;我们这里有几套不同的免费的 PSD 素材分享给你&#xff0c;从 iPhone 样机到用户界面等…

position:fixed和scroll实现div浮动【示例】

前言 在自己建站的过程中&#xff0c;要实现一个div随滚动条浮动的效果&#xff0c;网上找了些示例不太好用&#xff0c;还是自己动手&#xff0c;丰衣足食&#xff0c;写的不好请大家谅解&#xff0c;毕竟我不是搞前端的&#xff0c;因为自己建站毕竟每一步都必须自己来&#…

HashMap vs ConcurrentHashMap — 示例及Iterator探秘

2019独角兽企业重金招聘Python工程师标准>>> 如果你是一名Java开发人员&#xff0c;我能够确定你肯定知道ConcurrentModificationException&#xff0c;它是在使用迭代器遍历集合对象时修改集合对象造成的&#xff08;并发修改&#xff09;异常。实际上&#xff0c;…

谷歌浏览器跨域报错解决办法

谷歌浏览器跨域报错&#xff1a; 在浏览器属性设置一下就可以了。 最后&#xff0c;先打开浏览器&#xff0c;就可以了。 转载于:https://www.cnblogs.com/fanyun/p/4263363.html

Unable to find the ncurses libraries or the required header files解决

问题&#xff1a; 解决方法: sudo apt-get install ncurses-dev 参考&#xff1a;Unable to find the ncurses libraries or the required header files解决 转载于:https://www.cnblogs.com/amanlikethis/p/3591353.html