2410启动代码startups分析.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2410启动代码startups分析

启动代码start.s(相当于bootloader的前端代码),开机就执行的代码,即0x0000处放置的代码。给CPU一个合适的工作环境。面向CPU内核和外围硬件,所以一般用汇编编写。 1、在起始地址分配中断向量表即中断处理函数(CPU要求的),以为向量空间只有4字节,所以一般只是一个跳转指令,去别处执行。 2、之后初始化存储器系统 3、初始多个模式下的堆栈(模式切换时,硬件给SP置位) 4、初始化有特殊要求的外围设备,如LED灯、看门狗 5、初始化用户的执行环境(在FLASH中运行太慢了,把代码整体搬迁到RAM中) 6、切换处理器的工作模式 7、调用主程序 (没见到有存储控制器的配置代码,也没见到有时钟初始化代码) 下面分析,所给的2410的启动代码实现了以上的那些功能,实现得显然不全,或者不需要,或者在工程代码的其它部分实现。 读程序时注意,所有程序都是逐行顺序执行的,要看清跳转指令。 GET 2410addr.s //用到了2410addr.s中的寄存器地址宏定义 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Some ARM920 CPSR bit discriptions ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;Pre-defined constants//预定义的变量,一下后续代码中使用方便,与CPSR相关 USERMODE EQU 0x10 FIQMODE EQU 0x11 IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABORTMODE EQU 0x17 UNDEFMODE EQU 0x1b MODEMASK EQU 0x1f NOINT EQU 0xc0 I_Bit * 0x80 F_Bit * 0x40 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; MMU Register discription ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;p15 CP 15 ;c0 CN 0 ;c1 CN 1 ;c2 CN 2 ;c3 CN 3 CtrlMMU * 1 CtrlAlign * 2 CtrlCache * 4 CtrlWBuff * 8 CtrlBigEnd * 128 CtrlSystem * 256 CtrlROM * 512 ;initialization L0 is MMU FULL_ACCESS, DOMAIN, SECTION TLB_L0_INIT * 0x0C02 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; Start here //执行代码从这里开始 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; //IMPORT ,定义表示这是一个外部变量的标号,不是在本程序定义的 //EXPORT ,表示本程序里面用到的变量提供给其他模块调用的。 //以上两个在汇编和C语言混合编程的时候用到 AREA Init,CODE,READONLY IMPORT __use_no_semihosting_swi IMPORT Enter_UNDEF //有点extern的感觉 IMPORT Enter_SWI IMPORT Enter_PABORT IMPORT Enter_DABORT IMPORT Enter_FIQ ENTRY //这是程序的入口 //中断/异常向量表(跳转),上电第一条就执行b ColdReset,跳转到ColdReset。 b ColdReset b Enter_UNDEF ;UndefinedInstruction b Enter_SWI ;syscall_handler or SWI b Enter_PABORT ;PrefetchAbort b Enter_DABORT ;DataAbort b . ;ReservedHandler

文档评论(0)

ctuorn0371 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档