以下内容源于朱有鹏嵌入式课程的学习与整理,如有侵权请告知删除。
注意,由于文章的撰写时间过早,很多内容没有更新,这里仅当一个通识了解。
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 …… ARMv4 ARM7 S3C44B0 ARM9 S3C2440 S3C2410 ARMv5 ARM9+xScale ARMv6 ARM11 S3C6410 ARMv7 Cortex-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串口线、交叉网线。