- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
u-boot-2011.06啟动流程分析
此文来源:赵春江老师的CNSD博客,希望帮到更多的人:/zhaocj/zhaocju-boot支持许多CPU,以及一些常见的开发板。本文以u-boot-2011.06这个最新版本为例,简要介绍一下u-boot在smdk2410上的启动流程。?首先系统是从arch/arm/cpu/arm920t目录下的start.s文件开始执行,并且实际开始执行的代码是从第117行开始:117:start_code:118: /*119: * set the cpu to SVC32 mode120: */121: mrs? r0, cpsr122: bic?? r0, r0, #0x1f123: orr?? r0, r0, #0xd3124: msr? cpsr, r0上述代码的含义是设置cpu为SVC32模式,即超级保护模式,用于操作系统使用。?140:#ifdef CONFIG_S3C24X0141: /* turn off the watchdog */142:143:# if defined(CONFIG_S3C2400)144:#? define pWTCON??? 0#? define INTMSK???? 0?? /* Interupt-Controller base addresses */146:#? define CLKDIVN?? 0?? /* clock divisor register */147:#else148:#? define pWTCON??? 0x53000000149:#? define INTMSK???? 0x4A000008?? /* Interupt-Controller base addresses */150:#? define INTSUBMSK???? 0x4A00001C151:#? define CLKDIVN?? 0x4C000014?? /* clock divisor register */152:# endif153:154: ldr?? r0, =pWTCON155: mov r1, #0x0156: str??? r1, [r0]157:158: /*159: * mask all IRQs by setting all bits in the INTMR - default160: */161: mov r1, #0xffffffff162: ldr?? r0, =INTMSK163: str??? r1, [r0]164:# if defined(CONFIG_S3C2410)165: ldr?? r1, =0x3ff166: ldr?? r0, =INTSUBMSK167: str??? r1, [r0]168:# endif169:170: /* FCLK:HCLK:PCLK = 1:2:4 */171: /* default FCLK is 120 MHz ! */172: ldr?? r0, =CLKDIVN173: mov r1, #3174: str??? r1, [r0]175:#endif?? /* CONFIG_S3C24X0 */该段代码的含义为,先定义几个需要的寄存器,然后关闭开门狗定时器,以及屏蔽所有中断和子中断,最后设置三个时钟频率之间的比值。?181:#ifndef CONFIG_SKIP_LOWLEVEL_INIT182: bl??? cpu_init_crit183:#endif在第182行中,程序跳转到cpu_init_crit中,它也是在start.s文件中,函数的位置在第328行至第356行,它的作用是设置一些重要的寄存器(如MMU和caches等)以及内存时序。其中在第353行,程序又跳转到了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-byte alignment for ABI compliance */189: ldr?? r0,=0x00000000190: bl??? board_init_f从cpu_init_crit返回后,来到了调用board_init_f的函数处。首先进行堆栈的设置,然后就跳转到board_init_f函数,其中传递给该函数的参数为0。board_init_f这个函数是在arch/arm/lib目录下的board.c文件内定义的
您可能关注的文档
最近下载
- 镇痛治疗规范.docx VIP
- 数字文化与娱乐:2025年动漫IP衍生品市场洞察报告.docx
- 护理安全管理在新生儿病房的应用课件教学教材演示幻灯片.pptx VIP
- 2025至2030中国动物园行业产业运行态势及投资规划深度研究报告.docx
- NB-T 47047-2015 承压设备用镍及镍合金无缝管.pdf VIP
- 气道净化护理(2024年中华护理学会团体标准).pptx VIP
- 高中数学函数的单调性教学设计比赛一等奖.doc VIP
- 《电子商务概论》(附微课 第5版)课件 第7、8章 新媒体运营、 电子商务安全.pdf
- 深圳市育才教育团育才三中语文新初一分班试卷含答案.doc VIP
- 测绘地形图图技术总结.doc VIP
文档评论(0)