1.ARM的那些事儿

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_33249383/article/details/64918936

目录:
1.ARM的成长史
2.ARM的商业模式和生态系统
3.为什么是三星
4.搞清楚各种版本号
5.Soc和CPU的区别&外设概念的引入
6.主流学习型主芯片介绍

7嵌入式和单片机的区别
8嵌入式学习和编程语言、英语水平的关系

9嵌入式系统的构成特点和演进方向

10何为交叉编译
11CPU的设计原理、数据总线、地址总线
12为何需要JLink、SD卡等辅助设备

1.ARM的成长史

1978年,ARM的前身为艾康电脑(Acorn),于英国剑桥创立。

1980年,苹果电脑开始与艾康电脑合作开发新版的ARM核心(主要用来做电脑)。(艾康电脑与苹果合作原因:艾康电脑遇到财政危机)
1985年,开发出全球第一款商用RISC处理器即ARM1,此时的ARM1是针对PC机的,那时候还没有嵌入式的概念。
1990年艾康电脑财务危机,受苹果和VLSI投资,分割出独立子公司Advanced RISC Machines(ARM),ARM公司 正式成立面世。 (此时是ARM真正成立的时间。)
1991年,ARM推出第一款嵌入式RISC处理器,即ARM6.(此时开始做嵌入式,此前做的是PC处理器)。
1993年,发布ARM7。(开始比较有名,国内一般从ARM7开始做的。现今早已淘汰)
1997年,发布ARM9TDMI。 (开始比较牛逼,S3C2440就是ARM9TDMI这种内核架构)
1999年,发布ARM9E。(还是ARM9,不过是增强型的ARM9)
2001年,发布ARMV6架构。
2002年,发布ARM11微架构。
2004年,年发布ARMV7架构的Cortex系列处理器,同时推出Cortex-M3(所谓的stm32的内核,从内核到cpu 的推出一般要五六年。)
2005年,发布Cortex-A8处理器(所谓S5PV210的内核,cpu的推出在2010年以后)
2007年,发布Cortex-M1和Cortex-A9。(此时还没有实现)
2009年,实现Cortex-A9、发布Cortex-M0。(可见M3不一定在M0后面推出,名字数字小不一定后面出,数 字只是编码,没有大小含义)
2010年推出Cortex-M4、成立Linaro(ARM牵头成立的一个公共组织,专门做基于ARM处理器的Linux平台上 的软件的移植),推出Cortex-A15MPcore(32位里性能较高的一款,但发热量比较大)高性能处理器。
2011年,推出Cortex-A7,ARMv8发布。
2012年,开始64位处理器进程。
现在A53 A57均为64位处理器。( 苹果的iPhone5s是最早使用64位处理器的)

..........

小故事:当时流行的是CISC处理器(规模大,开发成本高)是主流,但是ARM使用的是RISC处理器(规模小, 开发成本低,小团队 也可开发)。原因不是ARM公司的远见卓识, 而是当时资金短缺,无奈之下,只能做 RISC处理器。

启发: 

1.成功有时候是不经意的。不要刻意去追求成功,潮流是不可以追赶的。

2.个人的发展很快,也很慢,不要着急马上成功,每天的坚持,不经意间你就会成为高手。
3.从设计到产品,需要很长时间的努力。
4.乔布斯眼光独到。

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

ARM之前的半导体圈:Inter、AMD、Motorola、Zilog、VIA(台湾威盛)等(都是自己设计自己生产)

ARM只负责设计IC,并且出卖自己的设计IP(版权),自己不生产芯片,而是把设计IP授权给其他半导体厂商 来生产芯片(比如三星,高通,苹果,华为都是购买了ARM的版权,基于ARM版权开发自己的CPU)
严格来说,ARM并不是一家半导体厂商。

