start_up.s
上传用户:jndfzc
上传日期:2014-06-02
资源大小:325k
文件大小:2k
源码类别:

单片机开发

开发平台:

Others

  1. AREA Init, CODE, READONLY
  2. Mode_USR EQU 0x10
  3. Mode_FIQ EQU 0x11
  4. Mode_IRQ EQU 0x12
  5. Mode_SVC EQU 0x13
  6. Mode_ABT EQU 0x17
  7. Mode_UNDEF EQU 0x1B
  8. Mode_SYS EQU 0x1F
  9. I_Bit EQU 0x80
  10. F_Bit EQU 0x40
  11. Len_FIQ_Stack EQU 0x500
  12. Len_IRQ_Stack EQU 0x500
  13. Len_ABT_Stack EQU 0x100
  14. Len_UND_Stack EQU 0x100
  15. Len_SVC_Stack EQU 0x400
  16. RAM_Limit EQU 0x40000 ; RAM 256k
  17. IRQ_Stack EQU RAM_Limit
  18. FIQ_Stack EQU IRQ_Stack-Len_IRQ_Stack
  19. ABT_Stack EQU FIQ_Stack-Len_FIQ_Stack
  20. UND_Stack EQU ABT_Stack-Len_ABT_Stack
  21. SVC_Stack EQU UND_Stack-Len_UND_Stack
  22. USR_Stack EQU SVC_Stack-Len_SVC_Stack
  23. EXPORT Reset_Handler
  24. Reset_Handler
  25. BL ARMInt_Disable
  26. MSR     CPSR_c, #Mode_FIQ:OR:I_Bit:OR:F_Bit ; No interrupts
  27. LDR     sp, =FIQ_Stack
  28. MSR     CPSR_c, #Mode_IRQ:OR:I_Bit:OR:F_Bit ; No interrupts
  29. LDR     sp, =IRQ_Stack
  30. MSR     CPSR_c, #Mode_ABT:OR:I_Bit:OR:F_Bit ; No interrupts
  31. LDR     sp, =ABT_Stack
  32. MSR     CPSR_c, #Mode_UNDEF:OR:I_Bit:OR:F_Bit ; No interrupts
  33. LDR     sp, =UND_Stack
  34. MSR     CPSR_c, #Mode_SVC:OR:I_Bit:OR:F_Bit ; No interrupts
  35. LDR     sp, =SVC_Stack
  36. ;/*******************************************************************************/
  37. ;/* Initializing Memory required by C Code run time Environment */
  38. ;/*******************************************************************************/
  39. IMPORT  |Image$$ZI$$Base|    ;// Base and limit of area
  40. IMPORT  |Image$$ZI$$Limit|   ;// to zero initialise
  41. MOV  R2, #0x0 
  42. LDR  R0, =|Image$$ZI$$Base|
  43. LDR  R1, =|Image$$ZI$$Limit|
  44. Do_Clear
  45. STR  R2, [R0], #0x4
  46. CMP  R0, R1
  47. BCC  Do_Clear 
  48. ;/*******************************************************************************/
  49. ;/* Now Change to User Mode and Setup for the User Mode Stack */
  50. ;/*******************************************************************************/
  51. ; MSR     CPSR_c, #Mode_USR ; No interrupts
  52. ; LDR     sp, =USR_Stack
  53.                 
  54. IMPORT  main
  55. B       main
  56. EXPORT ARMInt_Enable
  57. EXPORT ARMInt_Disable
  58. ARMInt_Enable
  59. ; stmdb sp!,{r0}
  60. mrs r0,cpsr
  61. bic r0,r0,#0xc0
  62. msr cpsr_c,r0
  63. ; ldmia sp!,{r0}
  64. mov pc,lr
  65. ARMInt_Disable
  66. ; stmdb sp!,{r0}
  67. mrs r0,cpsr
  68. orr r0,r0,#0xc0
  69. msr cpsr_c,r0
  70. ; ldmia sp!,{r0}
  71. mov pc,lr
  72. END