最新消息:

移植u-boot-2010.09到tq2440(一)

C/C++ admin 3305浏览 0评论

前言:
很久之前就买了块s3c2440的开发板tq2440,之前一直都是用天嵌提供的u-boot,但是这个u-boot的版本太老,使用的还是parameter_struct的传递内核参数的方法,这种传递参数的方法主要是2.6 之前的内核使用的方式。于是我就有了移植u-boot的想法,在网上看了不少u-boot移植的资料,但是大多都是讲到一些驱动的移植后就结束了,竟然连linux内核的引导都没有讲清楚,感觉很不完整,所以我打算再做一个文档作为补充。所以,我的移植重点在于完整的实现一个最最基本的bootloader的功能—从cpu加电开始,一直到bootloader完全的把cpu的控制权限交给内核,什么NOR Flash,网卡,统统用不到,所以不移植。

一. 移植的硬软件环境
移植版本:u-boot-2010.09
硬件参数:tq2440开发板,s3c2440A,64M的SDRAM,256M的nand Flash。

二. U-boot引导内核的基本过程
接触过bootloader的人都知道bootloader是分为两个部分,即stage1和stage2,stage1的主要工作为:
1. 定义入口,设置异常向量;
2. 初始化硬件,如cpu,内存;
3. 将rom中的代码复制到ram中;
4. 初始化C的运行环境;
5. 跳转到ram中继续运行。
有了stage1的铺垫,stage2的工作就显得比较简单了:
1. 调用一些列的初始化函数,例如初始化nand flash;
2. 如果是交互模式,则进入主loop(),循环的接收执行用户输入的命令;
3. 如果不是交互模式,对于zImage格式的内核,就复制nand flash中的内核映像到ram的指定位置(如s3c2440为0×30008000),然后跳转到指定位置执行(这里的详细过程,以后会讲到),此刻,bootloader的使命就完成了,内核已经取得了cpu的完全控制。

转载请注明:爱开源 » 移植u-boot-2010.09到tq2440(一)

您必须 登录 才能发表评论!