-
一共有三个文件:head.S led_on_c.c Makefile
- head.S的内容如下:
-
1 /* 2 ** 时间 :2016年4月8日16:56:35 3 ** 地点 :宿舍。 4 ** 功能 :初始化一些硬件相关的东西,调用C函数。 5 ** 6 ** 附加信息: 7 ** 1、运行环境:JZ2440v2开发板。 8 ** 2、程序编译环境:Ubuntu9.10 + 交叉编译工具arm-linux-gcc。 9 ** 3、所用到的寄存器有:GPFCON、GPFDAT、WTCON。10 ** 4、led1所接到的引脚是GPF4引脚。11 */12 13 .equ WTCON, 0x53000000 @宏定义WTCON为0x5300000014 15 .text16 17 .global _start18 19 _start :20 /* 关看门狗,防止cpu不断自启。 */21 ldr r0, = WTCON22 mov r1, #023 str r1, [r0]24 25 /* 调用C函数前要先设置栈。 */26 ldr sp, = 409627 28 /* 调用C函数。 */29 bl main30 31 halt_loop :32 b halt_loop
- led_on_c.c内容如下:
-
1 /* 2 ** 时间 :2016年4月8日17:05:23 3 ** 地点 :宿舍。 4 ** 功能 :点亮第一盏LED:led1。 5 */ 6 7 #define GPFCON *((volatile unsigned long *)0x56000050) 8 #define GPFDAT *((volatile unsigned long *)0x56000054) 9 10 int main(void)11 {12 /* 配置GPF4引脚为输出引脚。 */13 GPFCON = 0x00000100;14 15 /* 让GPF4引脚输出低电平,点亮led1。 */16 GPFDAT = 0x00000000;17 18 while (1);19 20 return 0;21 }
- Makefile文件的内容如下:
-
#
# 时间 :2016年4月8日17:11:09#led_on_c.bin : head.S led_on_c.c
arm-linux-gcc -Wall -g -c head.S -o head.o arm-linux-gcc -Wall -g -c led_on_c.c -o led_on_c.o arm-linux-ld -Ttext 0x00000000 -g head.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_elf.dis arm-linux-objdump -D -b binary -m arm led_on_c.bin > led_on_c_bin.disclean :
rm -f *.o *.dis *.bin *elf