免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1864 | 回复: 0
打印 上一主题 下一主题

一段基于at91sam9261的测试NAND FLASH的代码 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-01-27 16:37 |只看该作者 |倒序浏览
用于测试最精简的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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP