编辑: 黎文定 | 2019-07-15 |
3 条指令. crt0.s 代码:
1 .text
2 .global _start
3 _start:
4 ldr sp, =1024*4 @设置堆栈,注意:不能大于 4k @nand flash 中的代码在复位后会 @移到内部 ram 中,它只有 4k
5 bl main @调用 C 程序中的 main 函数
6 halt_loop:
7 b halt_loop 现在,我们可以很容易写出控制 LED 的程序了,led_on_c.c 代码如下:
1 #define GPBCON (*(volatile unsigned long *)0x56000010)
2 #define GPBDAT (*(volatile unsigned long *)0x56000014)
3 int main()
4 {
5 GPBCON = 0x00004000;
//设置 GPB7 为输出口
6 GPBDAT = 0x00000000;
//令GPB7 输出
0 7 return 0;
8 } 最后,我们来看看 Makefile:
1 led_on_c : crt0.s led_on_c.c
2 arm-linux-gcc -g -c -o crt0.o crt0.s
3 arm-linux-gcc -g -c -o led_on_c.o led_on_c.c
4 arm-linux-ld -Ttext 0x0000000 -g crt0.o led_on_c.o -o led_on_c_tmp.o
5 arm-linux-objcopy -O binary -S led_on_c_tmp.o led_on_c
6 clean:
7 rm -f led_on_c
8 rm -f led_on_c.o
9 rm -f led_on_c_tmp.o
10 rm -f crt0.o 第
2、3 行分别对源程序 crt0.s、led_on_c.c 进行预编译,第4行将预编译 得到的结果连接起来, 第5行把连接得到的 ELF 格式可执行文件 led_on_c_tmp.o 转换成二进制格式文件 led_on_c. 好了,可以开始上机实验了: 实验步骤: a.进入 LED_ON_C 目录后,执行如下命令生成可执行文件 led_on_c: make b.执行如下命令将 led_on_c 写入 nand flash: i. Jflash-s3c2410 led_on_c /t=5 ii.当出现如下提示时,输入
0 并回车:........