嵌入式学习——ARM你得知道的那些事

1;ARM的里程碑
ARM的前身为艾康电脑(Acorn)1978年英国剑桥创建

1980年末 苹果加入合作开发ARM核心

1985年第一款商用的RISC处理器即为ARM1上市

1990年 艾康公司 分立出我们现在所知道的 ARM Aduvanced RSIC Machines ARM公司上市

1991年 ARM公司推出了第一款嵌入式的RSIC处理器 即为 ARM6


。详细的查阅百度


之后直续至今 ARM公司一直再推出新的ARM架构

2;ARM的商业模式和生态系统
ARM的商业模式大家应该都已经听说过了 只设计不生产,卖版权给其他半导体公司生产
因此ARM 的合作伙伴是非常之多的 因为每个生产处理器的公司都需要向ARM购买ARM芯片版权进行设计
例如 google也是 安卓系统的开源 但是安卓系统是免费的

总结:
要想成功就得先帮助,成全别人 ,只想着自己成功的人是没有机会的

3;我们选择学习的开发板为什么是三星的
三星是中国最早的制造处理器的公司 并且他有很好的企业基础 并且资料多学习的人多
我们学习 的开发板是基于ARM8架构的三星S5PV210最后一版单核的
因为前些年的 ARM9的2440已经停产了

4;搞清各个版本号
ARM版本号 SOC芯片版本号 SOC芯片型号 是三个不同的东西
ARM版本号是ARM公司设计的ARM版本进行出售的版本
基于这个ARM版本号可以开发出一款芯片的版本号 也就是SOC芯片版本号
然后各个公司可以基于这个SOC芯片的版本号开发出不同的型号也就是SOC芯片的型号了

嵌入式学习——ARM你得知道的那些事_第1张图片

最后看看详细的三者关系在不同阶段的举例
嵌入式学习——ARM你得知道的那些事_第2张图片

Cortex -M系列 也开始从单片机到STM32发展了
最先的M3系列 再就是M0,M0+和添加了DSP浮点运算的M4 最后是正在研发的M7主要用于物联网 特点就是低功耗

5;搞清soc和cpu的关系 以及什么是外设
在前面那小节我们就把SOC的版本和ARM 的版本区分开来了。SOC的版本号是在ARM版本上进行开发的,不同的公司可以开发出不同的SOC。那么下面我们介绍一下SOC到底是什么。
答:SOC就是我们平时大家都说的cpu,然而真正的cpu其实是arm公司设计出售的内核才是真正的cpu。
我们就70年代前和现在的system系统进行区分

嵌入式学习——ARM你得知道的那些事_第3张图片
无论是pcb板还是soc都是一个系统 system;是完成某项功能的东西。。。。
这就有了很明显的区别了吧 cpu只是从ARM公司购买版权后设计出来的核心 只有运算器和控制器
而soc是一直芯片 高度集成的芯片 将cpu连同外设进行集成到同一块小的芯片里面。
而外设就是除开cpu的一切外部链接的 soc可以集成 的外设可以叫内部外设
芯片的设计就是越来越集成化
再说一下 我们裸机的学习其实就是学习SOC芯片的
学习soc芯片的内核 ——cpu 主要是学习他的工作原理 怎样操控控制cpu工作的 ——就是arm汇编指令集
学习soc芯片的外设 —— 例如串口 Nand控制器…..等等

最后把一个东西搞清楚一下
intel公司 arm公司
架构
Intel是X86架构,用的CISC 复杂指令集 应用于pc机
而ARM用的是自己的ARM架构,核心是RISC精简指令集 应用于移动开发
而AMD就是intel的老牌竞争对手 同样生产的是pc机上的cpu

6,单片机与嵌入式的区别
先纠正一个误区
学习嵌入式并不一定需要单片机的基础 现在我们从几个方面来分析
6.1 各自主流的芯片平台
单片机 主要是 51 到复杂的 stm32
嵌入式 则是ARM和MIPS 介绍一下两者主流应用 MIPS架构的一般适用于路由器 而其他嵌入式都是arm

6.2资源 决定了各自的领域
单片机 原来的51都是以字节为单位 知道stm32复杂一些到k为单位 这也就导致芯片上资源有限 以至于只能应用于一些小家电和终端
嵌入式 则是以ARM处理器芯片 片上资源多 应用域就多了 主要有智能手机,智能手表 摄像机 路由器等等

6.3;开发模式
单片机为裸机开发 一般为个人开发
嵌入式则需要借助操作系统进行开发 一般为linux和android 团队开发
linux一般应用于路由器那种一键启动的
android则是应用于需要用户进行操作的

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

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

