嵌入式linux核心课程 1.ARM裸机全集 1.1.ARM裸机第一部分-ARM那些你得知道的事儿

1.ARM裸机全集

  • 1.1.ARM裸机第一部分-ARM那些你得知道的事儿
    • 1.1.1. ARM的成长史
    • 1.1.2.ARM的商业模式和生态系统
    • 1.1.3.为什么选三星CPU
    • 1.1.4.搞清楚ARM各种版本号
    • 1.1.5.SoC和CPU的区别&外设概念的引入
    • 1.1.6.主流学习型主芯片介绍
    • 1.1.8.嵌入式和单片机的区别
    • 1.1.9.嵌入式学习和编程语言、英语水平的关系
    • 1.1.10.嵌入式系统的构成特点和演进方向
    • 1.1.11.何为交叉编译
    • 1.1.12.CPU的设计原理、数据总线和地址总线
    • 1.1.13.为何需要Jlink、SD卡等辅助设备

1.1.ARM裸机第一部分-ARM那些你得知道的事儿

1.1.1. ARM的成长史

ARM发展的里程碑1

  1. ARM的前身为艾康电脑(Acorn),于1978年,于英国剑桥创立。
  2. 在1980年代晚期,苹果电脑开始与艾康电脑合作开发新版的ARM核心。
  3. 1985年开发出全球第一款商用RISC处理器,即ARM1.
  4. 1990年艾康电脑财务危机,受苹果和VLSI的投资,分割出独立子公司Advanced RISC Machines (ARM) ,ARM公司正式成立面世。

ARM发展的里程碑2

  • 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位处理器进程
    ·······

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

ARM之前的半导体圈
Intel、AMD、Motorola、Zilog、VIA等自己设计IC、自己生产芯片、自己销售。
ARM的商业模式

  • ARM只负责设计IC,并且出卖自己的设计IP(版权)。
  • ARM自己不生产芯片,而是把设计IP授权给其他半导体厂商来生产芯片。
  • 严格地说,ARM并不是一家半导体厂商。

1.1.3.为什么选三星CPU

为什么选择三星的CPU学习?

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

三星主要的ARM CPU有哪些?

  • ARM7 44B0
  • ARM9 2440 2410 2416
  • ARM11 6410
  • A8 S5PV210 S5PC100
  • A9 4412 4418

1.1.4.搞清楚ARM各种版本号

ARM的型号命名问题

  • ARM7和ARMv7不是一回事
  • Cortex-A9比Cortex-A7更先出来
  • 型号很乱,初学者分不清哪个是哪个,比较迷茫。

ARM的几种版本号

  1. ARM内核版本号 ARMv7(v,代表Version)
  2. ARM SoC版本号 Cortex-A8
  3. 芯片型号 S5PV210

ARM型号的发展历程
嵌入式linux核心课程 1.ARM裸机全集 1.1.ARM裸机第一部分-ARM那些你得知道的事儿_第1张图片
注意

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

1.1.5.SoC和CPU的区别&外设概念的引入

SoC和CPU

  • SoC = System on Chip
  • 芯片的发展方向:从CPU到SoC
  • 现在已经没有纯粹的CPU了,都是SoC
  • ARM出卖的内核其实就是CPU(当然还需要总线),各种外设是半导体厂商自己添加的

外设(Peripheral)

  • 外设就是外部
  • SoC中外设大部分都跑进去了
  • 网卡、音频编解码等个别还经常在外面
  • 芯片设计的趋势是更大集成度,近年甚至将音视频编解码、DDR都集成进SoC内做成所谓单芯片解决方案。如海思Hi3518E
  • 裸机学习其实就是学习SoC的内核(CPU,表现为汇编指令集)和各种外设(如串口

1.1.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

1.1.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、音视频编解码等。

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

嵌入式和编程语言

  • 嵌入式开发主要使用C语言
  • 辅助为汇编语言
  • 中间层开发用C++多一些
  • 应用层开发用C++、Java、python、tcl/tk、perl等,太多了···

嵌入式学习和英语

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

嵌入式学习和数电模电

  • 嵌入式分嵌入式软件和嵌入式硬件两部分
  • 嵌入式软件主要还是软件,硬件辅助
  • 数电模电会有帮助,但不是必须

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

嵌入式系统的特点

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

嵌入式系统的组成
硬件:

  • 微处理器
  • 存储器
  • I/O接口、输入输出设备等等

软件:

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

1.1.11.何为交叉编译

两种开发模式

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

为何使用交叉编译

  • 嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。
  • 交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)

交叉编译有什么特点

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

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

CPU和总线示意图
嵌入式linux核心课程 1.ARM裸机全集 1.1.ARM裸机第一部分-ARM那些你得知道的事儿_第2张图片

地址总线和数据总线

  • CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。
  • 地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量; 总线的速度决定CPU和外设互换信息的速度。

注意

  • CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机),但是一般都相同。
  • CPU的位数指的是数据总线的位数。
  • 32位CPU寻址的范围是4G,所以最多支持4G内存; 数据总线是32位的,所以内存是32位的好,所以编程最好用int···

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

嵌入式开发特点

  • 交叉编译,不便于本机运行调试程序。
  • 嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。
  • 嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。

Jlink的作用

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

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

USB转串口线的作用

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

其他开发辅助工具

  • USB OTG线
  • DB9串口线
  • 交叉网线

注:文章来源于《朱老师物联网大讲堂-----嵌入式linux核心课程》
注:文章来源于《朱老师物联网大讲堂-----嵌入式linux核心课程》
注:文章来源于《朱老师物联网大讲堂-----嵌入式linux核心课程》

你可能感兴趣的:(嵌入式linux核心课程 1.ARM裸机全集 1.1.ARM裸机第一部分-ARM那些你得知道的事儿)