系统引导程序代码注释.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
系统引导程序代码注释

第3章的附录 系统引导程序的代码 下面是一个基于S3C2410芯片的嵌入式系统引导(启动)程序Startup.s文件中的汇编源程序。通过对这段程序的分析,巩固所学的汇编指令知识,并学习嵌入式系统引导程序的编写方法。程序中各条指令及指示符的具体含义请参照3.1节和3.3.1小节中的说明。 ;Startup Code for S3C2410 : Startup.s ;下面指令包含2410addr.s文件,该文件中定义了S3C2410内部寄存器地址对应的变量。 GET 2410addr.s ; 某些ARM920T CPSR寄存器位的定义,定义了部分常量。 USERMODE EQU 0x10 ; USERMODE等都是一些常量名称 FIQMODE EQU 0x11 IRQMODE EQU 0x12 SVCMODE EQU 0x13 ABORTMODE EQU 0x17 UNDEFMODE EQU 0x1b MODEMASK EQU 0x1f NOINT EQU 0xc0 ;定义IRQ和FIQ相关的寄存器 I_Bit * 0x80 F_Bit * 0x40 ; 定义MMU相关的寄存器。 CtrlMMU * 1 CtrlAlign * 2 CtrlCache * 4 CtrlWBuff * 8 CtrlBigEnd * 128 CtrlSystem * 256 CtrlROM * 512 TLB_L0_INIT * 0x0C02 ;AREA指示汇编器汇编一段新的代码,为保证下面的代码为起始代码,应在ARM连接器的layout选项中指明Startup.o(Init) (如图1-33所示),或用scatter格式的描述性文件说明。 AREA Init,CODE,READONLY ;IMPORT提供汇编器在当前汇编中未曾定义的符号名。 IMPORT __use_no_semihosting_swi IMPORT Enter_UNDEF IMPORT Enter_SWI IMPORT Enter_PABORT IMPORT Enter_DABORT IMPORT Enter_FIQ ;下面ENTRY指明了程序的入口,在应用程序中有且只有一个程序入口。 ENTRY ;下面是异常向量表,第一条语句是复位异常对应的跳转指令。 b ColdReset ;复位 b Enter_UNDEF ;未定义指令错误 b Enter_SWI ;软件中断 b Enter_PABORT ;预取指令错误 b Enter_DABORT ;数据存取错误 b . ;一个保留的中断向量 b IRQ_Handler ;IRQHandler b Enter_FIQ ;FIQHandler ;处理IRQ中断 EXPORT IRQ_Handler ;导入 IRQ_Handler IRQ_Handler ;IRQ中断处理函数 IMPORT ISR_IrqHandler ;导入ISR_IrqHandler STMFD sp!, {r0-r12, lr} ;寄存器入栈 BL ISR_IrqHandler ;跳转到ISR_IrqHandler函数 LDMFD sp!, {r0-r12, lr};寄存器出栈 SUBS pc, lr, #4 ;返回 ;系统上电或复位后跳转到此处开始进行运行。 EXPORT ColdReset ColdReset ;关看门狗定时器 ldr r0,=WTCON ;R0=WTCON,后面有类似的操作时注释略 ldr r1,=0x0 ;R1=0 str r1,[r0] ;将R1的内容存入R0 ;关所有中断 ldr r0,=INTMSK ldr r1,=0xffffffff ;关闭所有中断 str r1,[r0] ;将R1的内容存入R0 ldr r0,=INTSUBMSK ldr r1,=0x7ff ;关闭所有子中断 str r1,[r0] ;将R1的内容存入R0 ;初始化堆栈 bl InitStacks ;跳转到InitStacks设置各模式的堆栈 ;复制excption table到SRAM0x0地址处 ;导入相应的标号 IMPORT |Load$$EXCEPTION_EXEC$$Base| IMPORT |Image$$EXCEPTION_EXEC$$Base| IMPORT |I

文档评论(0)

jgx3536 + 关注
实名认证
内容提供者

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

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档