diff --git a/platform/drivers/psram/wm_psram.c b/platform/drivers/psram/wm_psram.c index 7f9baab840ffb7f59d3433ce3172033305c50f1b..35c0e6dc91b3bfca028b8a13ea7f1fee51072491 100644 --- a/platform/drivers/psram/wm_psram.c +++ b/platform/drivers/psram/wm_psram.c @@ -1,5 +1,6 @@ #include +#include #include "wm_regs.h" #include "wm_psram.h" #include "wm_dma.h" diff --git a/tools/w800/conf.mk b/tools/w800/conf.mk index 56993c41d9576d0725f9b6a5f5e55b6bc97011f3..38255e6db576f43553a7974218047bb72a15618a 100644 --- a/tools/w800/conf.mk +++ b/tools/w800/conf.mk @@ -60,13 +60,32 @@ USE_NIMBLE = 0 optimization += -DNIMBLE_FTR=0 endif +use_csky_toolchain = y +ifeq ($(use_csky_toolchain),y) + # C-SKY toolchain + cputype = ck804ef + extra_lib = + extra_flag = + ld_map_opt = -ckmap +else + # generic toolchain (binutils-2.34 + gcc-9.4.0 + newlib-4.1.0) + cputype = ck803efr1 + extra_lib = -lc -lnosys + extra_flag = -mistack + ld_map_opt = -Map +endif + # YES; NO VERBOSE ?= NO -UNAME_O:=$(shell uname -o) -UNAME_S:=$(shell uname -s) +UNAME:=$(shell uname) +ifneq (,$(findstring MINGW,$(UNAME))) + UNAME=Msys +else ifneq (,$(findstring MSYS_NT,$(UNAME))) + UNAME=Msys +endif -$(shell gcc $(SDK_TOOLS)/wm_getver.c -Wall -O2 -o $(VER_TOOL)) +$(shell cc $(SDK_TOOLS)/wm_getver.c -Wall -O2 -o $(VER_TOOL)) TOOL_CHAIN_PREFIX = $(CONFIG_W800_TOOLCHAIN_PREFIX) TOOL_CHAIN_PATH = $(subst ",,$(CONFIG_W800_TOOLCHAIN_PATH)) @@ -98,24 +117,25 @@ LIB_EXT = .a CCFLAGS := -Wall \ -DTLS_CONFIG_CPU_XT804=1 \ -DGCC_COMPILE=1 \ - -mcpu=ck804ef \ + -mcpu=$(cputype) \ $(optimization) \ -std=gnu99 \ -c \ -mhard-float \ - -Wall \ + $(extra_flag) \ -fdata-sections \ -ffunction-sections ASMFLAGS := -Wall \ -DTLS_CONFIG_CPU_XT804=1 \ -DGCC_COMPILE=1 \ - -mcpu=ck804ef \ + -mcpu=$(cputype) \ $(optimization) \ -std=gnu99 \ -c \ -mhard-float \ -Wa,--gdwarf2 \ + $(extra_flag) \ -fdata-sections \ -ffunction-sections @@ -123,13 +143,14 @@ ARFLAGS := ru ARFLAGS_2 = xo -LINKFLAGS := -mcpu=ck804ef \ +LINKFLAGS := -mcpu=$(cputype) \ -nostartfiles \ -mhard-float \ - -lm \ + $(extra_flag) \ + -lm $(extra_lib) \ -Wl,-T$(LD_FILE) -MAP := -Wl,-ckmap=$(IMAGEODIR)/$(TARGET).map +MAP := -Wl,$(ld_map_opt)=$(IMAGEODIR)/$(TARGET).map ifneq ($(PRIKEY_SEL),0) $(IMG_TYPE) = $(IMG_TYPE) + 32 * $(PRIKEY_SEL) @@ -148,4 +169,4 @@ ifeq ($(SIGN_PUBKEY_SRC),1) $(IMG_TYPE) = $(IMG_TYPE) + 512 endif -sinclude $(TOP_DIR)/tools/w800/inc.mk \ No newline at end of file +sinclude $(TOP_DIR)/tools/w800/inc.mk diff --git a/tools/w800/config/Makefile b/tools/w800/config/Makefile index b547cd8e37a50b6fe82ef573f45233ee8a94a828..79d8b6d7f0d1b9ff72389e37818dc68d27c01e7a 100644 --- a/tools/w800/config/Makefile +++ b/tools/w800/config/Makefile @@ -1,14 +1,19 @@ MENUBUILD := ../../../bin/build/config MENUCFLAGS := -I/usr/include/ncurses -DCURSES_LOC="" -DLOCALE -Wall -Wmissing-prototypes -Wstrict-prototypes -O2 -fomit-frame-pointer - -ifeq ($(shell uname -s),Linux) MENULDFLAGS := -lncurses + +UNAME:=$(shell uname) +ifeq ($(UNAME),Linux) + # do nothing +else ifeq ($(UNAME),OpenBSD) + MENUCFLAGS += -I/usr/local/include + MENULDFLAGS += -L/usr/local/lib -lintl else -MENULDFLAGS := -lncurses -lintl + MENULDFLAGS += -lintl endif -HOSTCC := gcc +HOSTCC := cc CONFBASE := $(MENUBUILD)/lxdialog/menubox.o \ $(MENUBUILD)/lxdialog/yesno.o \ @@ -31,4 +36,4 @@ mconf: $(CONFBASE) \ clean : @find $(MENUBUILD) -name "*.o" -exec rm "{}" \; -# @rm -rf $(MENUBUILD) \ No newline at end of file +# @rm -rf $(MENUBUILD) diff --git a/tools/w800/mconfig.sh b/tools/w800/mconfig.sh index b5df76e4849c8fb92966a93c823ed67dde75024a..76a443c1c3a435d536c4ff77e1bcc752a24a39f3 100755 --- a/tools/w800/mconfig.sh +++ b/tools/w800/mconfig.sh @@ -1,6 +1,11 @@ #!/bin/sh +MAKE=$1 +if [ -z ${MAKE} ]; then + MAKE=make +fi + cd tools/w800/config -make mconf +${MAKE} mconf cd .. -../../bin/build/config/mconf wconfig \ No newline at end of file +../../bin/build/config/mconf wconfig diff --git a/tools/w800/rules.mk b/tools/w800/rules.mk index 059cf1b0dd32cc5167be7ef33798f26782cbb0fb..74654b96192aba9778e13314aef31ec622167797 100644 --- a/tools/w800/rules.mk +++ b/tools/w800/rules.mk @@ -60,15 +60,17 @@ $(BINODIR)/%.bin: $(IMAGEODIR)/%.elf @mkdir -p $(FIRMWAREDIR)/$(TARGET) $(OBJCOPY) -O binary $(IMAGEODIR)/$(TARGET).elf $(FIRMWAREDIR)/$(TARGET)/$(TARGET).bin -ifeq ($(UNAME_S),Linux) +ifeq ($(UNAME),Linux) @gcc $(SDK_TOOLS)/wm_tool.c -lpthread -o $(WM_TOOL) -else -ifeq ($(UNAME_O),Darwin) +else ifeq ($(UNAME),OpenBSD) + @cc $(SDK_TOOLS)/wm_tool.c -lpthread -o $(WM_TOOL) +else ifeq ($(UNAME),Darwin) + @gcc $(SDK_TOOLS)/wm_tool.c -lpthread -o $(WM_TOOL) +else ifeq ($(UNAME),Msys) @gcc $(SDK_TOOLS)/wm_tool.c -lpthread -o $(WM_TOOL) else # windows, cygwin-gcc exist bug for uart rts/cts endif -endif ifeq ($(CODE_ENCRYPT),1) @openssl enc -aes-128-ecb -in $(FIRMWAREDIR)/$(TARGET)/$(TARGET).bin -out $(FIRMWAREDIR)/$(TARGET)/$(TARGET)_enc.bin -K 30313233343536373839616263646566 -iv 01010101010101010101010101010101 @@ -132,7 +134,7 @@ lib: .subdirs $(OBJS) $(OLIBS) @echo "libs has been updated." menuconfig: - @$(SDK_TOOLS)/mconfig.sh + @$(SDK_TOOLS)/mconfig.sh $(MAKE) clean: # $(foreach d, $(SUBDIRS), $(MAKE) -C $(d) clean;) diff --git a/tools/w800/wm_tool.c b/tools/w800/wm_tool.c index c76e4c137d6be39c1f650e102e59374b8a0bf88c..df8837185db07b0d411372e56624c228d17d189e 100644 --- a/tools/w800/wm_tool.c +++ b/tools/w800/wm_tool.c @@ -2956,6 +2956,8 @@ static void wm_tool_print_usage(const char *name) " e.g: tty.usbserial0 tty.usbserial3 tty.usbserial7\r\n" #elif defined(__MINGW32__) || defined(__CYGWIN__) " e.g: COM0 COM3 COM7\r\n" +#elif defined(__OpenBSD__) + " e.g: ttyU0 ttyU1 ttyU3\r\n" #elif defined(__linux__) " e.g: ttyUSB0 ttyUSB3 ttyUSB7\r\n" #endif @@ -4823,11 +4825,13 @@ static void wm_tool_show_local_com(void) #elif defined(__CYGWIN__) int num; char *comstr = "ttyS"; +#elif defined(__OpenBSD__) + char *comstr = "ttyU"; #elif defined(__linux__) char *comstr = "ttyUSB"; #endif -#if defined(__APPLE__) || defined(__MACH__) || defined(__CYGWIN__) || defined(__linux__) +#if defined(__APPLE__) || defined(__MACH__) || defined(__CYGWIN__) || defined(__linux__) || defined(__OpenBSD__) DIR *dir; struct dirent *file;