一段基于at91sam9261的测试NAND FLASH的代码
用于测试最精简的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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论