您的位置:首页 > 其它

Cstyle的札记:从Uboot开始,第0篇

2013-12-24 23:22 155 查看
        由于之前断断续续到看过一些相关到东西,但是年代久远,基本上忘记得只剩下一些基本到概念了,所以还是google了一下,找到了不少好东西,分享下链接。http://blog.csdn.net/zsy2020314?viewmode=contents这里有博主写到关于Uboot到不少心得体会,包括makefile语法,精简code和移植到新平台,当做是一个参考。

    Uboot的架构默认所关掉中断,使用查询到方式来实现整个的框架,有点类似UEFI。分为两个部分stag1和stag2。通常第一阶段完成cpu的最基本到初始化,比如关掉看门狗,关中断,时钟设置,内存初始化,堆栈,cache,把第二阶段到代码复制到第一阶段初始化好的内存当中,跳到第二阶段到C代码当中去,有点像SECore和PEIcore。第二阶段一般用来初始化本阶段需要用到的cpu外设,比如网卡,串口,读取os镜像和根文件系统到内存,设在内核启动参数,引导OS等,有点像所DXEcore和BDS。

    ​调用ARM linux前必须满足到条件:

R0=0

R1=机器类型ID,linux/arch/arm/tools/mach-types

R2=启动参数在内存中的位置

CPU禁止中断(IRQ,FIQ)

CPU工作在SVC模式

cache 关闭

MMU关闭



    ​完成了上面到步骤之后,我还需用uboot来构造一个数据结构(标记列表)来记录当前到内存到地址,启动命令等信息,uboot在把控制权交给os之前会先填这些数据结构,把数据结构到地址放在R2寄存器当中,OS接管之后,会从这里读取系统到相关信息,引导内核。这一点有点像E820 table,也有点像UEFI当中的systemtable里面记录到各种HOB,总之这些就是为OS提供一些基本到硬件信息。

转载请注明出处

Cstyle.z.zhou@gmail.com  //  http://blog.csdn.net/CStyle_0x007
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: