资源描述:
《start.S详细讲解2》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、....../****************************************************************************CPU_init_criticalregisters**setupimportantregisters*setupmemorytiming***************************************************************************/@CPU初始化 #ifndefCONFIG_SKIP_LOWLEVEL_INITcpu_init_crit:/*
2、*flushv4I/Dcaches*/@初始化CACHES mov r0,#0mcr p15,0,r0,c7,c7,0 /*flushv3/v4cache*/mcr p15,0,r0,c8,c7,0 /*flushv4TLB*/ /**disableMMUstuffandcaches*/@关闭MMU和CACHESmrc p15,0,r0,c1,c0,0bic r0,r0,#0x00002300 @clearbits13,9:8(--V---RS)bic r0,r0,#0x00000087 @clearbits7,2:0(B----CAM)orr r0,r0,#
3、0x00000002 @setbit2(A)Alignorr r0,r0,#0x00001000 @setbit12(I)I-Cachemcr p15,0,r0,c1,c0,0@对协处理器的操作还是看不懂,暂时先不管吧,有时间研究一下ARM技术手册的协处理器部分。 /**beforerelocating,wehavetosetupRAM学习好帮手......timing*becausememorytimingisboard-dependend,youwill*findalowlevel_init.Sinyourboarddirectory.*/@初始化RAM时
4、钟,因为内存是跟开发板密切相关的,所以这部分在/开发板目录/lowlevel_init.S中实现mov ip,lr@保存LR,以便正常返回,注意前面是通过BL跳到cpu_init_crit来的。@(ARM9有37个寄存器,ARM7有27个)37个寄存器=7个未分组寄存器(R0~R7)+2×(5个分组寄存器R8~R12)+6×2(R13=SP,R14=lr分组寄存器)+1(R15=PC)+1(CPSR)+5(SPSR)用途和访问权限:R0~R7:USR(用户模式)、fiq(快速中断模式)、irq(中断模式)、svc(超级用法模式)、abt、undR8~R12:R8
5、_usr~R12_usr(usr,irq,svc,abt,und)R8_fiq~R12_fiq(fiq)R11=fpR12=IP(从反汇编上看,fp和ip一般用于存放SP的值)R13~R14:R13_usrR14_usr(每种模式都有自己的寄存器)SP~lr:R13_fiqR14_fiqR13_irqR14_irqR13_svcR14_svcR13_abtR14_abtR13_undR14_undR15(PC):都可以访问(即PC的值为当前指令的地址值加8个字节)R16 :((CurrentProgramStatusRegister,当前程序状态寄存器))S
6、PSR_fiq,SPSR_irq,SPSR_abt,SPSR_und(USR模式没有) #if defined(CONFIG_AT91RM9200EK) #elsebl lowlevel_init@跳到底层硬件初始化,这部分代码在自己建立的开发板目录下的lowlevel_init.S中。 #endifmov lr,ipmov pc,lr@返回到主程序学习好帮手...... #endif/*CONFIG_SKIP_LOWLEVEL_INIT*/ /***********************************************************
7、*****************Interrupthandling***************************************************************************/@这段没有看明白,不过好像跟移植关系不是很大,先放一放。@@IRQstackframe.@#defineS_FRAME_SIZE 72 #defineS_OLD_R0 68#defineS_PSR 64#defineS_PC 60#defineS_LR 56#defineS_SP 52 #defineS_IP 48#defineS_FP
8、 44#defineS