diff options
Diffstat (limited to 'Makefile')
| -rw-r--r-- | Makefile | 634 |
1 files changed, 634 insertions, 0 deletions
diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..0889af0 --- /dev/null +++ b/Makefile @@ -0,0 +1,634 @@ +include makefile.inc + +TOOLS_ROOT = ${DIST_ROOT}tools/generate/ +SRC_ROOT = ${DIST_ROOT}sdk + +OUTPUT=${DIST_ROOT}build +BUILD_DIR = ${OUTPUT}/images/$(APP_NAME)/$(APP_VERSION) + +OBJ_DIR=${OUTPUT} +BIN_DIR=${OUTPUT} + +ARM_GCC_TOOLCHAIN = ${DIST_ROOT}toolchain/gcc-arm-none-eabi-4_9-2015q1/bin +CROSS_COMPILE = $(ARM_GCC_TOOLCHAIN)/arm-none-eabi- + +ENCRYPT_KEY = 510fb093 a3cbeadc 5993a17e c7adeb03 10000 +APP_NAME = ble_tst +APP_VERSION = $(shell cat VERSION) +BIN_NAME = ${APP_NAME}_${APP_VERSION} + +# Compilation tools +AR = $(CROSS_COMPILE)ar +CC = $(CROSS_COMPILE)gcc +AS = $(CROSS_COMPILE)as +NM = $(CROSS_COMPILE)nm +LD = $(CROSS_COMPILE)gcc +OBJCOPY = $(CROSS_COMPILE)objcopy +OBJDUMP = $(CROSS_COMPILE)objdump + +CLEAN_OTHER = + +# sugar + +GREEN := \033[0;32m +RED := \033[0;31m +NC := \033[0m # No Color +ifeq ($(findstring bash, $(shell readlink $(SHELL))), bash) +ECHO = echo -e +else +ECHO = echo +endif + +VIEW_COMMAND = evince doc/notes.pdf & +# verbose setting (so what, -v for make was not enough?) + +Q := @ +ifeq ($(V),1) +Q := +endif +OS := $(shell uname) + +WPA_VERSION := hostapd-2.5 +ifeq ($(CFG_USE_WPA_29),1) +WPA_VERSION := wpa_supplicant-2.9 +endif + +# include directories + +INC_DIRS = + +INC_DIRS += common +INC_DIRS += app +INC_DIRS += app/config +INC_DIRS += app/standalone-station +INC_DIRS += app/standalone-ap +INC_DIRS += ip/common +INC_DIRS += ip/ke/ + +#ifeq ($(FAKE),33) + +INC_DIRS += ip/mac/ +INC_DIRS += ip/lmac/src/hal +INC_DIRS += ip/lmac/src/mm +INC_DIRS += ip/lmac/src/ps +INC_DIRS += ip/lmac/src/rd +INC_DIRS += ip/lmac/src/rwnx +INC_DIRS += ip/lmac/src/rx +INC_DIRS += ip/lmac/src/scan +INC_DIRS += ip/lmac/src/sta +INC_DIRS += ip/lmac/src/tx +INC_DIRS += ip/lmac/src/vif +INC_DIRS += ip/lmac/src/rx/rxl +INC_DIRS += ip/lmac/src/tx/txl +INC_DIRS += ip/lmac/src/p2p +INC_DIRS += ip/lmac/src/chan +INC_DIRS += ip/lmac/src/td +INC_DIRS += ip/lmac/src/tpc +INC_DIRS += ip/lmac/src/tdls +INC_DIRS += ip/umac/src/mesh +INC_DIRS += ip/umac/src/mfp +INC_DIRS += ip/umac/src/rc +INC_DIRS += ip/umac/src/apm +INC_DIRS += ip/umac/src/bam +INC_DIRS += ip/umac/src/llc +INC_DIRS += ip/umac/src/me +INC_DIRS += ip/umac/src/rxu +INC_DIRS += ip/umac/src/scanu +INC_DIRS += ip/umac/src/sm +INC_DIRS += ip/umac/src/txu + +#endif + +INC_DIRS += driver/include +INC_DIRS += driver/common/reg +INC_DIRS += driver/entry +INC_DIRS += driver/dma +INC_DIRS += driver/intc +INC_DIRS += driver/phy +INC_DIRS += driver/rc_beken +INC_DIRS += driver/flash +INC_DIRS += driver/rw_pub +INC_DIRS += driver/common/reg +INC_DIRS += driver/common +INC_DIRS += driver/uart +INC_DIRS += driver/sys_ctrl +INC_DIRS += driver/gpio +INC_DIRS += driver/general_dma +INC_DIRS += driver/spidma +INC_DIRS += driver/icu +INC_DIRS += driver/ble +INC_DIRS += driver/ble/ble_pub/ip/ble/hl/inc +INC_DIRS += driver/ble/ble_pub/ip/ble/profiles/sdp/api +INC_DIRS += driver/ble/ble_pub/ip/ble/profiles/comm/api +INC_DIRS += driver/ble/ble_pub/modules/rwip/api +INC_DIRS += driver/ble/ble_pub/modules/app/api +INC_DIRS += driver/ble/ble_pub/modules/common/api +INC_DIRS += driver/ble/ble_pub/modules/dbg/api +INC_DIRS += driver/ble/ble_pub/modules/rwip/api +INC_DIRS += driver/ble/ble_pub/modules/rf/api +INC_DIRS += driver/ble/ble_pub/modules/ecc_p256/api +INC_DIRS += driver/ble/ble_pub/plf/refip/src/arch +INC_DIRS += driver/ble/ble_pub/plf/refip/src/arch/boot +INC_DIRS += driver/ble/ble_pub/plf/refip/src/arch/compiler +INC_DIRS += driver/ble/ble_pub/plf/refip/src/arch/ll +INC_DIRS += driver/ble/ble_pub/plf/refip/src/arch +INC_DIRS += driver/ble/ble_pub/plf/refip/src/build/ble_full/reg/fw +INC_DIRS += driver/ble/ble_pub/plf/refip/src/driver/reg +INC_DIRS += driver/ble/ble_pub/plf/refip/src/driver/ble_icu +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/inc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/api +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gap/gapc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gap/gapm +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gap/smpc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gap/smpm +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gap +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt/attc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt/attm +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt/atts +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt/gattc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/gatt/gattm +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/l2c/l2cc +INC_DIRS += driver/ble/ble_lib/ip/ble/hl/src/l2c/l2cm +INC_DIRS += driver/ble/ble_lib/ip/ble/ll/src/rwble +INC_DIRS += driver/ble/ble_lib/ip/ble/ll/src/lld +INC_DIRS += driver/ble/ble_lib/ip/ble/ll/src/em +INC_DIRS += driver/ble/ble_lib/ip/ble/ll/src/llm +INC_DIRS += driver/ble/ble_lib/ip/ble/ll/src/llc +INC_DIRS += driver/ble/ble_lib/ip/em/api +INC_DIRS += driver/ble/ble_lib/ip/ea/api +INC_DIRS += driver/ble/ble_lib/ip/hci/api +INC_DIRS += driver/ble/ble_lib/ip/hci/src +INC_DIRS += driver/ble/ble_lib/ip/ahi/api +INC_DIRS += driver/ble/ble_lib/modules/ke/api +INC_DIRS += driver/ble/ble_lib/modules/ke/src +INC_DIRS += driver/ble/ble_lib/modules/h4tl/api +INC_DIRS += func/include +INC_DIRS += func/rf_test +INC_DIRS += func/user_driver +INC_DIRS += func/power_save +INC_DIRS += func/uart_debug + +# these should be eventually removed +#ifeq ($(FAKE),33) + +INC_DIRS += func/ethernet_intf +INC_DIRS += func/$(WPA_VERSION)/hostapd +INC_DIRS += func/$(WPA_VERSION)/bk_patch +INC_DIRS += func/$(WPA_VERSION)/src/utils +INC_DIRS += func/$(WPA_VERSION)/src/ap +INC_DIRS += func/$(WPA_VERSION)/src/common +INC_DIRS += func/$(WPA_VERSION)/src/drivers +INC_DIRS += func/$(WPA_VERSION)/src +INC_DIRS += func/$(WPA_VERSION)/wpa_supplicant +INC_DIRS += func/$(WPA_VERSION)/bk_patch +INC_DIRS += func/lwip_intf/lwip-2.0.2 +INC_DIRS += func/lwip_intf/lwip-2.0.2/src +INC_DIRS += func/lwip_intf/lwip-2.0.2/port +INC_DIRS += func/lwip_intf/lwip-2.0.2/src/include +INC_DIRS += func/lwip_intf/lwip-2.0.2/src/include/netif +INC_DIRS += func/lwip_intf/lwip-2.0.2/src/include/lwip + +#endif + +INC_DIRS += func/temp_detect +INC_DIRS += func/spidma_intf +INC_DIRS += func/rwnx_intf +INC_DIRS += func/joint_up +INC_DIRS += func/bk_tuya_pwm +INC_DIRS += os/include +INC_DIRS += os/FreeRTOSv9.0.0/FreeRTOS/Source/portable/Keil/ARM968es +INC_DIRS += os/FreeRTOSv9.0.0/FreeRTOS/Source/include +INC_DIRS += os/FreeRTOSv9.0.0 + +ifeq ($(CFG_WRAP_LIBC),1) +INC_DIRS += func/libc +endif + +# For WPA3 +ifeq ($(CFG_WPA3),1) +INC_DIRS += func/wolfssl +endif + +INCLUDES = $(foreach inc_dir, ${INC_DIRS}, $(addprefix -I${SRC_ROOT}/, ${inc_dir})) +INCLUDES += $(foreach base_dir, $(shell find ${DIST_ROOT}/usr/$(APP_NAME)/include -type d), $(addprefix -I , $(base_dir))) + +# source directories + +SRC_C = +SRC_OS = + +#driver layer +SRC_C += driver/common/dd.c +SRC_C += driver/common/drv_model.c +SRC_C += driver/dma/dma.c +SRC_C += driver/driver.c +SRC_C += driver/fft/fft.c +SRC_C += driver/flash/flash.c +SRC_C += driver/general_dma/general_dma.c +SRC_C += driver/gpio/gpio.c +SRC_C += driver/i2s/i2s.c +SRC_C += driver/icu/icu.c +SRC_C += driver/intc/intc.c +SRC_C += driver/irda/irda.c +SRC_C += driver/phy/phy_trident.c +SRC_C += driver/pwm/pwm.c +SRC_C += driver/pwm/mcu_ps_timer.c +SRC_C += driver/pwm/bk_timer.c +SRC_C += driver/rw_pub/rw_platf_pub.c +SRC_C += driver/saradc/saradc.c +SRC_C += driver/spi/spi.c +SRC_C += driver/spidma/spidma.c +SRC_C += driver/sys_ctrl/sys_ctrl.c +SRC_C += driver/uart/Retarget.c +SRC_C += driver/uart/uart_bk.c +SRC_C += driver/uart/printf.c +SRC_C += driver/wdt/wdt.c + +SRC_C += driver/ble/ble.c +SRC_C += driver/ble/ble_pub/ip/ble/hl/src/prf/prf.c +SRC_C += driver/ble/ble_pub/ip/ble/profiles/sdp/src/sdp_service.c +SRC_C += driver/ble/ble_pub/ip/ble/profiles/sdp/src/sdp_service_task.c +SRC_C += driver/ble/ble_pub/ip/ble/profiles/comm/src/comm.c +SRC_C += driver/ble/ble_pub/ip/ble/profiles/comm/src/comm_task.c +SRC_C += driver/ble/ble_pub/modules/app/src/app_ble.c +SRC_C += driver/ble/ble_pub/modules/app/src/app_task.c +SRC_C += driver/ble/ble_pub/modules/app/src/app_sdp.c +SRC_C += driver/ble/ble_pub/modules/app/src/app_sec.c +SRC_C += driver/ble/ble_pub/modules/app/src/app_comm.c +SRC_C += driver/ble/ble_pub/modules/common/src/common_list.c +SRC_C += driver/ble/ble_pub/modules/common/src/common_utils.c +SRC_C += driver/ble/ble_pub/modules/common/src/RomCallFlash.c +SRC_C += driver/ble/ble_pub/modules/dbg/src/dbg.c +SRC_C += driver/ble/ble_pub/modules/dbg/src/dbg_mwsgen.c +SRC_C += driver/ble/ble_pub/modules/dbg/src/dbg_swdiag.c +SRC_C += driver/ble/ble_pub/modules/dbg/src/dbg_task.c +SRC_C += driver/ble/ble_pub/modules/rwip/src/rwip.c +SRC_C += driver/ble/ble_pub/modules/rf/src/ble_rf_xvr.c +SRC_C += driver/ble/ble_pub/modules/ecc_p256/src/ecc_p256.c +SRC_C += driver/ble/ble_pub/plf/refip/src/driver/uart/uart.c + +#function layer +SRC_C += func/func.c +SRC_C += func/bk7011_cal/bk7231U_cal.c +SRC_C += func/bk7011_cal/manual_cal_bk7231U.c + +ifeq ($(CFG_WRAP_LIBC),1) +SRC_C += func/libc/stdio/lib_libvscanf.c +SRC_C += func/libc/stdio/lib_memsistream.c +SRC_C += func/libc/stdio/lib_meminstream.c +SRC_C += func/libc/stdio/lib_sscanf.c +SRC_C += func/libc/stdio/lib_vsscanf.c +SRC_C += func/libc/stdlib/lib_strtod.c +SRC_C += func/libc/stdlib/lib_qsort.c +endif + +SRC_C += func/misc/fake_clock.c +SRC_C += func/misc/target_util.c +SRC_C += func/misc/start_type.c +SRC_C += func/power_save/power_save.c +SRC_C += func/power_save/manual_ps.c +SRC_C += func/power_save/mcu_ps.c +SRC_C += func/rf_test/rx_sensitivity.c +SRC_C += func/rf_test/tx_evm.c + +SRC_C += func/sim_uart/gpio_uart.c +SRC_C += func/sim_uart/pwm_uart.c +SRC_C += func/spidma_intf/spidma_intf.c +SRC_C += func/temp_detect/temp_detect.c +SRC_C += func/uart_debug/cmd_evm.c +SRC_C += func/uart_debug/cmd_help.c +SRC_C += func/uart_debug/cmd_reg.c +SRC_C += func/uart_debug/cmd_rx_sensitivity.c +SRC_C += func/uart_debug/command_line.c +SRC_C += func/uart_debug/command_table.c +SRC_C += func/uart_debug/udebug.c +SRC_C += func/user_driver/BkDriverFlash.c +SRC_C += func/user_driver/BkDriverRng.c +SRC_C += func/user_driver/BkDriverGpio.c +SRC_C += func/user_driver/BkDriverPwm.c +SRC_C += func/user_driver/BkDriverUart.c +SRC_C += func/user_driver/BkDriverWdg.c +SRC_C += func/user_driver/BkDriverTimer.c + +# operation system module +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/croutine.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/event_groups.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/list.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/portable/Keil/ARM968es/port.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/portable/MemMang/heap_4.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/queue.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/tasks.c +SRC_OS += os/FreeRTOSv9.0.0/FreeRTOS/Source/timers.c +SRC_OS += os/FreeRTOSv9.0.0/rtos_pub.c +SRC_C += os/mem_arch.c +SRC_C += os/platform_stub.c +SRC_C += os/str_arch.c + +# application layer +SRC_C += app/ate_app.c +SRC_C += app/config/param_config.c + +# main program sources +SRC_DIRS += $(shell find ${DIST_ROOT}usr/$(APP_NAME)/src -type d) +SRC_C_MAIN_ORIG = $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.c)) +SRC_C_MAIN = $(patsubst ${DIST_ROOT}usr/$(APP_NAME)/%,usr/$(APP_NAME)/%,${SRC_C_MAIN_ORIG}) +SRC_C += ${SRC_C_MAIN} + +# assembly files, the OS +SRC_S = +SRC_S += driver/entry/boot_handlers.S +SRC_S += driver/entry/boot_vectors.S + +# assembly files, the main program +SRC_S_MAIN_ORIG = $(foreach dir, $(SRC_DIRS), $(wildcard $(dir)/*.S)) +SRC_S_MAIN = $(patsubst ${DIST_ROOT}usr/$(APP_NAME)/%,usr/$(APP_NAME)/%,${SRC_S_MAIN_ORIG}) +SRC_S += ${SRC_S_MAIN} + +# object files: one per each source file +OBJ_LIST = $(patsubst %.c,$(OBJ_DIR)/%.o,${SRC_C}) +DEPENDENCY_LIST = $(patsubst %.o,%.d,$(OBJ_LIST)) + +OBJ_S_LIST = $(SRC_S:%.S=$(OBJ_DIR)/%.O) +DEPENDENCY_S_LIST = $(SRC_S:%.S=$(OBJ_DIR)/%.d) + +OBJ_OS_LIST = $(SRC_OS:%.c=$(OBJ_DIR)/%.marm.o) +DEPENDENCY_OS_LIST = $(SRC_OS:%.c=$(OBJ_DIR)/%.d) + +# compiler flags +CFLAGS = +CFLAGS += -g -mthumb -mcpu=arm968e-s -march=armv5te -mthumb-interwork -mlittle-endian -Os -std=c99 -ffunction-sections -Wall -fsigned-char -fdata-sections -Wunknown-pragmas -nostdlib -Wno-unused-function -Wno-unused-but-set-variable + +OSFLAGS = +OSFLAGS += -g -marm -mcpu=arm968e-s -march=armv5te -mthumb-interwork -mlittle-endian -Os -std=c99 -ffunction-sections -Wall -fsigned-char -fdata-sections -Wunknown-pragmas + +# assembler flags +ASMFLAGS = +ASMFLAGS += -g -marm -mthumb-interwork -mcpu=arm968e-s -march=armv5te -x assembler-with-cpp + +LFLAGS = +LFLAGS += -g -Wl,--gc-sections -marm -mcpu=arm968e-s -mthumb-interwork -nostdlib -Xlinker -Map=${OUTPUT}/${APP_NAME}.map +LFLAGS += -Wl,-wrap,malloc -Wl,-wrap,_malloc_r -Wl,-wrap,free -Wl,-wrap,_free_r -Wl,-wrap,zalloc -Wl,-wrap,calloc -Wl,-wrap,realloc -Wl,-wrap,_realloc_r +LFLAGS += -Wl,-wrap,printf -Wl,-wrap,vsnprintf -Wl,-wrap,snprintf -Wl,-wrap,sprintf -Wl,-wrap,puts + +# stdlib wrapper +ifeq ($(CFG_WRAP_LIBC),1) +LFLAGS += -Wl,-wrap,strtod -Wl,-wrap,qsort +LFLAGS += -Wl,-wrap,sscanf +endif + +# WPA3 flags +ifeq ($(CFG_WPA3),1) +WOLFSSL_CFLAGS += -DWOLFSSL_BEKEN +CFLAGS += ${WOLFSSL_CFLAGS} +endif + +CFLAGS += -DUSER_SW_VER=\"$(USER_SW_VER)\" -DAPP_NAME=\"$(APP_NAME)\" + +# modified libraries +RWNX_CUT = ${DIST_ROOT}libs/rwnx/librwnx_cut.a +LIBBLE_MOD = ${DIST_ROOT}libs/ble/libble_mod.a + +LIBFLAGS = +LIBFLAGS += -L ${DIST_ROOT}libs/rwnx -lrwnx_cut +#LIBFLAGS += -L ${DIST_ROOT}libs/ble -Xlinker --whole-archive -lble_mod -Xlinker --no-whole-archive +LIBFLAGS += -L ${DIST_ROOT}libs/ble -lble_mod + +# a full list of modules in the librwnx library +RWNX_LIBS_FULL = apm.o apm_task.o bam.o bam_task.o chan.o \ + hal_desc.o hal_dma.o hal_machw.o hal_mib.o \ + co_dlist.o co_list.o co_math.o co_pool.o co_ring.o \ + ke_env.o ke_event.o ke_msg.o ke_queue.o ke_task.o ke_timer.o \ + mac_ie.o mac.o me_mgmtframe.o me_mic.o me.o me_task.o me_utils.o \ + mm_bcn.o mm.o mm_task.o mm_timer.o p2p.o ps.o rc_basic.o rc.o rd.o \ + rwnx.o rxl_cntrl.o rxl_hwdesc.o rx_swdesc.o rxu_cntrl.o \ + sta_mgmt.o tdls.o tdls_task.o td.o tpc.o \ + txl_buffer.o txl_buffer_shared.o txl_cfm.o txl_cntrl.o txl_frame.o txl_frame_shared.o txl_hwdesc.o \ + tx_swdesc.o txu_cntrl.o vif_mgmt.o \ + scan.o scan_shared.o scan_task.o scanu.o scanu_shared.o scanu_task.o sm.o sm_task.o \ + mfp_bip.o mfp.o + +# the subset of the above we actually use (modulo a few stubs) +RWNX_LIBS = co_dlist.o co_list.o co_math.o co_pool.o co_ring.o \ + ke_env.o ke_event.o ke_msg.o ke_queue.o ke_task.o ke_timer.o \ + ps.o + +# this is redundant for now since there are no immediate plans to change the libraries +RWNX_LIBS_EXT = $(patsubst %,${DIST_ROOT}libs/rwnx/%,$(RWNX_LIBS)) + +BLE_LIBS_EXT = $(wildcard ${DIST_ROOT}libs/ble/*.o) +BLE_LIBS = $(patsubst ${DIST_ROOT}libs/ble/%.o,%.o,${BLE_LIBS_EXT}) + +all: downloadable images + +-include makefile.loc + +${RWNX_LIBS_EXT}: + if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + @cd ${DIST_ROOT}libs/rwnx/ && cp ../../sdk/lib/librwnx.a . && \ + ${AR} -x librwnx.a + +${RWNX_CUT}: ${RWNX_LIBS_EXT} + @echo "building the reduced rwnx library ..." + @cd ${DIST_ROOT}libs/rwnx/ && \ + ${AR} -rcs librwnx_cut.a ${RWNX_LIBS} + +${LIBBLE_MOD}: weaken_symbols + @echo "building the modified ble library ..." + @cd ${DIST_ROOT}libs/ble/ && \ + ${AR} -rcs libble_mod.a ${BLE_LIBS} + +weaken_symbols: ${DIST_ROOT}sdk/lib/libble.a + if [ ! -d $(dir ${LIBBLE_MOD}) ]; then mkdir -p $(dir ${LIBBLE_MOD}); fi + @cd ${DIST_ROOT}libs/ble/ && \ + rm -f *.o *.O && cp ../../sdk/lib/libble.a . && ${AR} -x libble.a && \ + ${OBJCOPY} \ + --weaken-symbol=rwble_hl_init \ + --weaken-symbol=rwble_hl_reset \ + rwble_hl.o + @cd ${DIST_ROOT}/libs/ble/ && \ + ${OBJCOPY} \ + --weaken-symbol=rwble_reset \ + rwble.o && \ + ${OBJCOPY} \ + --weaken-symbol=lld_init \ + --weaken-symbol=lld_adv_start \ + --weaken-symbol=lld_con_start \ + --globalize-symbol=lld_abort_scan_evt \ + --globalize-symbol=TASK_DESC_LLD \ + lld.o + + +.PHONY: images + +$(BUILD_DIR)/${BIN_NAME}.axf: $(OBJ_LIST) $(OBJ_S_LIST) $(OBJ_OS_LIST) ${RWNX_CUT} ${LIBBLE_MOD} + @echo 'Building the main application' + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + @$(ECHO) " $(GREEN)LD ${BIN_NAME}.axf$(NC)" + $(Q)$(LD) $(LFLAGS) -o $@ $(OBJ_LIST) $(OBJ_S_LIST) $(OBJ_OS_LIST) $(LIBFLAGS) \ + -T${SRC_ROOT}/build/bk7231_ota.ld + @cd ${DIST_ROOT}/libs/rwnx/ && rm -f librwnx_cut.a + @cd ${DIST_ROOT}/libs/ble/ && rm -f libble_mod.a + +images $(BUILD_DIR)/${BIN_NAME}.bin: $(BUILD_DIR)/${BIN_NAME}.axf + @echo "Generating binaries, name maps, asm, etc." + @$(ECHO) " $(GREEN)NM > ${BIN_NAME}.map$(NC)" + @$(NM) $(BUILD_DIR)/${BIN_NAME}.axf | sort > $(BUILD_DIR)/${BIN_NAME}.map + @$(ECHO) " $(GREEN)OBJDUMP > ${BIN_NAME}.asm$(NC)" + @$(OBJDUMP) -d $(BUILD_DIR)/${BIN_NAME}.axf > $(BUILD_DIR)/${BIN_NAME}.asm + +${TOOLS_ROOT}/${BIN_NAME}.bin: $(BUILD_DIR)/${BIN_NAME}.axf + @$(ECHO) " $(GREEN)OBJCOPY > ${BIN_NAME}.bin$(NC)" + @$(OBJCOPY) -O binary $(BUILD_DIR)/${BIN_NAME}.axf $(BUILD_DIR)/${BIN_NAME}.bin + @mv $(BUILD_DIR)/${BIN_NAME}.bin ${TOOLS_ROOT} + +downloadable: ${TOOLS_ROOT}/${BIN_NAME}.bin ${BUILD_DIR}${APP_NAME}_UA_${APP_VERSION}.bin \ + ${BUILD_DIR}${APP_NAME}_UG_${APP_VERSION}.bin + @if [ $(shell ls -l ${BUILD_DIR}/${APP_NAME}_UG_${APP_VERSION}.bin|awk '{print $$5}') -gt 679936 ]; \ + then \ + ${ECHO} "generated image $(RED)(${APP_NAME}_UG_${APP_VERSION}.bin) is too large$(NC), cleaning up..." ;\ + else \ + ${ECHO} "successfully generated $(GREEN)${APP_NAME}_UG_${APP_VERSION}.bin$(NC), size: \ +$(shell ls -lh ${BUILD_DIR}/${APP_NAME}_UG_${APP_VERSION}.bin|awk '{print $$5}')" ;\ + fi; + @rm -f ${TOOLS_ROOT}/${APP_NAME}_* + @rm -f ${TOOLS_ROOT}/all_* + +${BUILD_DIR}${APP_NAME}_UA_${APP_VERSION}.bin: ${TOOLS_ROOT}/${BIN_NAME}.bin + @echo "create a downloadable image ..." + @cd ${TOOLS_ROOT} && \ + echo "apply otafix..." &&\ + ./otafix ${BIN_NAME}.bin &&\ + echo "encrypt..." &&\ + ./encrypt ${BIN_NAME}.bin ${ENCRYPT_KEY} &&\ + echo "package..." &&\ + python mpytools.py ${BIN_NAME}_enc.bin &&\ + ./beken_packager config.json &&\ + mv ${BIN_NAME}_enc_uart_1.00.bin ${BUILD_DIR}/${APP_NAME}_UA_${APP_VERSION}.bin + +${BUILD_DIR}${APP_NAME}_UG_${APP_VERSION}.bin: ${TOOLS_ROOT}/${BIN_NAME}.bin + @cd ${TOOLS_ROOT} && \ + echo "generate ota file" &&\ + ./rt_ota_packaging_tool_cli -f ${BIN_NAME}.bin -v "$$"CURRENT_TIME -o ${BIN_NAME}.rbl \ + -p app -c gzip -s aes -k 0123456789ABCDEF0123456789ABCDEF -i 0123456789ABCDEF &&\ + ./package.bin ${BIN_NAME}.rbl ${APP_NAME}_UG_${APP_VERSION}.bin $APP_VERSION &&\ + mv ${APP_NAME}_UG_${APP_VERSION}.bin ${BUILD_DIR} + +.config: ${SRC_ROOT}/app/config/sys_config.h + @echo 'generating .config from $<' + @-rm -f $@ + @echo '#include "$<"' > config.c + @sed -n '/^#define/p' $< | awk '{print $$2}' | sort -d | uniq | awk '{print "valueOf_"$$1"="$$1}' >> config.c + @echo "# Autogenerated by Makefile, DON'T EDIT" > .config + @$(ARM_GCC_TOOLCHAIN)/arm-none-eabi-gcc -E config.c | grep '^valueOf_' | sed 's/valueOf_//' >> .config + @sed -i '/_SYS_CONFIG_H_/d' .config + @-rm -f config.c + +echo_path: +# @echo ${MAKE_ROOT} +# @echo ${OBJ_LIST} +# @echo ${OBJ_DIR} +# @echo ${SRC_ROOT} +# @echo ${INCLUDES} +# @echo ${OBJ_S_LIST} +# @echo ${OBJ_OS_LIST} +# @echo ${BLE_LIBS_EXT} + +# implicit rules; first remove the default ones + +%.o:%.c + +%.O:%.S + +constant_list: ${DIST_ROOT}usr/$(APP_NAME)/src/diagnostic1.c +# just to see what the compiler came up with + @$(CC) $(CFLAGS) $(INCLUDES) -DGENERATE_CT_CONSTS -S $< -o \ + ${OBJ_DIR}/usr/$(APP_NAME)/src/diagnostic1.S 1>/dev/null 2>/dev/null + +${OBJ_DIR}/usr/$(APP_NAME)/src/%.o: ${DIST_ROOT}usr/$(APP_NAME)/src/%.c + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + $(Q)$(ECHO) " $(GREEN)CC $< --> $@$(NC)" +# just to see what the compiler came up with + @-$(CC) $(CFLAGS) $(INCLUDES) -DGENERATE_CT_CONSTS -S $< -o ${OBJ_DIR}/usr/$(APP_NAME)/src/$*.S 2>/dev/null + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -E $< -o ${OBJ_DIR}/usr/$(APP_NAME)/src/$*.i + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $< -MM -MT $@ -MF $(patsubst %.o,%.d,$@) + +${OBJ_DIR}/usr/$(APP_NAME)/src/%.O: ${DIST_ROOT}usr/$(APP_NAME)/src/%.S + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + $(Q)$(ECHO) " $(GREEN)AS $<$(NC)" + $(Q)$(CC) $(ASMFLAGS) $(INCLUDES) -c $< -o $@ + $(Q)$(CC) $(ASMFLAGS) $(INCLUDES) -c $< -MM -MT $@ -MF $(patsubst %.O,%.d,$@) + +${OBJ_DIR}/%.o: ${SRC_ROOT}/%.c + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + $(Q)$(ECHO) " $(GREEN)CC $< --> $@$(NC)" + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $< -o $@ + $(Q)$(CC) $(CFLAGS) $(INCLUDES) -c $< -MM -MT $@ -MF $(patsubst %.o,%.d,$@) + +${OBJ_DIR}/%.O: ${SRC_ROOT}/%.S + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + $(Q)$(ECHO) " $(GREEN)AS $<$(NC)" + $(Q)$(CC) $(ASMFLAGS) $(INCLUDES) -c $< -o $@ + $(Q)$(CC) $(ASMFLAGS) $(INCLUDES) -c $< -MM -MT $@ -MF $(patsubst %.O,%.d,$@) + +${OBJ_DIR}/%.marm.o: ${SRC_ROOT}/%.c + $(Q)if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + $(Q)$(ECHO) " $(GREEN)CC $<$(NC)" + $(Q)$(CC) $(OSFLAGS) $(INCLUDES) -c $< -o $@ + $(Q)$(CC) $(OSFLAGS) $(INCLUDES) -c $< -MM -MT $@ -MF $(patsubst %.marm.o,%.d,$@) + +ORIG_SDK_DIR = beken +ORIG_SDK_URL = https://airtake-public-data-1254153901.cos.ap-shanghai.myqcloud.com/smart/embed/pruduct/bk7231t_1.1.2.zip + +${ORIG_SDK_DIR}/bk7231t_1.1.2.zip: + @if [ ! -d $(dir $@) ]; then mkdir -p $(dir $@); fi + @echo "Downloading $(notdir $@), size = \ +$(shell curl -sI '${ORIG_SDK_URL}' | awk '/Content-Length/ { print $$2 }') bytes; this may take some time ..." + @cd ${ORIG_SDK_DIR} && wget -q --show-progress ${ORIG_SDK_URL} + +RAW_SDK = sdk toolchain tools +RAW_SDK_EXT = $(foreach d, ${RAW_SDK}, $(addprefix ${ORIG_SDK_DIR}/, ${d})) + +${RAW_SDK_EXT}: ${ORIG_SDK_DIR}/bk7231t_1.1.2.zip + cd ${ORIG_SDK_DIR} && unzip $(notdir $<) && mv bk7231t_1.1.2_temp/toolchain/ . && \ + mv bk7231t_1.1.2_temp/bk7231t_os/beken378 sdk && mv bk7231t_1.1.2_temp/bk7231t_os/tools/ . && \ + cd toolchain && tar xvf gcc-arm-none-eabi-4_9-2015q1.tar && cd ../ && rm -rf bk7231t_1.1.2_temp/ + +diffs: ${RAW_SDK_EXT} + -cd ${ORIG_SDK_DIR} && diff -ruN sdk/ ../sdk > sdk.patch + -cd ${ORIG_SDK_DIR} && mkdir patches + -cd ${ORIG_SDK_DIR} && diff -rq sdk/ ../sdk | awk '{printf("%s %s ",$$2,$$4);sub(".*/","",$$2);print $$2}' \ + | xargs -n 3 bash -c 'diff -u $$0 $$1 > patches/$$2.patch' + +PATCH_LIST = app_ble.c.patch bk7231_ota.ld.patch ble.c.patch rwapp_config.h.patch sys_config.h.patch +PATCH_LIST_EXT = $(foreach patch_file, ${PATCH_LIST}, $(addprefix patch/, ${patch_file})) + +sdk_install: ${PATCH_LIST_EXT} ${RAW_SDK_EXT} + @cd ${ORIG_SDK_DIR} && \ + for patch in ${PATCH_LIST_EXT}; do \ + patch -ruN -p1 -d sdk < ../$${patch}; \ + done; + @mv ${ORIG_SDK_DIR}/sdk . + @mv ${ORIG_SDK_DIR}/toolchain . + @mv ${ORIG_SDK_DIR}/tools . + +.PHONY: clean + +view: + ${VIEW_COMMAND} + +clean: + @-rm -rf ${DIST_ROOT}libs + ${CLEAN_OTHER} + +mostlyclean: clean + @-rm -f ${DIST_ROOT}.config + @-rm -rf ${BUILD_DIR} + +distclean: mostlyclean + @-rm -f bk_ble.tar.bz2 + @-rm -f bk_ble.tar.zip + @-rm -f ${DIST_ROOT}.config + @-rm -rf ${OUTPUT} + @-rm -rf sdk toolchain tools |
