做boot移植工作之前,首先要确定整个boot的启动流程,按照启动流程确定移植步骤。
首先看一下boot的启动流程:
Bootloader执行基本的硬件初始化操作。如关掉中断RED HAT LINUX 9.0,关掉看门狗以避开处理器被复位linux中文乱码,以及关掉MMU功能,关掉处理器缓存(数据缓存一定要关掉,指令缓存可以打开),设置系统时钟,初始化显存等。这一阶段代码一般由汇编代码编撰,为了运行下一阶段的C程序还必须设置好堆栈。若果是从NANDFlash启动,则必须通过NANDFlash控制器将bootloader代码复制到显存。
这一阶段通常用C语言编撰linux串口驱动移植,大致分为一下几步:
1)初始化各类硬件设备,如设置处理器正常工作的时钟频度,初始化并口等。
2)测量系统显存,主要是确定系统显存容量以及其地址空间信息。
3)将内核映像文件加载到显存。
4)打算内核引导参数。
5)跳转到内核的第一条指令处,开始执行内核初始化代码linux串口驱动移植,控制权转移到内核代码,bootload的使命结束。
基本上每位构架平台的单板移植都须要以下移植步骤:
1、确定构架(例如ARM,MIPS,POWERPC)、平台(例如三星、海思)、单板(fs4412、exynos_origen)
2、确认交叉开发环境(修改Makefile的CROSS_COMPILE为arm-linux-)
3、配置、编译及烧录(makefs4412_config;make)
烧录时要注意环境变量的配置
4、查看并口是否有输出
若果没有输出首先查找并口驱动里面的问题,再根据整个boot的启动流程判定那里存在问题。
5、查看外围设备是否正常工作(如网卡)
6、裁剪(假如使用flash较小就须要针对不须要的功能进行剪裁)