diff --git a/.gitignore b/.gitignore index d283c2c..de851a0 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ # Buid files build/ *.tar.gz +cx9261a_riscv_bin.c # System generated files # -- macOS diff --git a/Makefile b/Makefile index 1d7fa5e..66d699b 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,7 @@ CFLAGS_DEBUG := $(CFLAGS) $(DEBUG_FLAGS) CFLAGS_RELEASE := $(CFLAGS) $(RELEASE_FLAGS) # Collect source files +BIN_SRC := $(CURDIR)/cx9261a_riscv_bin.c SRCS := $(CURDIR)/cx9261adriver_c.cpp $(CURDIR)/cx9261A_api/cx9261adriver.cpp TEST_SRC := ld_test.c PACKAGE_HEADERS := ./cx9261adriver_c.h @@ -33,6 +34,9 @@ PACKAGE_HEADERS := ./cx9261adriver_c.h # Default target all: $(foreach arch, $(ARCHS), $(BUILD_DIR)/$(arch)/lib$(PROJECT_NAME)_dbg.a $(BUILD_DIR)/$(arch)/lib$(PROJECT_NAME).a) +$(BIN_SRC): $(CURDIR)/cx9261A_api/MultiPointsCalib_v1.7.bin + $(CURDIR)/tools/gen_riscvbin.py $< -o $(CURDIR) + # Rule to create debug libraries for different architectures $(BUILD_DIR)/%/lib$(PROJECT_NAME)_dbg.a: $(SRCS) @mkdir -p $(BUILD_DIR)/$*/debug @@ -48,21 +52,22 @@ $(BUILD_DIR)/%/lib$(PROJECT_NAME).a: $(SRCS) # Clean up clean: rm -rf $(BUILD_DIR) *.tar.gz + rm -rf $(CURDIR)/cx9261a_riscv_bin.c # Run link tests test: all $(foreach arch, $(ARCHS), $(BUILD_DIR)/$(arch)/ld_test $(BUILD_DIR)/$(arch)/ld_test_dbg) @echo "Link test success!" # Debug link tests -$(BUILD_DIR)/%/ld_test_dbg: $(SRCS) $(TEST_SRC) - @$(CC) $(CFLAGS_DEBUG) -mcpu=$* ld_test.c -o $@ -L$(BUILD_DIR)/$* -l$(PROJECT_NAME)_dbg -lstdc++ -lm -specs=nosys.specs +$(BUILD_DIR)/%/ld_test_dbg: $(SRCS) $(TEST_SRC) $(BIN_SRC) + @$(CC) $(CFLAGS_DEBUG) -mcpu=$* ld_test.c $(BIN_SRC) -o $@ -L$(BUILD_DIR)/$* -l$(PROJECT_NAME)_dbg -lstdc++ -lm -specs=nosys.specs # Release link tests -$(BUILD_DIR)/%/ld_test: $(SRCS) $(TEST_SRC) - @$(CC) $(CFLAGS_RELEASE) -mcpu=$* ld_test.c -o $@ -L$(BUILD_DIR)/$* -l$(PROJECT_NAME) -lstdc++ -lm -specs=nosys.specs +$(BUILD_DIR)/%/ld_test: $(SRCS) $(TEST_SRC) $(BIN_SRC) + @$(CC) $(CFLAGS_RELEASE) -mcpu=$* ld_test.c $(BIN_SRC) -o $@ -L$(BUILD_DIR)/$* -l$(PROJECT_NAME) -lstdc++ -lm -specs=nosys.specs # Package for release - bundle debug and release versions for each architecture separately -package: all +package: all $(BIN_SRC) @echo "Packaging for release..." @$(foreach arch, $(ARCHS), \ mkdir -p release_$(arch)/lib; \ @@ -72,6 +77,7 @@ package: all cp $(BUILD_DIR)/$(arch)/lib$(PROJECT_NAME).a release_$(arch)/lib/; \ cp $(PACKAGE_HEADERS) release_$(arch)/include/; \ cp $(SRCS) release_$(arch)/dbg/cx9261a_c/; \ + cp $(CURDIR)/cx9261a_riscv_bin.c release_$(arch)/; \ tar -czvf release_$(arch).tar.gz -C release_$(arch) .; \ rm -rf release_$(arch); \ ) diff --git a/cx9261A_api/MultiPointsCalib_v1.7.bin b/cx9261A_api/MultiPointsCalib_v1.7.bin new file mode 100755 index 0000000..1e24cea Binary files /dev/null and b/cx9261A_api/MultiPointsCalib_v1.7.bin differ diff --git a/cx9261A_api/cx9261adriver.cpp b/cx9261A_api/cx9261adriver.cpp index 2b2ee83..bbf1cbb 100644 --- a/cx9261A_api/cx9261adriver.cpp +++ b/cx9261A_api/cx9261adriver.cpp @@ -5,6 +5,17 @@ #include "cx9261adriver.h" #include "utils.h" +#ifdef __cplusplus +extern "C" { +#endif + +__attribute__((weak)) uint32_t CX9261A_RiscvBinLen = 0; +__attribute__((weak)) uint8_t *CX9261A_RiscvBin = nullptr; + +#ifdef __cplusplus +} +#endif + namespace CX9261A { void initialChip() @@ -672,6 +683,9 @@ void configRISCV(const bool on) if (on) { writeSpi(0x071, 0x00); writeSpi(0x071, 0x29); + for (size_t i = 0; i < CX9261A_RiscvBinLen; i++) { + writeSpi(0x070, CX9261A_RiscvBin[i]); + } writeSpi(0x236, 0x0F); writeSpi(0x20A, 0x01); writeSpi(0x071, 0x26);