第一部分 -ARM那些你得知道的事
1.外设就是外部设备,SOC中外设大部分都跑进去了,芯片设计的趋势是更大集成度,裸机学习其实就是学习SOC的内核 (CPU,表现为汇编指令集)和各种外设(如串口)
2.嵌入式和单片机的区别:
单片机开发多为裸机,程序规模小,多为某个程序员独立开发。有些复杂产品也会使用高端芯片如STM32,并且使用RTOS
嵌入式开发几乎全部基于操作系统,目前Android和linux使用最多。
编程语言:单片机主要使用C语言(少量用汇编),和标准C略有不哦那个,很少使用结构体,函数指针等C语言高级特性。
而嵌入式开发较复杂,一般分为底层和应用层。底层使用C语言,应用层使用C,C++,JAVA等语言均有。嵌入式C语言对结构体,数据结构,算法,函数指针(用来实现面向对象)等高级特性使用比较多。
软硬件组件方面:单片机多涉及简答外设,串口,IIC,ADC;而嵌入式系统则涉及更多复杂外设,譬如网络(网卡,WIFI,蓝牙),USB,音视频编解码等。
3.交叉编译
两种开发方式
非嵌入式开发:A机编写源代码,编译得到可执行程序,发布给A机运行
嵌入式开发:A机编写源代码,编译得到可执行程序,发布给B机运行。
使用交叉编译的原因:嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。
交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件,系统级和应用级软件)
交叉编译的特点: 必须使用专用的交叉编译工具链
由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器,JTAG调试器,USB下载,串口下 载,SD启动,网络共享等)将可执行程序加载到目标篇嵌入式设备上运行以及调试。
4.地址总线和数据总线
CPU通过地址总线寻址,然后通过数据总线与外部设备交换信息。
地址总线的位数绝地给CPU寻址范围;数据总线的位数决定CPU单次通信能够交换的信息数量
总线的速度决定CPU和外设互换信息的速度。
attention:
CPU的地址总线和数据总线是可以不相同的,但是一般都相同
CPU的位数指的是数据总线的位数。
32位CPU的寻址范围是4G,所以最多支持4G内存;
数据总线是32位,所以内存是32位的好,所以编程最好用int.
5.为何需要jlink,SD卡等辅助设备
交叉编译,不便于本机运行调试程序。
嵌入式系统需要bootloader必须首先存在于可启动介质中,这个过程需要专用工具。
嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。
jlink的作用:下载可执行程序到目标机;在目标机上实现单步调试,便于开发bootloader。
SD卡的作用:作为启动介质。工作方式:事先用读卡器将SD卡连接到开发机(一般是windows电脑),
通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入嵌入式目标机卡槽,设置正确的 启动方式 启动,则系统可以从SD卡中烧录的镜像处启动。
USB串口线的作用:
串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。
因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转 串口线来连接PC和开发板。
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交