友善之臂MINI2440板子,写了如下代码,下载到NAND中正常闪烁运行,下载到RAM中常亮,而且是两个LED一起亮,延时加了1000倍也是这样。还有写的用按键控制LED亮灭也是一样的结果,NAND中正常,RAM中按键没用,LED常亮。
#define rGPBCON (*(volatile unsigned long*)0x56000010)
#define rGPBDAT (*(volatile unsigned long*)0x56000014)
#define Led1_On ~(1<<5)
#define Led1_Off (1<<5)
#define Led2_On ~(1<<6)
void Led_Port_Init(void);
void delay(int t);
int main(void)
{
Led_Port_Init();
while(1)
{
rGPBDAT &= Led1_On ; //Led1亮
delay(10000);
rGPBDAT &= Led2_On ;
rGPBDAT |= Led1_Off; //Led1灭
delay(10000);
}
}
void Led_Port_Init(void)
{
//设置GPB5为输出端口
rGPBCON &= ~(3<<(5*2));
rGPBCON |= (1<<(5*2));
rGPBCON &= ~(3<<(6*2));
rGPBCON |= (1<<(6*2));
}
void delay(int t)
{
int a,b;
for(a=0;a<=t;a++)
for(b=0;b<=100;b++);}
MAKEFILE文件:
key_led.bin : crt0.S key_led.c
arm-linux-gcc -g -c -o crt0.o crt0.S
arm-linux-gcc -g -c -o key_led.o key_led.c
arm-linux-ld -Ttext 0x30000000 -g crt0.o key_led.o -o key_led_elf
arm-linux-objcopy -O binary -S key_led_elf key_led.bin
arm-linux-objdump -D -m arm key_led_elf > key_led.dis
clean:
rm -f key_led.dis key_led.bin key_led_elf *.o