汇编通用makefile:
命令行编辑:
编译
arm-linux-as -march=armv5te -o led.o led.s
-march 指定的指令集的版本 指定架构
连接
arm-linux-ld -nostartfiles -nostdlib -Ttext=0x20008000 -o led led.o
转换led成二进制文件
arm-linux-objcopy -O binary led led.bin
PROG=led
OBJS=led.o AS=arm-linux-as
LD=arm-linux-ld
OBJCOPY=arm-linux-objcopy
AFLAGS=-march=armv5te
LDFLAGS=-nostartfiles -nostdlib -Ttext=0x20008000 -e led //0x20008000 是内存地址 $(PROG): $(OBJS)
$(LD) $(LDFLAGS) -o $(PROG) $(OBJS)
$(OBJCOPY) -O binary $(PROG) $(PROG).bin %.o:%.s
$(AS) $(AFLAGS) -o $@ $< //$@ 表示所有目标文件 $< 表示所有依赖文件 clean:
@rm -vf $(OBJS) $(PROG) $(PROG).bin
C 通用makefile:
arm-linux-gcc -march=armv5te -nostdlib -c -o led_c.o led_c.c
arm-linux-ld -nostartfiles -nostdlib -Ttext=0x20008000 -e led_main -o led_c led_c.o
arm-linux-objcopy -O binary led_c led_c.bin
PROG=led_c
OBJS=led_c.o AS=arm-linux-as
CC=arm-linux-gcc
LD=arm-linux-ld
OBJCOPY=arm-linux-objcopy
AFLAGS=-march=armv5te
CFLAGS=-march=armv5te -nostdlib
LDFLAGS=-nostartfiles -nostdlib -Ttext=0x20008000 -e led_main $(PROG): $(OBJS)
$(LD) $(LDFLAGS) -o $(PROG) $(OBJS)
$(OBJCOPY) -O binary $(PROG) $(PROG).bin %.o:%.s
$(AS) $(AFLAGS) -o $@ $< %.o:%.c
$(CC) $(CFLAGS) -c -o $@ $<
clean:
@rm -vf $(OBJS) $(PROG) $(PROG).bin
使用C分别控制 key1按下点亮led1 key2按下点亮led2
#define GPC0CON (*(volatile unsigned long*)0xE0200060) //led
#define GPC0DAT (*(volatile unsigned long*)0xE0200064) #define GPH0CON (*(volatile unsigned long*)0xE0200C00) //key
#define GPH0DAT (*(volatile unsigned long*)0xE0200C04) #define GPC03OUT (1<<(3*4)) //GPC0 3 led1 15-12位 0001为输出引脚
#define GPC04OUT (1<<(4*4)) //GPC0 4 led2 19-16位 #define GPH00IN ~(0xF<<(4*0)) //GPH0 0 key1 3-0位 0000为输入引脚
#define GPH01IN ~(0xF<<(4*1)) //GPH0 1 key2 7-4位
int main(void){
//设置led1 2 GPC0CON 为输出引脚
GPC0CON = GPC03OUT | GPC04OUT;
//设置按键1 2 GPH0CON 为输出引脚
GPH0CON = GPH00IN & GPH01IN; while(){
if(GPH0DAT & 0x1){
GPC0DAT = 0x00;
}
else{
GPC0DAT = 0x08;
}
if(GPH0DAT & 0x02){
GPC0DAT = 0x00;
}
else{
GPC0DAT = 0x10;
}
}
}
补充:
简易C语言makefile
C = gcc CFLAGS = -c -Wall
OBJS=test.o hello.o hello:$(OBJS)
$(CC) $(OBJS) -o $@
rm -rf *.o %.o:%.c
$(CC) -c $(CFLAGS) $< clean:
rm -rf hello *.o
-
$<
—— 用来构建目标所使用的源文件
-
$@
—— 目标的完整名