注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

liuyue18301的个人主页

追逐梦想 光辉岁月

 
 
 

日志

 
 

uboot在引导linux之前要做的事 theKernel 作用  

2009-10-29 15:24:42|  分类: uboot |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

启动armlinux,bootloader必须提供下面几步:
 
1.  设置并初始化ram
2.  初始化一个串口
3.  检测处理器类型
4.  设置内核标记列表
5.  调用内核映像
 
1.       设置并初始化ram
 
bootloader要找到并初始化系统中所有的ram,内核将这些ram用于可变数据的存储。
 
2.       初始化一个串口
 
bootloader应该在目标板上初始化并使能一个串串口。这将允许内核串口驱动自动检测它应该用哪个串口作为内核控制台。
 
另外,bootloader也可通过标记列表传递相关的”console=”选项到内核来指定串口以及串口格式(奇偶位,停止位等)
 
3.       检测处理器类型
 
bootloader应该通过某种方法检测它所运行的处理器的类型,它最终必须能够向内核提供一个MACH_TYPE_xxx值。
 
4.设置内核标记列表
 
bootloader必须创建并初始化内核标记列表。一个有效的标记列表起始于ATAG_CORE而终止于ATAG_NONE。任何数量的标记都可以加入这个列表。bootloader至少要向内核传送系统内存的大小和位置以及根文件系统的位置。
 
标记列表必须放在某个内存区域,这个区域既不能被内核解压器重写,也不能被initrd ‘boot0’ 程序重写。推荐的位置是RAM开头的16K。
 
5.  调用内核映像
 
有两种调用kernel zImage的选择。如果zImage存储在flash中,并且被正确的连接从flash运行,那么对于bootloader来说,直接从flash调用zImage是合法的。
 
zImage也可以放到系统RAM中任何位置并在那个位置调用。注意,内核使用这个映像下面的16K RAM存储页表。推荐将映像存放在RAM的32K位置处。
 
在任何情况下,下面的重要条件都必须满足:
 
――屏蔽所有具有DMA功能的设备,以便内存不会被伪造的网络包或磁盘数据误导。这将大大节约你的调试时间
 
――cpu寄存器设置
r0 = 0,
r1 = 处理器类型号
r2 = 标记列表在系统内存中的物理地址
 
       uboot中调用内核时:
       theKernel (0, bd->bi_arch_number, bd->bi_boot_params);
这里第1、2、3个参数就分别存储在r0、r1、r2中。
 
――caches, MMUs
MMU必须关闭
指令cache可关闭或打开
数据cache必须关闭
 
――bootloader被指望通过直接跳转到内核映像的第一条指令来调用内核映像

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lanmanck/archive/2009/06/19/4282400.aspx

  评论这张
 
阅读(978)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018