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子系统、内核核心子系统、文件系统子系统