1.单片机裸机和带有操作系统OS的区别
\qquad裸机有三层,从上至下依次为:应用层、驱动层、硬件层;而带有OS的单片机有四层,从上至下依次为:应用层、内核层、驱动层、硬件层。
2.系统移植学习内容
\qquad四大块:搭建交叉编译环境、bootloader的选择和移植、kernel的配置,编译,移植和调试、根文件系统的制作
3.系统移植的基本步骤
3.1 确定目标机(单片机)和主机(PC电脑)的连接方式
\qquad目前,基本有四种连接方式:
 \qquadUART异步串行通信接口(串口)
| 通信方式 | 特点 | 
|---|---|
| UART异步串行通信接口(串口) | 速率低,实用性强,可以输入输出 | 
| USB串行通信接口 | 速度快,驱动要移植修改 | 
| TCP/IP网络通信接口 | 速度快,驱动要移植 | 
| Debug Jtag调试接口 | 方便快捷,价格高 | 
3.2安装交叉编译器
\qquadgcc是基于X86架构,所以它编译出来的文件在ARM上运行不起来,所以需要交叉编译器,编译出可以在ARM上运行的文件。
 \qquad交叉编译器的来源:1.安装芯片厂商已经编译好的交叉工具链,比如arm-none-linux-gnueabi-,arm-none-eabi-,arm-linux-,arm-elf-…2.自己动手编译交叉工具链,自己制作。
 \qquad交叉编译器的名称:arm:最终生成的体系结构目标;none:厂商名;linux:交叉工具链编译出来的程序是针对linux系统运行的;gnueabi:gnu表示开源,eabi表示嵌入式的调用标准接口。
 \qquad有时候会看到arm-linux-,这是表示一个软连接,输入arm-linux-相当于输入arm-none-linux-gnueabi-
 \qquadarm-none-eabi-:不支持操作系统
 \qquadarm-elf-:特别老的编译工具链,很少见到。
3.3搭建主机和目标机传输通道
\qquad网络相关服务配置:TFTP和NSH是最常用的
3.4 编译三大子系统
\qquadBootLoader子系统、内核核心子系统、文件系统子系统