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 (注意:Cortex-M0 比 Cortex-M3 后面推出)
2010年,推出Cortex-M4、成立Linaro,推出Cortex-A15 MPcore高性能处理器
2011年,推出Cortex-A7,ARMv8发布
2012年,开始64位处理器进程
·······
资料来源于网络和维基百科,感谢原作者!
2. ARM的商业模式和生态系统
ARM之前的半导体圈子:
Intel、AMD、Motorola、Zilog、VIA等
自己设计IC、自己生产芯片、自己销售。
ARM的商业模式:
ARM只负责设计IC,并且出卖自己的设计IP(版权)。
ARM自己不生产芯片,而是把设计IP授权给其他半导体厂商来生产芯片。
严格地说,ARM并不是一家半导体厂商。
ARM的合作伙伴:
国际大厂商:
SAMSUNG、TI、ST、
NXP、VLSI、Digital Semiconductor、 Sony、Qualcomm、HP、IBM······
中国授权厂商:
华为海思、全志、瑞芯微、MTK(中国台湾)
3. 选择三星平台学习
为什么选择三星?
本身使用广泛、有很好的企业应用基础
资料多、积累好,便于学习
开发板和方案商多,软硬件平台好找
体系很典型,适合用来学习
三星主要的CPU:
ARM7 44B0
ARM9 2440 2410 2416
ARM11 6410
A8 S5PV210 S5PC100
A9 4412 4418
4. 各种版本号
ARM的型号命名问题:
ARM7和ARMv7不是一回事
Cortex-A9比Cortex-A7更先出来
型号很乱,初学者分不清哪个是哪个,比较迷茫。
ARM的几种版本号
ARM内核版本号 ARMv7
ARM SoC版本号 Cortex-A8
芯片型号 S5PV210
ARM型号的发展历程:
内核版本号 SoC版本号 芯片型号(三星)
ARMv1
......
ARMv4 ARM7 S3C44B0
ARMv4 ARM9 S3C2440 S3C2410
ARMv5 ARM9+xScale
ARMv6 ARM11 S3C6410
Cortex-M
ARMv7 Cortex-A
Cortex-R
--------------------------------------------------------
Cortex-A8 S5PV210/S5PC100
Cortex-A9 Exynos4412 四核处理器
Cortex-A7 全志A10 A20 A31
Cortex-A15 exynos5250 5450
--------------------------------------------------------
Cortex-A53 A57 (64位处理器) 高通骁龙815和410, 苹果iPhone5S
注意事项:
ARM内核版本号和SoC版本号是由ARM确定的,而SoC型号是由半导体公司确定的。
Cortex系列后ARM产品线分割成3个系列,这个是市场细分的需要和选择。
ARM已经发布了一些64位架构如A53等,主要面向高性能服务器类应用。
ARM下一步重点发展方向是Cortex-M7,特点是低功耗,主要面向物联网终端。
5. SoC和CPU的区别&外设概念的引入
SoC和CPU
SoC = System on Chip
芯片的发展方向:从CPU到SoC
现在已经没有纯粹的CPU了,都是SoC
ARM出卖的内核其实就是CPU(当然还需要总线),各种外设是半导体厂商自己添加的。
外设(Peripheral)
外设就是外部设备
SoC中外设大部分都跑进去了
网卡、音频编解码等个别还经常在外面
芯片设计的趋势是更大集成度,近年甚至将音视频编解码、DDR都集成进SoC内做成所谓单芯片解决方案。如海思Hi3518E
裸机学习其实就是学习SoC的内核(CPU,表现为汇编指令集)和各种外设(如串口)
6. 主流学习型主芯片介绍
三星芯片:
S3C44B0
S3C2440、S3C2410
S3C6410
S5PV210
Exynos4412 S5P4418
其他半导体厂商:
Freescale i.MX5系列
TI Omap系列
Qualcomm 骁龙系列
全志科技A10 A20 A31 A33等
行业专用型SoC如华为海思HI3518系列
学习平台的要求:
资料多、好找
应用多、有市场需求和底蕴
底层代码无过度封装
难易适中
本次平台介绍:
SoC:三星S5PV210
开发板:九鼎科技X210
裸机实验方法:USB启动下载+SD卡启动
bootloader支持:uboot、xboot
操作系统支持:linux2.6.35、linux3.0.8、android2.3、android4.0.4
7. 开发板介绍
8. 单片机和嵌入式区别
芯片平台:
主流的单片机平台:51、PIC、STM32、AVR、MSP430等
主流的嵌入式平台:ARM、PPC、MIPS
资源、价格、应用领域
单片机片上资源有限、价格低、应用领域多为小家电、终端设备等。
嵌入式系统片上资源丰富、价格较高、应用领域宽广,譬如智能手机、平板电脑、
游戏机、路由器、摄像机、智能电视机、广告机、智能手表、收银机等。
开发模式:
单片机开发多为裸机,程序规模小,多为单个程序员独立开发。有些复杂产品也会使用高端单片机如STM32之类,并使用RTOS(uCOS、freeRTOS等)。
嵌入式开发几乎全部基于嵌入式操作系统,目前使用最多的是linux和Android。
技术特征1:
编程语言方面:单片机主要使用C语言(少量用汇编),和标准C略有不同,很少使用结构体、函数指针等C语言高级特性。
而嵌入式开发较复杂,一般分底层和应用层。底层使用C语言,应用层使用C、C++、Java等语言均有。
嵌入式C语言对结构体、数据结构、算法、函数指针(用来实现面向对象)等高级特性使用比较多。
技术特征2:
软硬件组件方面:单片机多涉及一些简单外设,譬如串口、I2C、ADC、LCD(小屏幕和分辨率);
而嵌入式系统则涉及更多复杂外设,譬如网络(有线网卡、wifi、蓝牙等)、USB、音视频编解码等。
10. 嵌入式系统的构成特点和演进方向
嵌入式系统的特点:
专用、软硬件可裁剪可配置
低功耗、高可靠性、高稳定性
软件代码短小精悍
代码可固化
实时性
弱交互性
专用开发工具及开发环境
专业开发人员
嵌入式系统的组成:
硬件
微处理器
存储器
I/O接口、输入输出设备等等
软件:
嵌入式操作系统
BSP board support package板级支持包
应用软件
嵌入式系统的发展演进1:
以单芯片为核心、可编程控制器存在形式
没有操作系统支持
软件以汇编为主
功能单一、处理效率低、存储容器小、没有对外接口
使用简单、价格低
以嵌入式CPU为基础、简单操作系统为核心
CPU种类多,通用性弱
系统开销小,效率高
达到一定兼容性,拓展性
用户体验度不高,交互界面不够友好
嵌入式系统的发展演进2:
以嵌入式操作系统为标志
兼容性好,适用于不同平台
系统开销小,效率高,具有高度模块化及拓展性
图形化界面,用户界面友好
丰富的外部接口
以物联网为标志
将传感器技术、互联网技术及传统嵌入式技术综合联系
小型化、智能化、网络化及可视化
低功耗、绿色环保
多核技术SWP、云计算技术及虚拟化技术
11. 交叉编译
两种开发模式:
非嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。
嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行。
为何要用交叉编译:
嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。
交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)
交叉编译的特点:
必须使用专用的交叉编译工具链。
由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)
将可执行程序加载到目标嵌入式设备上运行及调试。
12. CPU的设计原理、数据总线和地址总线
地址总线和数据总线:
CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。
地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量;
总线的速度决定CPU和外设互换信息的速度。
注意:
CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。
CPU的位数指的是数据总线的位数。
32位CPU寻址的范围是4G,所以最多支持4G内存;
数据总线是32位的,所以内存是32位的好,所以编程最好用int···
13. 为何需要Jlink、SD卡等辅助设备
嵌入式开发的特点:
交叉编译,不便于本机运行调试程序。
嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。
嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。
Jlink作用:
下载可执行程序到目标机。
在目标机上实现单步调试,便于开发bootloader。
SD卡的作用:
作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到
的可执行程序镜像烧录到SD卡,然后将SD卡插入 嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧
录的镜像处启动。
USB转串口线的作用:
串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。
因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口
线来连接PC和开发板。
其他辅助开发工具:
USB OTG线
DB9串口线
交叉网线
阅读(993) | 评论(0) | 转发(0) |