SDRAM initialization and testing

发布于 2022-09-18 03:45:01 字数 2482 浏览 14 评论 0

Here's an example for SDRAM initialization and testing

  1.     mov  r0, #PBASE_SDRAM
  2.     ldr  r1, =PBASE_SDRAMC
  3.     @ 1
  4.     ldr  r2, =0x85227279
  5.     str  r2, [r1, #SDRAMC_CR]
  6.     @ 3
  7.     mov  r2, #0
  8.     str  r2, [r1, #SDRAMC_MDR]  
  9.     @ 4
  10.     mov  r2, #0x4f00
  11. 0:
  12.     subs r2, r2, #1
  13.     bne  0b
  14.     @ 5
  15.     mov  r2, #2
  16.     str  r2, [r1, #SDRAMC_MR]
  17.     str  r2, [r0]
  18.     @ 6
  19.     mov  r2, #4
  20.     str  r2, [r1, #SDRAMC_MR]
  21. 0:
  22.     str  r2, [r0]
  23.     add  r2, r2, #1
  24.     cmp  r2, #12
  25.     bls  0b
  26.     @ 7
  27.     mov  r2, #3
  28.     str  r2, [r1, #SDRAMC_MR]
  29.     str  r2, [r0]
  30.     @ 9
  31.     mov  r2, #0
  32.     str  r2, [r1, #SDRAMC_MR]
  33.     str  r2, [r0]
  34.     @ 10
  35.     ldr  r2, =1562
  36.     str  r2, [r1, #SDRAMC_TR]

复制代码and SDRAM testing

  1.     ldr  r1, [r0]
  2.     mvn  r2, r1
  3.     mov  r1, r2
  4.     str  r2, [r0]
  5.     ldr  r2, [r0]
  6.     cmp  r1, r2
  7.     bne  Hang
  8.     @ fully functional now :)
  9.     mov  r0, #0
  10.     mov  r1, #(1 << 14)
  11.     bl   LedOn
  12. Hang:
  13.     b    Hang

复制代码

TODO:
1. Tune CR & TR parameter
2. Design SDRAM benchmark program

[ 本帖最后由 conke 于 2009-9-27 01:11 编辑 ]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

仄言 2022-09-25 03:45:01

以下是我初始化内存的代码,但是测试好像读写不了内存
*************************************
@InitMem:
        ldr r0, =AT91SAM926X_PA_MATRIX
        ldr r1, =((1 << 16) | 2)
        str r1, [r0, #MATRIX_EBI0CSA]

        ldr r0, =AT91SAM926X_PA_PIOD
        ldr r1, =0xffff0000
        str r1, [r0, #PIO_ASR]

        ldr r0, =AT91SAM926X_PA_SDRAMC
        ldr r1, =0x85227279
        str r1, [r0, #SDRAMC_CR]

        mov r1, #0
        str r1, [r0, #SDRAMC_MDR]

@delay 200 * 1000 ns = 40000 pck
        mov r2, #0x4f00
loop5:
        sub r2, r2, #1
        cmp r2, #1
        bne loop5

        mov r1, #1
        str r1, [r0, #SDRAMC_MR]
        ldr r3, =SDRAM_BASE
        str r1, [r3]

        mov r1, #2
        str r1, [r0, #SDRAMC_MR]
        str r1, [r3]
       
        mov r2, #8
loop6:
        mov r1, #4
        str r1, [r0, #SDRAMC_MR]
        str r1, [r3]
        sub r2, r2, #1
        bge loop6

        mov r1, #3
        str r1, [r0, #SDRAMC_MR]
        str r1, [r3]

        mov r1, #0
        str r1, [r0, #SDRAMC_MR]
        str r1, [r3]
       
        ldr r1, =1562
        str r1, [r0, #SDRAMC_TR]

@test the mem
        mov r1, #3
        str r1, [r3]
        ldr r2, [r3]
        cmp r2, r1
        bne hang

OnLed:
        ldr r0, =AT91SAM926X_PA_PIOC
        @ ds1 & pc29
        mov r1, #0x20000000
        str r1, [r0,#PIO_PER]
        str r1, [r0,#PIO_OER]
        str r1, [r0,#PIO_CODR]

hang:
        b        hang

む无字情书 2022-09-25 03:45:01

问题已经解决,PIOD的16到31端口做为内存的数据输出端口,已经设置为A模式,但是没有设置相关端口的PIO_PDR寄存器,导致了错误,现在已经修改,接下来我会规范一下代码。

[ 本帖最后由 voidjackjiang 于 2009-9-27 15:41 编辑 ]

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文