|
我对启动代码中2440init.s 中关联的2440addr.h 和2440addr.inc 有点弄糊涂了,这两个文件有什么区别呢?主要是2440addr.inc 不太理解。
我在本论坛看到有一个关于流水灯的简单代码,其中 main函数为:
#include <stdio.h>
#define GPBCON (*(volatile unsigned *)0x56000
#define GPBDAT (*(volatile unsigned *)0x56000014)
010)
void delay()
{
int i=90000;
for(i;i>=0;i--);
}
int main()
{
GPBCON=0x155500;
while(1)
{
GPBDAT=0x1c0;
delay();
GPBDAT=0x1a0;
delay();
GPBDAT=0x160;
delay();
GPBDAT=0xe0;
delay();
}
}
2440init.s文件内容为:
WTCON EQU 0x53000000
GPBCON EQU 0x56000010
GPBDAT EQU 0x56000014
IMPORT main
CODE32
AREA Init,CODE,READONLY
;ENTRY
ldr r0,=WTCON
ldr r1,=0x00
str r1,[r0]
b main
这主要问题是我在TQ2440开发板看到的2440addr.inc 与2440addr.h所定义的符号是不同的,
如 在2440addr.inc 中:BWSCON EQU 0x48000000
而在2440addr.h 为:#define rBWSCON (*(volatile unsigned *)0x48000000)
而上面的流水灯的宏定义的符号都相同的,即#define GPBCON (*(volatile unsigned *)0x56000中的“GPBCON” 与 GPBCON EQU 0x56000010中的“GPBCON”,
下载到板能看到流水灯,这是巧合吧,还是真的没问题? |
|