一段基于at91sam9261的测试NAND FLASH的代码

发布于 2022-09-18 12:07:59 字数 4477 浏览 11 评论 0

用于测试最精简的NAND FLASH读操作代码,不用考虑链接地址问题,不需要再初始化串口,可打印出测试语句, 并且可以点亮LED灯,代码如下:

//PIOABASE
#define PIOA_BASE        0xfffff400
#define PIO_PER            0x00
#define PIO_PDR            0x04
#define PIO_PSR            0x08
#define PIO_OER           0x10
#define PIO_ODR           0x14
#define PIO_OSR           0x18
#define PIO_SODR         0x30
#define PIO_CODR         0x34
#define PIO_ODSR         0x38
#define PIO_PDSR         0x3c
#define PIO_ASR           0x70
#define PIO_BSR           0x74
#define PIO_ABSR         0x78
#define PIO_OWER        0xa0
#define PIO_OWDR        0xa4
#define PIO_OWSR        0xa8

//DBGUBASE
#define DBGU_BASE     0xfffff200
#define DBGU_CR         0x00
#define DBGU_MR         0x04
#define DBGU_SR         0x14
#define DBGU_RHR       0x18
#define DBGU_THR       0x1c
#define DBGU_BRGR     0x20

        .global start
        .global init

start:
        b init
        .word init
        .word init
        .word init
        .word init
        .word init
        .word init
        .word init

init:
        ldr r0, =PIOA_BASE       

        mov r1, #(3 << 9)
        str r1, [r0, #PIO_PDR]
        str r1, [r0, #PIO_ASR]

        ldr r1, =(1 << 14 | 1 << 23)
        str r1, [r0, #PIO_PER]
        str r1, [r0, #PIO_OER]
        str r1, [r0, #PIO_CODR]

        @init UART_DEBUG
        ldr r0, =DBGU_BASE

        @set control_register
        mov r1, #0x50
        str r1, [r0, #DBGU_CR]

        @set data format _8n1_
        mov r1, #(4 << 9)
        str r1, [r0, #DBGU_MR]

        @set baud_rate
        mov r1, #51
        str r1, [r0, #DBGU_BRGR]

        @send data
        mov r1, pc
        b 0f
        .asciz "Hello, World!\r\n"
0:
        ldr r2, [r0, #DBGU_SR]
        tst r2, #2
        beq 0b

        ldrb r2, [r1], #1
        cmp r2, #0
        beq end

        strb r2, [r0, #DBGU_THR]
        b 0b

end:
        ldr r0, =0x2000000
0:
        subs r0, r0, #1
        bne 0b

        ldr r0, =PIOA_BASE
        ldr r1, =(1 << 14 | 1 << 23)
        str r1, [r0, #PIO_SODR]

        sub pc, pc, #8

[ 本帖最后由 paocaka 于 2010-1-27 16:41 编辑 ]

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文