您的位置 首页 元件

LPC2000系列ARM发动代码(startup部分)

;定义堆栈的大小SVC_STACK_LEGTHEQU0FIQ_STACK_LEGTHEQU0IRQ_STACK_LEGTHEQU256ABT_STACK_LEGTHEQU0UND_STACK_LEGT

  1. ;界说仓库的巨细
  2. SVC_STACK_LEGTHEQU0
  3. FIQ_STACK_LEGTHEQU0
  4. IRQ_STACK_LEGTHEQU256
  5. ABT_STACK_LEGTHEQU0
  6. UND_STACK_LEGTHEQU0
  7. NoIntEQU0x80;制止IRQ间断
  8. NoFIQEQU0x40;制止FIQ间断
  9. USR32ModeEQU0x10;ARM的各种作业形式
  10. SVC32ModeEQU0x13
  11. SYS32ModeEQU0x1f
  12. IRQ32ModeEQU0x12
  13. FIQ32ModeEQU0x11
  14. IMPORT__use_no_semihosting_swi
  15. ;引进的外部标号在这声明
  16. IMPORTFIQ_Exception;Fastinterruptexceptionshandler快速间断反常处理程序
  17. IMPORT__main;TheentrypointtothemainfunctionC言语主程序进口
  18. IMPORTTargetResetInit;initializethetargetboard方针板根本初始化
  19. ;给外部运用的标号在这声明
  20. EXPORTbottom_of_heap
  21. EXPORTStackUsr
  22. EXPORTReset
  23. EXPORT__user_initial_stackheap
  24. CODE32
  25. AREAvectors,CODE,READONLY
  26. ENTRY
  27. ;间断向量表
  28. Reset
  29. LDRPC,ResetAddr;//留意,这儿应该赋值给PC不是ResetAr这个地址,而是ResetAr这个地址里的值,是ResetInit
  30. LDRPC,UndefinedAddr;//别的,LDR寻觅空间4K,用DCD完成全规模寻址
  31. LDRPC,SWI_Addr
  32. LDRPC,PrefetchAddr
  33. LDRPC,DataAbortAddr
  34. DCD0xb9205f80
  35. LDRPC,[PC,#-0xff0]
  36. LDRPC,FIQ_Addr
  37. ResetAddrDCDResetInit
  38. UndefinedAddrDCDUndefined
  39. SWI_AddrDCDSoftwareInterrupt
  40. PrefetchAddrDCDPrefetchAbort
  41. DataAbortAddrDCDDataAbort
  42. NouseDCD0
  43. IRQ_AddrDCD0
  44. FIQ_AddrDCDFIQ_Handler
  45. Undefined
  46. BUndefined
  47. ;软间断
  48. SoftwareInterrupt
  49. ;BSoftwareInterrupt
  50. ;//增加开/关间断处理Chenxibing-2004-02-09
  51. CMPR0,#4
  52. LDRLOPC,[PC,R0,LSL#2]
  53. MOVSPC,LR
  54. SwiFunction
  55. DCDIRQDisable;0
  56. DCDIRQEnable;1
  57. DCDFIQDisable;2
  58. DCDFIQEnable;3
  59. IRQDisable
  60. ;关IRQ间断
  61. MRSR0,SPSR
  62. ORRR0,R0,#NoInt
  63. MSRSPSR_c,R0
  64. MOVSPC,LR
  65. IRQEnable
  66. ;开IRQ间断
  67. MRSR0,SPSR
  68. BICR0,R0,#NoInt
  69. MSRSPSR_c,R0
  70. MOVSPC,LR
  71. FIQDisable
  72. ;关FIQ间断
  73. MRSR0,SPSR
  74. ORRR0,R0,#NoFIQ
  75. MSRSPSR_c,R0
  76. MOVSPC,LR
  77. FIQEnable
  78. ;开FIQ间断
  79. MRSR0,SPSR
  80. BICR0,R0,#NoFIQ
  81. MSRSPSR_c,R0
  82. MOVSPC,LR
  83. ;//Changed2004-12-09
  84. ;取指令间断
  85. PrefetchAbort
  86. BPrefetchAbort
  87. ;取数据间断
  88. DataAbort
  89. BDataAbort
  90. ;快速间断
  91. FIQ_Handler
  92. STMFDSP!,{R0-R3,LR}
  93. BLFIQ_Exception
  94. LDMFDSP!,{R0-R3,LR}
  95. SUBSPC,LR,#4
  96. ;/*********************************************************************************************************
  97. ;**unctionname函数称号:InitStack
  98. ;**Descriptions功用描绘:Initializethestacks初始化仓库
  99. ;**inputparameters输 入:None无
  100. ;**Returnedvalue输 出:None无
  101. ;******************************************************************************************************/
  102. InitStack
  103. MOVR0,LR
  104. ;BuildtheSVCstack
  105. ;设置管理形式仓库
  106. MSRCPSR_c,#0xd3
  107. LDRSP,StackSvc
  108. ;BuildtheIRQstack
  109. ;设置间断形式仓库
  110. MSRCPSR_c,#0xd2
  111. LDRSP,StackIrq
  112. ;BuildtheFIQstack
  113. ;设置快速间断形式仓库
  114. MSRCPSR_c,#0xd1
  115. LDRSP,StackFiq
  116. ;BuildtheDATAABORTstack
  117. ;设置间断形式仓库
  118. MSRCPSR_c,#0xd7
  119. LDRSP,StackAbt
  120. ;BuildtheUDFstack
  121. ;设置未界说形式仓库
  122. MSRCPSR_c,#0xdb
  123. LDRSP,StackUnd
  124. ;BuildtheSYSstack
  125. ;设置体系形式仓库
  126. MSRCPSR_c,#0xdf
  127. LDRSP,=StackUsr
  128. MOVPC,R0
  129. ;/*********************************************************************************************************
  130. ;**unctionname函数称号:ResetInit
  131. ;**Descriptions功用描绘:RESET复位进口
  132. ;**inputparameters输 入:None无
  133. ;**Returnedvalue输 出:None无
  134. ;********************************************************************************************************/
  135. ResetInit
  136. BLInitStack;初始化仓库Initializethestack
  137. BLTargetResetInit;方针板根本初始化Initializethetargetboard
  138. ;跳转到c言语进口JumptotheentrypointofCprogram
  139. B__main
  140. ;/*****************************************************************************************************************************************************
  141. ;**unctionname函数称号:__user_initial_stackheap
  142. ;**Descriptions功用描绘:Initialthefunctionlibrarystacksandheaps,cannotdeleted!库函数初始化堆和栈,不能删去
  143. ;**inputparameters输 入:referencebyfunctionlibrary参阅库函数手册
  144. ;**Returnedvalue输 出:referencebyfunctionlibrary参阅库函数手册
  145. ;************************************************************************************************************************************************************/
  146. __user_initial_stackheap
  147. LDRr0,=bottom_of_heap
  148. ;LDRr1,=StackUsr
  149. MOVpc,lr
  150. StackSvcDCDSvcStackSpace+(SVC_STACK_LEGTH-1)*4
  151. StackIrqDCDIrqStackSpace+(IRQ_STACK_LEGTH-1)*4
  152. StackFiqDCDFiqStackSpace+(FIQ_STACK_LEGTH-1)*4
  153. StackAbtDCDAbtStackSpace+(ABT_STACK_LEGTH-1)*4
  154. StackUndDCDUndtStackSpace+(UND_STACK_LEGTH-1)*4
  155. ;/*********************************************************************************************************
  156. ;**unctionname函数称号:CrpData
  157. ;**Descriptions功用描绘:encryptthechip
  158. ;**inputparameters输 入:None无
  159. ;**Returnedvalue输 出:None无
  160. ;********************************************************************************************************/
  161. IF:DEF:EN_CRP
  162. IF.>=0x1fc
  163. INFO1,”/nThedataat0x000001fcmustbe0x87654321./nPleasedeletesomesourcebeforethisline.”
  164. ENDIF
  165. CrpData
  166. WHILE.<0x1fc
  167. NOP
  168. WEND
  169. CrpData1
  170. DCD0x87654321;/*WhentheDatais为0x87654321,usercodebeprotected.当此数为0x87654321时,用户程序被维护*/
  171. ENDIF
  172. ;/*分配仓库空间*/
  173. AREAMyStacks,DATA,NOINIT,ALIGN=2
  174. SvcStackSpaceSPACESVC_STACK_LEGTH*4;StackspacesforAdministrationMode管理形式仓库空间
  175. IrqStackSpaceSPACEIRQ_STACK_LEGTH*4;StackspacesforInterruptReQuestMode间断形式仓库空间
  176. FiqStackSpaceSPACEFIQ_STACK_LEGTH*4;StackspacesforFastInterruptreQuestMode快速间断形式仓库空间
  177. AbtStackSpaceSPACEABT_STACK_LEGTH*4;StackspacesforSuspendMode间断义形式仓库空间
  178. UndtStackSpaceSPACEUND_STACK_LEGTH*4;StackspacesforUndefinedMode未界说形式仓库
  179. AREAHeap,DATA,NOINIT
  180. bottom_of_heapSPACE1
  181. AREAStacks,DATA,NOINIT
  182. StackUsr
  183. END
  184. ;/*********************************************************************************************************
  185. ;**EndOfFile
  186. ;********************************************************************************************************/

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/yuanjian/264418.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部