1、什么是交叉编译
1.1、两种开发模式
非嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给A(类)机运行。
嵌入式开发,A(类)机编写(源代码)、编译得到可执行程序,发布给B(类)机运行。
1.2、为什么使用交叉编译
嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至操作系统都没有。
交叉编译可以用高性能机器为低性能机器开发软件(包括裸机软件、系统级和应用级软件)。
1.3、交叉编译特点
必须使用专用的交叉编译工具链。
由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。
2、CPU的设计原理、数据总线和地址总线
2.1、CPU和总线示意图
2.2、地址总线和数据总线
总线分为数据总线、地址总线、命令总线。这里没有提及命令总线,是为了突出数据总线和地址总线,有需要可以自己去了解一下。
CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。
地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量。
总线的速度决定CPU和外设互换信息的速度。
2.3、注意
CPU的地址总线和数据总线的位数可以不同(典型代表就是51单片机),但是一般都相同。
CPU的位数指的是数据总线的位数。
32位(2exp32)CPU寻址的范围是4G,所以最多支持4G内存。
数据总线是32位的,所以内存最好也是32位的。
3、为什么需要Jlink、SD卡等辅助设备
3.1、嵌入式开发特点
交叉编译,不便于本机运行调试程序。
嵌入式系统需要bootloader来启动,而bootloader必须首先存在于可启动介质中,这个过程需要专用工具。
嵌入式系统无法通过纯软件实现单步调试,因此必须借助专用的调试器。
3.2、Jlink的作用
下载可执行程序到目标机。
在目标机上实现单步调试,便于开发bootloader。
3.3、SD卡的作用
作为启动介质。工作方式是:事先用读卡器将SD卡连接到开发机(一般是Windows电脑),通过写卡软件将交叉编译得到的可执行程序镜像烧录到SD卡,然后将SD卡插入嵌入式目标机卡槽,设置正确的启动方式启动,则系统可以从SD卡中烧录的镜像处启动。
3.4、USB转串口线的作用
串口本身用来做嵌入式目标机的调试输出,主要目的是用来监视及调试软件。
因为现在大部分个人电脑(大部分台式机和几乎全部的笔记本电脑)都未配置DB9串口,因此工作中一般直接使用USB转串口线来连接PC和开发板。
3.5、其它开发辅助工具
USB OTG线
DB9串口线
交叉网线