找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4101|回复: 0
打印 上一主题 下一主题
收起左侧

arm汇编程序S3C2440

[复制链接]
跳转到指定楼层
楼主
ID:218549 发表于 2017-7-10 16:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

  1. pWTCON                EQU        0x53000000                                ;看门狗定时器口地址
  2. pLOCKTIME        EQU        0x4c000000                                ;锁定时间计数值寄存器地址
  3. pCLKDIVN         EQU        0x4c000014                                ;时钟控制寄存器地址
  4. pUPLLCON        EQU        0x4c000008                                ;
  5. pMPLLCON         EQU        0x4c000004
  6. pBWSCON          EQU 0x48000000                                ;设置数据总线宽度与等待状态控制寄存器地址
  7. pSRCPND                EQU        0x4a000000                                ;中断源状态寄存器地址
  8. pINTPND                EQU        0x4a000010                                ;中断状态寄存器地址
  9. pINTMOD                EQU        0x4a000004                                ;中断模式寄存器地址
  10. pINTMSK                EQU        0x4a000008                                ;中断屏蔽寄存器地址
  11. pINTSUBMSK        EQU        0x4a00001c                                ;子中断状态源寄存器地址
  12. pINTOFFSET        EQU 0x4a000014                            ;中断源偏移地址寄存器地址   
  13. pGPFCON         EQU        0x56000050                                ;GPIO F口控制寄存器地址
  14. pGPFUP          EQU        0x56000058                                ;F口上拉电阻控制寄存器地址

  15. _ISR_STARTADDRESS         EQU                0x33FFFF00        ;中断服务向量表起始地址

  16. vCLKDIVN        EQU                0x5
  17. vUPLLCON        EQU                0x00038022
  18. vMPLLCON        EQU                0x0005c011

  19. vU_MDIV                EQU        56                        ;Fin=12.0MHz Fout=48MHz
  20. vU_PDIV                EQU        2

  21. DW16                EQU        (0x1)
  22. DW32                EQU        (0x2)

  23. B1_BWSCON        EQU (DW16)        ; AMD flash(AM29LV160DB), 16-bit,  for nCS1
  24. B2_BWSCON        EQU (DW16)        ; PCMCIA(PD6710), 16-bit
  25. B3_BWSCON        EQU (DW16)        ; Ethernet(CS8900), 16-bit
  26. B4_BWSCON        EQU (DW32)        ; Intel Strata(28F128), 32-bit, for nCS4
  27. B5_BWSCON        EQU (DW16)        ; A400/A410 Ext, 16-bit
  28. B6_BWSCON        EQU (DW32)        ; SDRAM(K4S561632C) 32MBx2, 32-bit
  29. B7_BWSCON        EQU (DW32)        ; N.C.
  30. ;BANK0CON

  31. B0_Tacs                EQU        0x3        ;0clk
  32. B0_Tcos                EQU        0x3        ;0clk
  33. B0_Tacc                EQU        0x7        ;14clk
  34. B0_Tcoh                EQU        0x3        ;0clk
  35. B0_Tah                EQU        0x3        ;0clk
  36. B0_Tacp                EQU        0x1
  37. B0_PMC                EQU        0x0        ;normal

  38.                                 ;BANK1CON
  39. B1_Tacs                EQU        1;0x0        ;0clk
  40. B1_Tcos                EQU        1;0x0        ;0clk
  41. B1_Tacc                EQU        6;0x7        ;14clk
  42. B1_Tcoh                EQU        1;0x0        ;0clk
  43. B1_Tah                EQU        1;0x0        ;0clk
  44. B1_Tacp                EQU        0x0
  45. B1_PMC                EQU        0x0        ;normal

  46.                                 ;Bank 2 parameter
  47. B2_Tacs                EQU        1;0x0        ;0clk
  48. B2_Tcos                EQU        1;0x0        ;0clk
  49. B2_Tacc                EQU        6;0x7        ;14clk
  50. B2_Tcoh                EQU        1;0x0        ;0clk
  51. B2_Tah                EQU        1;0x0        ;0clk
  52. B2_Tacp                EQU        0x0
  53. B2_PMC                EQU        0x0        ;normal

  54.                                 ;Bank 3 parameter
  55. B3_Tacs                EQU        0x1;0        ;0clk
  56. B3_Tcos                EQU        0x1;0        ;0clk
  57. B3_Tacc                EQU        0x6;7        ;14clk
  58. B3_Tcoh                EQU        0x1;0        ;0clk
  59. B3_Tah                EQU        0x1;0        ;0clk
  60. B3_Tacp                EQU        0x0
  61. B3_PMC                EQU        0x0        ;normal

  62.                                 ;Bank 4 parameter
  63. B4_Tacs                EQU        0x1;0        ;0clk
  64. B4_Tcos                EQU        0x1;0        ;0clk
  65. B4_Tacc                EQU        0x6;7        ;14clk
  66. B4_Tcoh                EQU        0x1;0        ;0clk
  67. B4_Tah                EQU        0x1;0        ;0clk
  68. B4_Tacp                EQU        0x0
  69. B4_PMC                EQU        0x0        ;normal

  70.                                 ;Bank 5 parameter
  71. B5_Tacs                EQU        0x1;0        ;0clk
  72. B5_Tcos                EQU        0x1;0        ;0clk
  73. B5_Tacc                EQU        0x6;7        ;14clk
  74. B5_Tcoh                EQU        0x1;0        ;0clk
  75. B5_Tah                EQU        0x1;0        ;0clk
  76. B5_Tacp                EQU        0x0
  77. B5_PMC                EQU        0x0        ;normal

  78.                                 ;Bank 6 parameter
  79. B6_MT                EQU        0x3        ;SDRAM
  80. B6_Trcd                EQU        0x1        ;3clk
  81. B6_SCAN                EQU        0x1        ;9bit

  82.                                 ;Bank 7 parameter
  83. B7_MT                EQU        0x3        ;SDRAM
  84. B7_Trcd                EQU        0x1        ;3clk
  85. B7_SCAN                EQU        0x1        ;9bit

  86.                                 ;REFRESH parameter
  87. REFEN                EQU        0x1        ;Refresh enable
  88. TREFMD                EQU        0x0        ;CBR(CAS before RAS)/Auto refresh
  89. Trp                        EQU        0x1        ;3clk
  90. Tsrc                EQU        0x1        ;5clk        Trc= Trp(3)+Tsrc(5) = 8clock
  91. Tchr                EQU        0x2        ;3clk
  92. REFCNT                EQU        1268;1463;1268        ;HCLK=105Mhz, (2048+1-7.81*100);75M->1463


  93.                                                                 ;CPSR中各种工作模式的设置信息
  94. USERMODE    EQU         0x10
  95. FIQMODE     EQU         0x11
  96. IRQMODE     EQU         0x12
  97. SVCMODE     EQU         0x13
  98. ABORTMODE   EQU         0x17
  99. UNDEFMODE   EQU         0x1b
  100. MODEMASK    EQU         0x1f
  101. NOINT       EQU         0xc0

  102.                                                                 ;各种工作模式下堆栈指针初值设置
  103. UserStack        EQU                0x33ff4800
  104. SVCStack        EQU                0x33ff5800
  105. UndefStack        EQU                0x33ff5c00
  106. AbortStack        EQU                0x33ff6000
  107. IRQStack        EQU                0x33ff7000
  108. FIQStack        EQU                0x33ff8000




  109.         AREA    Init,CODE,READONLY
  110.         ENTRY
  111.         EXPORT        __ENTRY
  112. __ENTRY
  113. ResetEntry
  114.        
  115.         b        _reset
  116.         b        .                                ;handler for Undefined mode
  117.         b        .                                ;handler for SWI interrupt
  118.         b        .                                ;handler for PAbort
  119.         b        .                                ;handler for DAbort
  120.         b        .                                ;reserved
  121.         b        IsrIRQ                        ;handler for IRQ interrupt
  122.         b        .                                ;handler for FIQ interrupt

  123.                                                 ;SDRAM参数设置,包括数据宽度,刷新模式和频率
  124. SMRDATA
  125.         DCD (0+(B1_BWSCON<<4)+(B2_BWSCON<<8)+(B3_BWSCON<<12)+(B4_BWSCON<<16)+(B5_BWSCON<<20)+(B6_BWSCON<<24)+(B7_BWSCON<<28))
  126.         DCD ((B0_Tacs<<13)+(B0_Tcos<<11)+(B0_Tacc<<8)+(B0_Tcoh<<6)+(B0_Tah<<4)+(B0_Tacp<<2)+(B0_PMC))                                                                   ;GCS0
  127.         DCD        ((B1_Tacs<<13)+(B1_Tcos<<11)+(B1_Tacc<<8)+(B1_Tcoh<<6)+(B1_Tah<<4)+(B1_Tacp<<2)+(B1_PMC))                                                           ;GCS1
  128.         DCD ((B2_Tacs<<13)+(B2_Tcos<<11)+(B2_Tacc<<8)+(B2_Tcoh<<6)+(B2_Tah<<4)+(B2_Tacp<<2)+(B2_PMC))                                                                  ;GCS2
  129.         DCD ((B3_Tacs<<13)+(B3_Tcos<<11)+(B3_Tacc<<8)+(B3_Tcoh<<6)+(B3_Tah<<4)+(B3_Tacp<<2)+(B3_PMC))                                                           ;GCS3
  130.         DCD ((B4_Tacs<<13)+(B4_Tcos<<11)+(B4_Tacc<<8)+(B4_Tcoh<<6)+(B4_Tah<<4)+(B4_Tacp<<2)+(B4_PMC))                                                           ;GCS4
  131.         DCD ((B5_Tacs<<13)+(B5_Tcos<<11)+(B5_Tacc<<8)+(B5_Tcoh<<6)+(B5_Tah<<4)+(B5_Tacp<<2)+(B5_PMC))                                                                   ;GCS5
  132.         DCD ((B6_MT<<15)+(B6_Trcd<<2)+(B6_SCAN))                                                                                                                                                                        ;GCS6
  133.         DCD ((B7_MT<<15)+(B7_Trcd<<2)+(B7_SCAN))                                                                                                                                                                        ;GCS7
  134.         DCD ((REFEN<<23)+(TREFMD<<22)+(Trp<<20)+(Tsrc<<18)+(Tchr<<16)+REFCNT)

  135.         DCD 0x32                                                                                        ;SCLK power saving mode, BANKSIZE 128M/128M
  136.         DCD 0x30                                                                                        ;MRSR6 CL=3clk
  137.         DCD 0x30                                                                                        ;MRSR7 CL=3clk
  138.   
  139.   
  140.   
  141.   
  142. IsrIRQ
  143.         sub sp,sp,#4
  144.         stmfd  sp!,{r8-r9}
  145.         ldr r9,=pINTOFFSET
  146.         ldr r9,[r9]
  147.         ldr r8,=HandleEINT0
  148.         add r8,r8,r9,lsl #2
  149.         ldr r8,[r8]
  150.         str r8,[sp,#8]
  151.         ldmfd  sp!,{r8-r9,pc}
  152.         LTORG   

  153. _reset   
  154.         ldr        r0,=pWTCON                                ;关闭看门狗定时器
  155.         ldr        r1,=0x0
  156.         str        r1,[r0]

  157.         ldr        r0,=pINTMSK
  158.         ldr        r1,=0xffffffff                        ;屏蔽所有中断请求
  159.         str        r1,[r0]

  160.         ldr        r0,=pINTSUBMSK
  161.         ldr        r1,=0x7fff                                ;关闭所有子中断请求,1为无中断请求,0~14为有效设置位,其余为保留位。
  162.         str        r1,[r0]

  163.                                                                 ;设置PLL锁存时间 To reduce PLL lock time, adjust the LOCKTIME register.
  164.         ldr        r0,=pLOCKTIME
  165.         ldr        r1,=0xffffff
  166.         str        r1,[r0]

  167.         ldr        r0,=pCLKDIVN
  168.         ldr        r1,=vCLKDIVN                        ; 0=1:1:1, 1=1:1:2, 2=1:2:2, 3=1:2:4, 4=1:4:4, 5=1:4:8, 6=1:3:3, 7=1:3:6.
  169.         str        r1,[r0]



  170.                                                                 ;Configure UPLL
  171.         ldr        r0,=pUPLLCON
  172.         ldr        r1,=vUPLLCON                        ;Fin = 12.0MHz, UCLK = 48MHz
  173.         str        r1,[r0]
  174.         nop                                                        ;Caution: After UPLL setting, at least 7-clocks delay must be inserted for setting hardware be completed.
  175.         nop
  176.         nop
  177.         nop
  178.         nop
  179.         nop
  180.         nop
  181.                                                                 ;Configure MPLL
  182.         ldr        r0,=pMPLLCON
  183.         ldr        r1,=vMPLLCON                        ;Fin = 12.0MHz, FCLK = 400MHz
  184.         str        r1,[r0]

  185.                                                             ;设置SDRAM存储器参数
  186.                                                                 ;Set memory control registers
  187.         adrl        r0, SMRDATA                        ;be careful!
  188.         ldr        r1,=pBWSCON                                ;BWSCON Address
  189.         add        r2, r0, #52                                ;End address of SMRDATA

  190. 0
  191.         ldr        r3, [r0], #4
  192.         str        r3, [r1], #4
  193.         cmp        r2, r0
  194.         bne        %B0





  195. InitStacks                                                ;初始化可能用到的工作模式下的堆栈区
  196.         mrs        r0,cpsr
  197.         bic        r0,r0,#MODEMASK|NOINT
  198.        
  199.         orr        r1,r0,#IRQMODE
  200.         msr        cpsr_cxsf,r1                        ;IRQMode
  201.         ldr        sp,=IRQStack                        ; IRQStack=0x33FF_7000

  202.         orr        r1,r0,#FIQMODE
  203.         msr        cpsr_cxsf,r1                        ;FIQMode
  204.         ldr        sp,=FIQStack                        ; FIQStack=0x33FF_8000

  205.         orr r1,r0,#USERMODE
  206.         msr cpsr_cxsf,r1
  207.         ldr sp,=UserStack
  208.         ldr        pc,=Main
  209.         LTORG
  210.        
  211.        
  212. Main
  213.         ldr r0,=pINTMOD
  214.         ldr r1,=0x0
  215.         str r1,[r0]
  216.         ldr r0,=pGPFCON
  217.         ldr r1,=0x080
  218.         str r1,[r0]
  219.         ldr r0,=pGPFUP
  220.         ldr r1,=0xff
  221.         str r1,[r0]
  222.         ldr r0,=HandleEINT0+0x0c
  223.         adrl r1,interrupt
  224.         str r1,[r0]
  225.         ldr r0,=0x20005000
  226.         ldr r1,=0x00
  227.         str r1,[r0]
  228.         ldr r0,=pINTMSK
  229.         ldr r1,=0x0FFFFFFF7
  230.         str r1,[r0]
  231. wait_server
  232.         b .
  233. ;
  234.         mrs r0,cpsr
  235.         bic r0,r0,#MODEMASK|NOINT
  236.         orr r1,r0,#USERMODE
  237.         msr cpsr_cxsf,r1
  238.         b wait_server
  239.         LTORG
  240. interrupt
  241.         ;sub lr,r14,#4
  242.         stmfd sp!,{r8,r9,lr}
  243. LOOP0   
  244.     ldr r0,=0x20005000
  245.         ldr r1,=0x01
  246.         str r1,[r0]
  247.         bl Delay
  248.         ldr r0,=0x20005000
  249.         ldr r1,=0x03
  250.         str r1,[r0]
  251.         bl Delay
  252.         ldr r0,=0x20005000
  253.         ldr r1,=0x07
  254.         str r1,[r0]
  255.         bl Delay
  256.         ldr r0,=0x20005000
  257.         ldr r1,=0x0f
  258.         str r1,[r0]
  259.         bl Delay
  260.         ldr r0,=0x20005000
  261.         ldr r1,=0x00
  262.         str r1,[r0]
  263.         ldr r0,=pSRCPND
  264.         mov r1,#8
  265.         str r1,[r0]
  266.         ldr r0,=pINTPND
  267.         str r1,[r0]
  268.         ldmfd sp!,{r8,r9,pc}
  269.         LTORG
  270.        
  271. Delay
  272.         stmfd  sp!,{r8,r9,lr}
  273.         ldr r7,=0x7a120
  274. LOOP9 sub r7,r7,#1
  275.         cmp r7,#0
  276.         bne LOOP9
  277.         ldmfd  sp!,{r8,r9,pc}
  278.         LTORG
  279.         AREA RamData,DATA,READWRITE
  280.         ^ _ISR_STARTADDRESS
  281. HandleEINT0    # 4
  282. HandleEINT1    # 4
  283. HandleEINT2    # 4
  284. HandleEINT3    # 4
  285.         END

复制代码


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表