u-boot-2011.06启动流程分析

u-boot-2011.06启动流程分析

ID:29622750

大小:115.76 KB

页数:28页

时间:2018-12-21

u-boot-2011.06启动流程分析_第1页
u-boot-2011.06启动流程分析_第2页
u-boot-2011.06启动流程分析_第3页
u-boot-2011.06启动流程分析_第4页
u-boot-2011.06启动流程分析_第5页
资源描述:

《u-boot-2011.06启动流程分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、此文来源:赵春江老师的CNSD博客,希望帮到更多的人:http://blog.csdn.net/zhaocju-boot支持许多CPU,以及一些常见的开发板。本文以u-boot-2011.06这个最新版本为例,简要介绍一下u-boot在smdk2410上的启动流程。 首先系统是从arch/arm/cpu/arm920t目录下的start.s文件开始执行,并且实际开始执行的代码是从第117行开始:117:start_code:118:     /*119:     *setthecputoSVC32mode120:    

2、*/121:    mrs r0,cpsr122:    bic  r0,r0,#0x1f123:    orr  r0,r0,#0xd3124:    msr cpsr,r0上述代码的含义是设置cpu为SVC32模式,即超级保护模式,用于操作系统使用。 140:#ifdefCONFIG_S3C24X0141:    /*turnoffthewatchdog*/142:143:#ifdefined(CONFIG_S3C2400)144:# definepWTCON   0x15300000145:# defineINTM

3、SK    0x14400008   /*Interupt-Controllerbaseaddresses*/146:# defineCLKDIVN  0x14800014   /*clockdivisorregister*/147:#else148:# definepWTCON   0x53000000149:# defineINTMSK    0x4A000008  /*Interupt-Controllerbaseaddresses*/150:# defineINTSUBMSK    0x4A00001C151:#

4、 defineCLKDIVN  0x4C000014  /*clockdivisorregister*/152:#endif153:154:    ldr  r0,=pWTCON155:    movr1,#0x0156:    str   r1,[r0]157:158:    /*159:    *maskallIRQsbysettingallbitsintheINTMR-default160:    */161:    movr1,#0xffffffff162:    ldr  r0,=INTMSK163:    s

5、tr   r1,[r0]164:#ifdefined(CONFIG_S3C2410)165:    ldr  r1,=0x3ff166:    ldr  r0,=INTSUBMSK167:    str   r1,[r0]168:#endif169:170:    /*FCLK:HCLK:PCLK=1:2:4*/171:    /*defaultFCLKis120MHz!*/172:    ldr  r0,=CLKDIVN173:    movr1,#3174:    str   r1,[r0]175:#endif  /

6、*CONFIG_S3C24X0*/该段代码的含义为,先定义几个需要的寄存器,然后关闭开门狗定时器,以及屏蔽所有中断和子中断,最后设置三个时钟频率之间的比值。 181:#ifndefCONFIG_SKIP_LOWLEVEL_INIT182:    bl   cpu_init_crit183:#endif在第182行中,程序跳转到cpu_init_crit中,它也是在start.s文件中,函数的位置在第328行至第356行,它的作用是设置一些重要的寄存器(如MMU和caches等)以及内存时序。其中在第353行,程序又跳转到

7、了lowlevel_init函数,它是在board/samsung/smdk2410目录下的lowlevel_init.s文件中定义的,这个文件的目的就是为了设置内存的时序。 186:call_board_init_f:187:    ldr  sp,=(CONFIG_SYS_INIT_SP_ADDR)188:    bic  sp,sp,#7/*8-bytealignmentforABIcompliance*/189:    ldr  r0,=0x00000000190:    bl   board_init_f从cp

8、u_init_crit返回后,来到了调用board_init_f的函数处。首先进行堆栈的设置,然后就跳转到board_init_f函数,其中传递给该函数的参数为0。board_init_f这个函数是在arch/arm/lib目录下的board.c文件内定义的,函数的位置是在第268行至第422行,它的作用是初始化开发

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。