- 一共有三个文件: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为0x53000000 14 15 .text 16 17 .global _start 18 19 _start : 20 /* 关看门狗,防止cpu不断自启。 */ 21 ldr r0, = WTCON 22 mov r1, #0 23 str r1, [r0] 24 25 /* 调用C函数前要先设置栈。 */ 26 ldr sp, = 4096 27 28 /* 调用C函数。 */ 29 bl main 30 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
时间: 2024-10-20 03:58:04