# Toolchain configuration CROSS_COMPILE := arm-none-eabi- TARGET ?= application BUILD_DIR ?= build BIN_DIR := $(BUILD_DIR)/bin # SDK stuff SDK_ROOT := lib/amb1_sdk SOC_PATH := $(SDK_ROOT)/soc/realtek/8711b TOOLS_DIR := $(SOC_PATH)/misc/iar_utility/common/tools CC := $(CROSS_COMPILE)gcc AR := $(CROSS_COMPILE)ar AS := $(CROSS_COMPILE)as NM := $(CROSS_COMPILE)nm LD := $(CROSS_COMPILE)gcc OBJCOPY := $(CROSS_COMPILE)objcopy OBJDUMP := $(CROSS_COMPILE)objdump # OTA config OTA_IDX ?= 1 LINKER_SCRIPT := rlx8711B-symbol-v02-img2_xip$(OTA_IDX).ld IMAGE2_OTA := image2_all_ota$(OTA_IDX).bin # Build info BUILD_INFO ?= include/build_info.h # inc and src include $(MKFILES)/includes.mk include $(MKFILES)/sources.mk # compiler flags COMMON_FLAGS := \ -mcpu=cortex-m4 -mthumb -mfloat-abi=hard -mfpu=fpv4-sp-d16 \ -Os -g2 -w CFLAGS := $(COMMON_FLAGS) \ -DM4 -DCONFIG_PLATFORM_8711B \ -ffunction-sections -fdata-sections -fomit-frame-pointer \ -fno-common -fno-short-enums -std=gnu99 -fsigned-char \ -Wno-pointer-sign -Wno-implicit-function-declaration \ -Wno-incompatible-pointer-types -Wno-int-conversion LFLAGS := $(COMMON_FLAGS) \ --specs=nano.specs -nostartfiles \ -Wl,--gc-sections -Wl,--entry=Reset_Handler \ -Wl,--no-enum-size-warning -Wl,--no-wchar-size-warning \ -Wl,--wrap=malloc -Wl,--wrap=free -Wl,--wrap=realloc \ -Wl,--wrap=rom_psk_CalcGTK -Wl,--wrap=rom_psk_CalcPTK \ -Wl,--wrap=CalcMIC -Wl,--wrap=CheckMIC \ -Wl,--wrap=aes_80211_encrypt -Wl,--wrap=aes_80211_decrypt \ -Wl,--wrap=DecGTK # libs LIB_DIR := $(SOC_PATH)/misc/bsp/lib/common/GCC LIBS := $(addprefix -l_,platform wlan eap http wps p2p rtlstd) \ $(addprefix -l,m c nosys gcc) LIBFLAGS := -L$(LIB_DIR) $(LIBS) # obj files - handle both RAM and DRAM OBJS := $(patsubst %.c,$(BUILD_DIR)/%.o,$(SRC_C) $(DRAM_C)) DEPS := $(OBJS:.o=.d) .PHONY: all build_info clean post_process directory_structure all: $(BIN_DIR)/$(TARGET).axf $(BIN_DIR)/$(TARGET).axf: $(OBJS) $(BOOTLOADER) | $(BIN_DIR) $(LD) $(LFLAGS) -o $@ $(OBJS) $(BOOTLOADER) $(LIBFLAGS) -T./$(LINKER_SCRIPT) $(OBJDUMP) -d $@ > $(BIN_DIR)/$(TARGET).asm $(NM) $@ | sort > $(BIN_DIR)/$(TARGET).nmap $(MAKE) -f $(firstword $(MAKEFILE_LIST)) post_process $(BUILD_DIR)/%.o: %.c $(BUILD_INFO) | directory_structure @mkdir -p $(dir $@) $(CC) $(CFLAGS) $(INCLUDES) -MMD -MP -c $< -o $@ $(if $(findstring $(DRAM_C),$<),$(OBJCOPY) --prefix-alloc-sections .sdram $@) # bootloader $(BOOTLOADER): | directory_structure @mkdir -p $(dir $@) cp $(SOC_PATH)/misc/bsp/image/boot_all.bin $(BUILD_DIR)/boot/boot_all.bin chmod 777 $(BUILD_DIR)/boot/boot_all.bin $(OBJCOPY) -I binary -O elf32-littlearm -B arm \ $(BUILD_DIR)/boot/boot_all.bin $@ .PHONY: FORCE # ota magic post_process: $(BIN_DIR)/$(TARGET).axf @echo "=== Processing OTA Image ===" @scripts/process_ota.sh \ --axf $(BIN_DIR)/$(TARGET).axf \ --bin-dir $(BIN_DIR) \ --objcopy $(OBJCOPY) \ --ota-idx $(OTA_IDX) \ --tools-dir $(TOOLS_DIR) directory_structure: @mkdir -p $(BIN_DIR) $(dir $(OBJS)) build_info: @echo "Generating build information..." @scripts/generate_build_info.sh $(CC) "$(CFLAGS)" > $(BUILD_INFO) clean: rm -rf $(BUILD_DIR) -include $(DEPS)