ARM能迅速扩大主要原因是ARM不生产芯片,那么其他公司就胆大的使用其芯片,不怕竞争,谷歌出的 Android的流行也是因为谷歌刚开始不做手机如此。(当然谷歌现在快开始做手机了!!!嘻嘻)。因为这种商 业模式促使了ARM的发展。(发明这种商业模式其实是因为当初不够资金生产,无奈只能设计让别人生产,因 此成功是不经意的)

ARM的合作伙伴:国际大厂商:SAMSUNG、TI、ST(生产STM32)、NXP(以前飞利浦的半导体部门)、 VLSI(超大规模集成电路)、Digital Semlcondcutor、Sony(日本的索尼)、 Qualcomm(美国高通主要做 手机,在3G/4G有许多专利,手机芯片(例如骁龙)、HP(惠普)、IBM.....
中国授权厂商:华为海思(手机芯片,网络摄像头 )、全志(Allwinner 做山寨平板,特点就是便宜)、瑞芯微 (做山寨平板,与全志一样很厉害让国际巨头害怕,便宜是特点。)、MTK(中国台湾联发科 山寨手机之父)

启发:不要抱怨劣势地位,劣势反而可能是机会
要想成功,要学会帮助别人,成全别人,只想着自己的人是没有机会成功的。
社会越来越成熟,成熟社会的特征就是分工不断细化。



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

三星主要的ARM CPU:

ARM7 44B0(其实就是单片机,性能比51强大,相当于stm32)

ARM9 2440(广为人知,雄霸很多年,但早已停产,现在不适合做新产品。不支持DDR,只支持SDRM,DDR 比SDRM性能好) 2416(arm9,与2440性能相当,用来替代停产以后的2440) 2410

ARM11 6410 (一款过渡产品,介于210和2440之间)
A8 S5PV210 (现今(2017年)价格与2440差不多,方案相对2440、6410较先进,支持DDR2) S5PC100
A9 4412 4418 (半导体发展很快,学习时不要追求最新版本,最新版本意味着不成熟,资料太少)



4.搞清楚各种版本号
ARM的型号命名问题:
ARM7和ARMv7不是一回事。
Cortex-A9比Cortex比A7更先出来。 顺序 A8 ---A9(性能折中)---A7(相比A9性能弱一些,但是低功耗) A15 (相比A9性能更强,发热也强)

ARM的三种版本号: ARM内核版本号 、ARM SoC版本号 、芯片型号

例如 ARMv7架构(S5PV210的内核版本号)

Cortex-A8(S5PV210的soc版本号)
S5PV210

ARM型号的发展历程
内核版本号 SoC版本号 芯片型号(主要列举了三星的)
ARMv1
..........
ARMv4 ARM7( 最开始是v3内核后来升级成v4内核) S3C44B0
ARMv4 ARM9 S3C2440 S3C2410
ARMv5 ARM9+xScale (过渡版本,据说v5内核整体被一个公司打包垄断,所以早早成了 盲点。)
ARMv6 ARM11 S3C6410

ARMv7 Cortex-M、Cortex-A、Cortex-R

-----------------------------------------------------------------------------------------------------------------

Cortex-M (Mircontroller微控制器专门用于单片机例如stm32 吃掉51、AVR单片 机的市场。 比较火的有 M3、M4、M0、M0+、M7(M7特点是低功耗,专门为物联网推出的架构))

Cortex-A (Application 应用级处理器 即手机、平板、电脑的CPU)

Cortex-R (RealTime 实时处理器 响应速度快用于工业、航天领域 TI公司在生产此种类型的处理器)

--------------------------------------------------------------------------------------------------
Cortex-A8 S5PV210/S5PC100(单核)
Cortex-A9 Exynos4412(双核、四核)
Cortex-A7 全志A10 A20 A31(低功耗低成本, 四核,阉割版的A9)
Cortex-A15 Exynos5250 5450(A9的发挥到 极致,但是功耗也上来了,发热大。 用于平板较好,不利于手机使用。)
--------------------------------------------------------------------

Cortex-A53 /A57 高通骁龙815和410,苹果Phone5S(开始使用64位处理器)

-------------------------------------------------------------------------------------

ARM内核版本号和SoC版本号是由ARM确定的,而SoC型号是由半导体公司确定的。

Cortex系列后ARM产品线分割成3个系列,这个是市场细分的需要和选择。

ARM已经发布了一些64位架构如A53等,主要面向高性能服务器类应用。

ARM下一步重点发展方向是Cortex-M7,特点是低功耗,主要面向物联网终端(随笔时间为2017年)

5.Soc和CPU的区别&外设概念的引入

SoC=System on Chip(此处o小写的原因,英文里介词一般小写)

芯片的发展方向:从CPU到SoC (SoC包括CPU和一些外设)

现在已经没有纯粹的CPU,都是SoC

ARM出卖的内核其实是CPU(当然还需要总线),各种外设是半导体厂商自己添加的。

外设就是外部设备,SoC中外设大部分都跑进去了,网卡、音频编解码灯个别还经常在外面。

将音频编解码、DDR都集成SoC内做成所谓单芯片解决方案。如海思Hi3518E

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

6.主流学习型主芯片介绍(此处主要介绍三星的)

S3C44B0(ARM7架构。主要作为单片机使用)

S3C2440(经久不衰,现已停产,不适合做新产品)、S3C2410

S3C6410(过渡产品,与210相似,但性能不如210)

S5PV210

Exynos4412  S5PV4418

其他半导体厂商:

Freescale i.MX5系列   (飞思卡尔单片机非常多,主要是M4内核。也有高端的i.MX系列,与三星区别是飞思卡尔主要侧重于工控领域,三星侧重于消费电子)

TI Omap系列    (TI的ARM特点一般是双核的,DSP+ARM双核 主要应用于音视频,运算较多的行业)

Qualcomm骁龙系列   (鼎鼎大名,近两年除苹果外最厉害的手机芯片制造商  ,低端一般用MTK,高端使用高通)

全志科技A10 A20 A31 A33等  (中国珠海的一家公司  特点:低功耗,价格便宜,性能折中)

行业专用型SoC如华为海思HI3518系列   (HI3518系列一般用于做安防监控 网络摄像机,性价比非常高  )

7嵌入式和单片机的区别

芯片平台:

主流的单片机平台:51、PIC、STM32、AVR、MSP430等

主流的嵌入式平台:ARM、PPC(POWER PC 国内使用较少)、MIPS(国内的龙芯就是MIPS架构的。 MIPS主要用于路由器的特定行业)

资源、价格、应用领域:

单片机片上资源有限、价格低、应用领域多为小家电、终端设备等。

嵌入式系统片上资源丰富、价格较高、应用领域宽广,如智能手机、平板电脑、游戏机、路由器、摄像机、智能电视机、广告机、智能手表、收银机等。

开发模式:

单片机开发多为裸板,程序规模小,多为单个程序员独立开发。有些复杂产品也会使用高端单片机如STM32之类,并使用RTOS(μCOS、freeRTOS等)。

嵌入式开发几乎全部基于嵌入式操作系统,目前使用最多的是linux、Android。

编程语言方面:单片机主要使用C语言(少量用汇编),和标准C略有不同,很少使用结构体、函数指针等C语言高级特性。而嵌入式开发较负责,一般分底层和应用层。底层使用C语言,应用层使用C、C++、JAVA等语言均有。嵌入式C语言对结构体、数据结构、算法、函数指针(用来实现面向对象)等高级特性使用比较多。

软硬件组件方面:单片机多涉及一些简单外设,譬如串口、IIC、ADC、LCD(小屏幕和分辨率)。而嵌入式系统则涉及更多复杂外设,譬如网络(有线网卡、wifi、蓝牙等)、USB、音视频编解码等。

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

8.嵌入式学习和编程语言、英语水平的关系

嵌入式学习和编程语言:

嵌入式开发主要使用C语言

辅助为汇编语言

中间层开发用C++多一些

应用层开发用C++、JAVA、Python、tcl/tk、perl、PHP、.......、非常多。

嵌入式和英语:

编程都是用英语写,关键的就是关键字,看数据手册可以借助桌面词典。

嵌入式学习和数电模电:

嵌入式分嵌入式软件和嵌入式硬件两部分,嵌入式软件主要是还是软件,硬件辅助。

数电模电会有帮助,但不是必须。(计算机系与硬件人员各有优势,不必纠结。)

嵌入式学习和专业:

最适合专业:电子、自动化、通信、监控、计算机科学与技术

可以选择的专业:所有大学会开C语言或者类似编程课的理工科专业

找工作和专业的关系:应届生会有影响,有工作经验者不论大学专业。

嵌入式学习到底和什么有关?

兴趣、志向

学习能力&专注度

态度,这个是最关键的。

9.嵌入式系统的构成特点和演进方向

嵌入式系统的特点:

专用、软硬件可剪裁可配置(指嵌入式系统的配置是可以动态变化的)

低功耗、高可靠性、高稳定性

软件代码短小精悍

代码可固化(可固化指代码可以通过某种方式下载(烧写)到硬件中去)

实时性

弱交互性

专用开发工具及开发环境

专业开发人员

嵌入式系统的组成:硬件:微处理器 、存储器、I/O接口、输入输出设备等等

软件:嵌入式操作系统、BSP(board support package板级支持包)、应用软件

嵌入式系统的粗略分层:

a.应用程序:GUI 、GPRS、3G、WIFI

b.操作系统:智能操作系统、操作平台

c.硬件:中央处理器、ROM 、RAM、IO和电源

嵌入式系统的发展演进1:

以单芯片为核心,可编程控制器存在形式

--没有操作系统支持

--软件以汇编为主

--功能单一、处理效率低、存储容器小、没有对外接口

--使用简单价格低

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

--CPU种类多、通用性弱

--系统开销小、效率高

--达到一定兼容性和扩展性

--用户体验度不高,交互界面不友好

嵌入式系统的发展和演进2:

以嵌入式操作系统为标记

--兼容性好,适用于不同平台

--系统开销小、效率高,具有高度模块化及扩展性

--图形化界面、用户界面友好

--丰富的外部接口

以物联网为标记

--将传感器技术、互联网技术及传统嵌入式技术综合练习

--小型化、智能化、网络化及可视化

--低功耗、绿色环保

--多核技术、云计算技术及虚拟化技术(多核技术有两种,一种是对称多核,就像CortexA9 4412的四核就是四个一模一样不分主次的核  另外一种是大小核 例如FPGA+ARM  DSP(主运算)+ARM(主控制))

10.何为交叉编译

两种开发模式:

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

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

为何使用交叉编译:

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

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

交叉编译的特点:

必须使用专用的交叉编译工具链(例如编译器、调试器、汇编器、链接器等等)

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

11.CPU的设计原理、数据总线、地址总线

(CPU和总线示意图见附件)

程序平时放在Flash中,运行的时候放在内存中,内存和Flash通过总线与cpu通信。Flash不能直接与内存通信,必须通过cpu的寄存器来中转。

地址总线和数据总线:

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

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

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

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

CPU的位数指的是数据总线的位数。

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

数据总线如果是32位的,那使用的内存最好是32位的,编程最好是用int数据类型。

12.为何需要JLink、SD卡等辅助设备

嵌入式开发特点:

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

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

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

Jlink的作用:下载可执行程序到目标机。在目标机上实现单步调试,便于开发bootloader。

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

USB转串口线的作用:串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件,因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。

其他开发辅助工具:USB OTG线   

       DB9串口线

    交叉网线


 

猜你喜欢

转载自blog.csdn.net/qq_33249383/article/details/64918936