3.1.关于交叉编译
(1)两种开发模式:非嵌入式开发:A类机编写源代码,然后编译得到可执行程序,然后发布给A类机运行(譬如windows下桌面程序的开发流程就是典型的非嵌入式开发模式)。嵌入式开发:A类机编写源代码,然后编译得到可执行程序,发布给B类机运行(譬如说开发路由器软件,一般在A类机桌面电脑上编写源码并编译,然后交由B类机运行)。
(2)嵌入式开发的CPU比较简单,本身无法搭建开发环境,有些甚至连操作系统都没有。交叉编译可以用高性能机器为低性能机器开发软件(包括裸机程序、系统级和应用级软件)。
(3)交叉编译必须有专门的交叉编译工具链。由于可执行程序不能本地运行调试,因此必须配合一定手段(专用调试器、JTAG调试器、USB下载、串口下载、SD启动、网络共享等)将可执行程序加载到目标嵌入式设备上运行及调试。
3.2.CPU的设计原理
(1)CPU可分为三部分:寄存器(CPU里面的快速临时内存,用来存储从外部读取到CPU中数据等)、控制器(控制CPU的运行,譬如说读取指令代码,进行解码,然后执行)、运算器(进行数学运算,譬如说加、减法、乘法、左移、右移等)。
(2)构成计算机系统的三要素:CPU+Flash(相当于电脑的硬盘,用来存储程序等数据的)+DDR。Flash和DDR都通过各自的总线接口和CPU连接。程序平时在Flash中存放,它需要到内存中运行,CPU会先将Flash中的程序读到寄存器里面来,然后通过寄存器将程序放到DDR中运行。
(3)现在越来越多的外设都跑到CPU里面去形成SoC了,所以存在两种总线分别为内部总线(速度更快、抗干扰能力强)和外部总线(受限于PCB板的布线,其速度不会太高)。片内外设都是通过内部总线与CPU连接,Flash和DDR一般是通过外部总线和CPU连接(见图1)。
3.3.地址总线和数据总线
(1)CPU通过地址总线寻址,然后通过数据总线与外部设备互换信息。地址总线的位数决定CPU寻址范围;数据总线的位数决定CPU单次通信能交换的信息数量。总线的速度决定CPU和外设互换信息的速度。
(2)CPU的地址总线位数和数据总线可以不同(典型代表就是51单片机,数据总线为8位,地址总