fl2440 的菜鸟学习之路1

来源:互联网 发布:java 声明base64 编辑:程序博客网 时间:2024/05/29 13:49
@c语言引导程序
.text
.global _start
_start:
LDR R0,=0x53000000  @关闭看门狗,《嵌入式linux应用开发完全手册》 83页貌似有个错误,关看门狗的寄存器写成0x56000010了,跟                                @GPBCON寄存器弄混了,但是视频讲解没有讲错
MOV R1,# 0
STR R1,[R0]   
LDR SP,=1024*4@设置栈,利用soc内4kSRAM内存

bl main
MAIN_LOOP:

B MAIN_LOOP

led.c 文件

#define GPBCON (*(volatile unsigned long *) 0x56000010)
#define GPBDAT (*(volatile unsigned long *) 0x56000014)


int main(void)
{     unsigned int i;
GPBCON=0x111400;
GPBDAT=0xfff;
while(1){
for( i=65535;i>0;i--);
GPBDAT=0x3f1;
        for(i=65535;i>0;i--);
GPBDAT=0x6f0;
for(i=65535;i>0;i--);
GPBDAT=0xfb0;
for( i=65535;i>0;i--);
GPBDAT=0xfd0; 

}
return 0;
}

makefile:


ledon.bin : led.o
arm-linux-gcc -g -c -o led.o led.c
arm-linux-gcc -g -c -o crt0.o crt0.s
arm-linux-ld -Ttext 0x0 -g crt0.o led.o -o led-elf
arm-linux-objcopy -O binary -S led-elf  ledon.bin
arm-linux-objdump -D -m arm led-elf > ledon.dis

ledon.bin  就是所得的流水等文件,我的是nor flash ,安装的是bootloader 5.1在nor flash上,开机启动默认nor,烧写hex文件很麻烦,试过往第三分区Myapp烧写过,但是就一个灯亮,百思不得其解(估计是boot已经初始化内存,导致栈错误)。这里给初学者一点建议,修改下fl2440核心板子上的J 5条线,用杜邦线引出来,连接的话就是从nand flash启动(只需要在bootloader;里把文件烧写到nand flash的boot(第一分区)里,然后连接杜邦线,开机就能看到流水灯了),我是菜鸟,非科班出身,fl2440也是买的二手,竟然屏幕是坏的。。。。)

就当是自己笔记,

0 0
原创粉丝点击