Makefile

Note:

Be aware of the QEMU paths being used.

Adapt them to your paths.

And don't forget to change your SD card device name (e.g. /dev/sdb).

The following copy can be copied:

#####GENERAL#####
CROSS_PREFIX= /usr/local/gcc-arm-none-eabi-5_2-2015q4/bin/arm-none-eabi-
AS = $(CROSS_PREFIX)as
CC = $(CROSS_PREFIX)gcc
LD = $(CROSS_PREFIX)ld
OBJCOPY = $(CROSS_PREFIX)objcopy
OBJDUMP = $(CROSS_PREFIX)objdump
#ASFLAGS = -Wall -march=armv7-a
ASFLAGS = -Wall -mcpu=cortex-a8
################## QEMU ##################
QEMU-PATH = ~/Documents/Trustzone/QEMU/qemu-tz/arm-softmmu
QEMU-MACHINE-ARGS = qemu-system-arm -M realview-pb-a8 -serial stdio -kernel
#QEMU-MACHINE-ARGS_2 = qemu-system-arm -M vexpress-a15 -cpu cortex-a15 -nographic -kernel
QEMU-IMG-PATH = ~/Documents/Trustzone/TrustPi/qemu_com_smc/qemu.img
QEMUFLAG = -DQEMU
QEMU-OBJS = \
qemu-main.o \
qemu_lib.o
################## i.MX53 QSB ##################
#MKIMAGE = /home/zhang/research/imx53/u-boot/tools/mkimage
MKIMAGE = mkimage
#CFLAGS = -Wall -O0 -nostdlib -nostartfiles -ffreestanding -march=armv7-a
CFLAGS = -Wall -O0 -nostdlib -nostartfiles -ffreestanding -mcpu=cortex-a8
IMXFLAG = -DIMX53QSB
LDFLAGS = -L . -lgcc
IMX-OBJS = \
imx-main.o \
mxc_serial.o
################## RULES ##################
all : imx53.img qemu.img
imx53_entry.o : imx53_entry.S
$(AS) imx53_entry.S -o imx53_entry.o
qemu_entry.o : qemu_entry.S
$(AS) $(ASFLAGS) -g qemu_entry.S -o qemu_entry.o
qemu-main.o : main.c
$(CC) $(CFLAGS) $(QEMUFLAG) -c main.c -o qemu-main.o
imx-main.o : main.c
$(CC) $(CFLAGS) $(IMXFLAG) -c main.c -o imx-main.o
#mxc_serial.o : mxc_serial.c
#	$(CC) $(CFLAGS) -c mxc_serial.c -o mxc_serial.o
#qemu_lib.o : qemu_lib.c
#	$(CC) -c qemu_lib.c -o qemu_lib.o
imx53.img : imx53.ld imx53_entry.o $(IMX-OBJS)
$(LD) imx53_entry.o $(IMX-OBJS) -T imx53.ld -o imx53.elf $(LDFLAGS)
$(OBJDUMP) -D imx53.elf > imx53.asm
$(OBJCOPY) imx53.elf -O binary imx53.img
$(MKIMAGE) -n imximage.cfg -T imximage -e 0x97800000 -d imx53.img imx53.imx
#
# $(LD) generates unnecessary files and conflicts with the linking in this case, gcc is successfull and works fine
#
qemu.img : qemu.ld qemu_entry.o $(QEMU-OBJS)
$(CC) qemu_entry.o $(QEMU-OBJS) -T qemu.ld -o qemu.elf -nostartfiles
$(OBJDUMP) -S qemu.elf > qemu.asm
$(OBJDUMP) -t qemu.elf | sed '1,/SYMBOL TABLE/d; s/ .* / /; /^$$/d' > qemu.sym
$(OBJCOPY) qemu.elf -O binary qemu.img
run-qemu:
cd $(QEMU-PATH)
$(QEMU-MACHINE-ARGS) $(QEMU-IMG-PATH)
run-imx :
sudo dd if=imx53.imx of=/dev/sdb bs=512 seek=2
clean :
rm -f *.o *.elf *.sym *.asm *.img *.imx