본문 바로가기

Firmware/RTOS

임베디드 OS 개발 프로젝트 2

드 자동화 하기 위한 Makefile 작성.

 

책에 clean 부분 오타가 있어서 수정함.

 

rm -fr -> rm -rf

 

또한 Ubuntu 18.04 에서는 arm-none-eabi-gdb가 존재하지 않으므로 그자리에 gdb-multiarch로 수정해서 쓰면 된다. 

 

ARCH = armv7-a
MCPU = cortex-a8

CC = arm-none-eabi-gcc
AS = arm-none-eabi-as
LD = arm-none-eabi-ld
OC = arm-none-eabi-objcopy

LINKER_SCRIPT = navilos.ld

ASM_SRCS = $(wildcard boot/*.S)
ASM_OBJS = $(patsubst boot/%.S, build/%.o, $(ASM_SRCS))

navilos = build/navilos.axf
navilos_bin = build/navilos.bin

.PHONY: all clean run debug gdb

all: $(navilos)

clean:
        # 책에는 rm -fr 로 되어있는데 오타인거 같아 rm -rf로 수정함 #
        @rm -rf build


run: $(navilos)
        qemu-system-arm -M realview-pb-a8 -kernel $(navilos)

debug: $(navilos)
        qemu-system-arm -M realview-pb-a8 -kernel $(navilos) -S -gdb tcp::1234,ipv4

gdb:
        gdb-multiarch

$(navilos): $(ASM_OBJS) $(LINKER_SCRIPT)
        $(LD) -n -T $(LINKER_SCRIPT) -o $(navilos) $(ASM_OBJS)
        $(OC) -O binary $(navilos) $(navilos_bin)

build/%.o: boot/%.S
        mkdir -p $(shell dirname $@)    #mkdir -p build 실행 됨 #
        $(AS) -march=$(ARCH) -mcpu=$(MCPU) -g -o $@ $<