7嵌入式系统构成的特点
7.1;嵌入式系统的特点
专用 相对于pc机而言 嵌入式就更加专用了 完全就是为了完成某项功能为制造的产品,该产品主要服务于这个功能
软硬件可裁剪可配置:对于不同的环境不同的功能需要进行配置
低功耗:因为现在的嵌入式设备都是电池供电 所以低功耗也是嵌入式设备的主要方向之一
高可靠性、高稳定性:嵌入式设备有的应用于安全性要高的地方 因此需要可靠稳定
软件代码短小精悍:代码短但是精
代码可固化;意思是代码可以烧录到芯片中去
实时性:
弱交互性:交换性就是人与系统进行交互 弱交换性 则表示不需要一直交互 例如路由器这个经典的嵌入式系统
专用开发工具及开发环境:linux系统 gcc编译器 交叉编译链

7.2;嵌入式系统的组成
硬件
微处理器 soc芯片
存储器 内存和flash:flash其实就是相当于硬盘一样的内存
I/O接口、输入输出设备等等
软件:分层的 便于开发
BSP(board support package)扳级支持包 主要是一些驱动(最底层)
嵌入式操作系统:也是底层 但在整个嵌入式系统中相当于中间人一样 接收应用层指令 调用底层驱动
应用软件
7.3;嵌入式系统的分层
嵌入式学习——ARM你得知道的那些事_第4张图片
最后我们也就确定了我们学习路线
先ARM再系统移植和linux网络编程和应用最后再驱动
因为驱动是一个承上启下的部分 并且也是最难的一个部分
7.4 嵌入式系统的发展史
嵌入式学习——ARM你得知道的那些事_第5张图片
嵌入式学习——ARM你得知道的那些事_第6张图片
总结发展的趋势
硬件越来越强 硬件的外部接口越来越多价格越来越高
编程由汇编到了cyuy
界面越来越好 交互越来越多
最后就到了物联网时代了
客户端小型化 智能家居智能化 网络都联网了 可视化 随时随地都可以看到一些东西 到处都是显示器了
低功耗 非常重要 的

8;交叉编译
先介绍交叉编译是一种什么编译
在嵌入式开发中 往往嵌入式设备的不足以支持我们在该设备上进行编写代码编译运行 所以我们只能在我们自己的电脑机上编写编译代码得到可执行文件,最后将可执行文件下载到嵌入式设备中 进行运行调试 这种就是交叉编译 在不同的系统上进行交叉开发
8.1;两种开发模式
非嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。

嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行
注意A类B类指的是操作系统
8.2;为什么要有交叉编译
因为嵌入式设备往往cpu过于简单 无法搭建开发环境,甚至操作系统都没有 因此我们只能借助桌面电脑进行开发然后下载到嵌入式设备上进行运行调试
交叉编译可以起到了很好的 ,高性能机器为底性能机器开发软件 (可以包括 裸机 系统级 应用级)

8.3交叉编译的特点要求
交叉编译必须需要一套的专有的交叉编译工具链 链 一套工具才能完整从桌面电脑到嵌入式设备开发过程。
*由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。

9;cpu设计与总线
嵌入式学习——ARM你得知道的那些事_第7张图片
总线分为 地址总线和数据总线
CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。

地址总线 就是传输的数据代表的是一个地址 因此地址总线的数量就表示了能够读取到内存的大小
32位地址总线则可以表示4G
因为2的10次方是1024 1K=1024bit
2的10次方 ——表示1k
k的10次方——表示1M
M的10次方——表示1G
因此2的32次方表示4g

数据总线 则表示数据通过该总线进行传输 的
数据总线的位数表示CPU单次通信能交换的信息数量;
我们所说的32位cpu 64位cpu表示的都是数据总线 的位数
例如 32位cpu 当我们传输的是int类型时一次就可以传过去 而double类型时则需要传输两次 就是这个道理
发现 short 也是一次传输 int也是一次传输 对于数据总线 的使用是一样的 因此我们有时候会把需要定义成short类型时的变量也只能定义成int变量 对于总线的使用是一样 d

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

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

10 ;为什么需要Jlink sd卡等辅助工具
10.1为什么需要一些辅助工具
交叉编译,不便于本机运行调试程序。
嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。
嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。
10.2;Jlink作用
下载可执行程序到目标机。
在目标机上实现单步调试,便于开发bootloader。
10.3;sd卡的作用
作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入 嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧录的镜像处启动。
10.4网线转串口线的作用
串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。
因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。
还有一些其他辅助工具
USB OTG线
DB9串口线
交叉网线

一小章课程到此完毕 最简单的一节都看了这么久 压力大大的
明天开始下一章 正式学习arm 期待满满 打好基础为后续项目做准备

你可能感兴趣的:(嵌入式学习)