2013年(16)
分类: 嵌入式
2013-07-22 13:42:00
实训准备:
搭建好交叉编译环境。(本实验以点亮一个LED灯为例)
实训步骤:
1、在/opt/EmbedSky/目录下新建一目录(luoban)用来存放裸板程序。
2、使用命令 cd /opt/EmbedSky/luoban 进入该目录下。
3、使用命令 vi crt0.s 新建.S文件
输入:
.text
.global _start
_start:
ldr r0,=0x56000010 @禁止看门狗
mov r1,#0x0
str r1,[r0]
ldr sp,=1024*4 @设置堆栈,最大为4KB
bl main @跳到主函数
halt_loop: @死循环
b halt_loop
输入完成后按ESC键退出编辑,再按SHIFT加:看到文本下方出现:时,输入wq!保存并退出
4、使用命令 vi led_on_c.c 新建.C文件
输入:
#define GPBCON (*(volatile unsigned long *)0x56000010)
#define GPBDAT (*(volatile unsigned long *)0x56000014)
int main()
{
GPBCON = 0x00000400;
GPBDAT = 0x00000000;
return 0;
}
输入完成和上步一样。
5、使用命令 vi Makefile 新建Makefile文件。
输入:
led_on_c.bin: crt0.S led_on_c.c @ led_on_c.bin要生成的文件,crt0.S led_on_c.c要使用的文件
arm-linux-gcc -g -nostdlib -c -o crt0.o crt0.S @具体查阅手册
arm-linux-gcc -g -nostdlib -c -o led_on_c.o led_on_c.c
arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_elf
arm-linux-objcopy -O binary -S led_on_c_elf led_on_c.bin
arm-linux-objdump -D -m arm led_on_c_elf > led_on_c.dis
clean:
rm -f led_on_c.dis led_on_c.bin led_on_c_elf *.o
输入完成和上步一样。
6、使用命令 make 生成BIN文件。