学习思路和方向
先整体后局部,层层推进
一个内核代码 不吃不喝1秒看一行,要两年才能看完,还没时间理解,因此学习要整体的学习方向
每个子系统都有一个复杂的层次关系。
需要首先掌握相关子系统的藏宝图,有了这个地图,去探索就有了方向
ARM裸机程序系统结构图(无OS)
复杂功能结构图(有OS)
内核解放了应用层,内核来封装驱动提供给应用使用。在对于更加复杂的结构功能时,就需要引入内核来解放应用
系统移植的四个点
1、交叉编译环境
2、bootloader功能子系统 (选择和移植)
3、内核核心子系统 (kernel的配置、编译、移植和调试)
4、文件系统子系统 (根文件系统的制作)
学习思路:先整体后局部,层层推进
如何编译-》如何添加命令或功能————>如何定义自己的开发板
1、交叉编译环境
移植的基本步骤:
1、确定目标机、主机的连接方式
UART异步串行通信接口(速率低,实用性强)
USB串行通信接口 (速度快,驱动要移植修改)
TCP/IP网络通信接口 (速度快,驱动要移植)
Debug Jtag 调试接口 (方便快捷,价格高)
2、安装交叉编译器
用厂商编译好的工具链 如 arm-linux-
3、搭建主机-目标机数据传输通 道 (NFS)
4、编译三大子系统(bootloader子系统,内核核心子系统,文件系统子系统)
5、烧写测试
用file +可执行文件名 可以看是在什么环境下的文件
解压
-C是将文件解压到根目录的意思。
如果存在多个交叉编译器的话,注意使用绝对路径方法,否则可能会使用别的编译器
简单方法: arm-linux-gcc -o build build.c
添加PATH环境变量,放入目录中间用冒号隔开。
可以直接用PATH = $PATH:
也可以修改/etc/environment 改完source