diff --git a/Makefile b/Makefile deleted file mode 100644 index 2eef49c6ee4f987db46c20550c82045dea609591..0000000000000000000000000000000000000000 --- a/Makefile +++ /dev/null @@ -1,27 +0,0 @@ -#TARGET = max32665 -#COMPILER = GCC - -#export TARGET -#export COMPILER - -all: sdk subdirs - -travis: - $(MAKE) ADDFLAGS=-Werror lib subdirs - -subdirs: - $(MAKE) -C bootloader - -sdk/Libraries/MAX32665PeriphDriver/Build/PeriphDriver.a: -# $(MAKE) -C sdk/Libraries/MAX32665PeriphDriver - -sdk/Libraries/MAXUSB/Build/maxusb.a: -# $(MAKE) -C sdk/Libraries/MAXUSB - -sdk: sdk/Libraries/MAX32665PeriphDriver/Build/PeriphDriver.a sdk/Libraries/MAXUSB/Build/maxusb.a - -clean: - $(MAKE) -C bootloader clean -# $(MAKE) -C sdk/Libraries/MAX32665PeriphDriver clean -# $(MAKE) -C sdk/Libraries/MAXUSB clean - diff --git a/card10-cross.ini b/card10-cross.ini new file mode 100644 index 0000000000000000000000000000000000000000..805a38670fbce8ba8ce6b85adc0ccc4db6790fe7 --- /dev/null +++ b/card10-cross.ini @@ -0,0 +1,17 @@ +[binaries] +c = 'arm-none-eabi-gcc' +ar = 'arm-none-eabi-ar' +strip = 'arm-none-eabi-strip' + +[properties] +# TODO: Switch to hard float +c_args = ['-mthumb', '-mcpu=cortex-m4', '-mfloat-abi=hard', '-mfpu=fpv4-sp-d16', '-Wa,-mimplicit-it=thumb', '-ffunction-sections', '-fdata-sections', '-fsingle-precision-constant', '-fno-isolate-erroneous-paths-dereference'] +c_link_args = ['-mthumb', '-mcpu=cortex-m4', '-mfloat-abi=hard', '-mfpu=fpv4-sp-d16'] + +target_defs = ['-DTARGET=32665', '-DTARGET_REV=0x4131', '-DBOARD_CARD10=1'] + +[host_machine] +system = 'none' +cpu = 'cortex-m4' +cpu_family = 'arm' +endian = 'little' diff --git a/hw-tests/bmatest/meson.build b/hw-tests/bmatest/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..6fafa0c67e03a893c016298f5a94183971850e98 --- /dev/null +++ b/hw-tests/bmatest/meson.build @@ -0,0 +1,10 @@ +name = 'bmatest' + +executable( + name + '.elf', + 'main.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/bmetest/meson.build b/hw-tests/bmetest/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..485d0a78efcc8eed3237553142c3df3ef3ca24be --- /dev/null +++ b/hw-tests/bmetest/meson.build @@ -0,0 +1,10 @@ +name = 'bmetest' + +executable( + name + '.elf', + 'main.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/ecgtest/meson.build b/hw-tests/ecgtest/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..3210e186894c182ca5c7632aed545029e6edb490 --- /dev/null +++ b/hw-tests/ecgtest/meson.build @@ -0,0 +1,10 @@ +name = 'ecgtest' + +executable( + name + '.elf', + 'main.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/hello-world/meson.build b/hw-tests/hello-world/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..cbd33f2e71ddd1fd7a6a0d5813f98555ab7d11fe --- /dev/null +++ b/hw-tests/hello-world/meson.build @@ -0,0 +1,10 @@ +name = 'hello-world' + +executable( + name + '.elf', + 'main.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/imutest/meson.build b/hw-tests/imutest/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..9aa7c194c7a3818a64d7e2303d0746a16afddc3f --- /dev/null +++ b/hw-tests/imutest/meson.build @@ -0,0 +1,10 @@ +name = 'imutest' + +executable( + name + '.elf', + 'main.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/ips/meson.build b/hw-tests/ips/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..59dfcdede855defb2b2cd197e2af752704cf63d4 --- /dev/null +++ b/hw-tests/ips/meson.build @@ -0,0 +1,12 @@ +name = 'ips' + +executable( + name + '.elf', + 'main.c', + 'image/image.c', + 'image/image2.c', + dependencies: [libcard10], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/hw-tests/meson.build b/hw-tests/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..f5302d2cb32629ad59be041f2de8d2d6956ddaf9 --- /dev/null +++ b/hw-tests/meson.build @@ -0,0 +1,6 @@ +subdir('bmatest/') +subdir('bmetest/') +subdir('ecgtest/') +subdir('hello-world/') +subdir('imutest/') +subdir('ips/') diff --git a/lib/card10/meson.build b/lib/card10/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..9d343368bad0a67dda6cab120af700b52ac9326d --- /dev/null +++ b/lib/card10/meson.build @@ -0,0 +1,40 @@ +includes = include_directories( + './', +) + +sources = files( + 'bosch.c', + 'card10.c', + 'leds.c', + 'pmic.c', +) + +lib = static_library( + 'card10', + sources, + include_directories: includes, + dependencies: [ + bhy1, + bma400, + bme680, + board_card10, + libgfx, + max77650, + periphdriver, + ], +) + +libcard10 = declare_dependency( + include_directories: includes, + link_with: lib, + dependencies: [ + bhy1, + bma400, + bme680, + board_card10, + libgfx, + max32665_rt, + max77650, + periphdriver, + ], +) diff --git a/lib/gfx/meson.build b/lib/gfx/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..a29e567871615649a9baa3a7650133763e30b907 --- /dev/null +++ b/lib/gfx/meson.build @@ -0,0 +1,34 @@ +includes = include_directories( + './', + './Fonts/', + './GUI_DEV/', + './LCD/', +) + +sources = files( + './GUI_DEV/DEV_Config.c', + './GUI_DEV/GUI_Paint.c', + './LCD/LCD_Driver.c', + './display.c', + + './Fonts/font8.c', + './Fonts/font12.c', + './Fonts/font12CN.c', + './Fonts/font16.c', + './Fonts/font20.c', + './Fonts/font24.c', + './Fonts/font24CN.c', +) + +lib = static_library( + 'gfx', + sources, + include_directories: includes, + dependencies: periphdriver, + c_args: '-Wno-missing-braces', +) + +libgfx = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/lib/meson.build b/lib/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..e2f7c313470b22b1f46247970113ac2c29c968bf --- /dev/null +++ b/lib/meson.build @@ -0,0 +1,9 @@ +subdir('./sdk/') + +subdir('./vendor/Bosch/BHy1/') +subdir('./vendor/Bosch/BME680/') +subdir('./vendor/Bosch/BMA400/') +subdir('./vendor/Maxim/MAX77650/') +subdir('./gfx/') + +subdir('./card10/') diff --git a/lib/sdk/Libraries/Boards/card10/meson.build b/lib/sdk/Libraries/Boards/card10/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..c86801074963a982792366977816906d2a7cc5e5 --- /dev/null +++ b/lib/sdk/Libraries/Boards/card10/meson.build @@ -0,0 +1,31 @@ +includes = include_directories( + './Include/', + '../Include/', +) + +sources = files( + './Source/board.c', + '../Source/led.c', + '../Source/mx25.c', + '../Source/pb.c', +) + +lib = static_library( + 'board-card10', + sources, + include_directories: includes, + dependencies: periphdriver, +) + +libstdio = static_library( + 'board-stdio', + '../Source/stdio.c', + include_directories: includes, + dependencies: periphdriver, +) + +board_card10 = declare_dependency( + include_directories: includes, + link_with: lib, + link_whole: libstdio, +) diff --git a/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..d487ee47f7ed648057e06cee60ce42a998bdebdd --- /dev/null +++ b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build @@ -0,0 +1,19 @@ +sources = files( + './Source/GCC/startup_max32665.S', + './Source/system_max32665.c', + './Source/heap.c', +) + +lib = static_library( + 'max32665-rt', + sources, + dependencies: periphdriver, +) + +max32665_rt = declare_dependency( + link_whole: lib, + link_args: [ + '-T', meson.current_source_dir() + 'Source/GCC/max32665.ld', + '--entry', 'Reset_Handler', + ], +) diff --git a/lib/sdk/Libraries/MAX32665PeriphDriver/meson.build b/lib/sdk/Libraries/MAX32665PeriphDriver/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..e6ed059fb24d61fe4ea1b7d035226a8622860c6d --- /dev/null +++ b/lib/sdk/Libraries/MAX32665PeriphDriver/meson.build @@ -0,0 +1,60 @@ +includes = include_directories( + 'Include/', + '../CMSIS/Device/Maxim/MAX32665/Include/', + '../CMSIS/Include/', +) + +sources = files( + 'Source/adc.c', + 'Source/cipher.c', + 'Source/crc.c', + 'Source/dma.c', + 'Source/dvs.c', + 'Source/emcc.c', + 'Source/flc.c', + 'Source/gpio.c', + 'Source/hash.c', + 'Source/htmr.c', + 'Source/i2c.c', + 'Source/icc.c', + 'Source/lp.c', + 'Source/maa.c', + 'Source/mem_utils.c', + 'Source/mxc_assert.c', + 'Source/mxc_delay.c', + 'Source/mxc_lock.c', + 'Source/mxc_pins.c', + 'Source/mxc_sys.c', + 'Source/nvic_table.c', + 'Source/owm.c', + 'Source/pt.c', + 'Source/rpu.c', + 'Source/rtc.c', + 'Source/sdhc.c', + 'Source/sema.c', + 'Source/simo.c', + 'Source/spi.c', + 'Source/spi17y.c', + 'Source/spixf.c', + 'Source/spixfc.c', + 'Source/spixr.c', + 'Source/startup_core1.S', + 'Source/system_core1.c', + 'Source/tmr.c', + 'Source/tmr_utils.c', + 'Source/trng.c', + 'Source/uart.c', + 'Source/wdt.c', + 'Source/wut.c', +) + +lib = static_library( + 'PeriphDriver', + sources, + include_directories: includes, +) + +periphdriver = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/lib/sdk/meson.build b/lib/sdk/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..a2f64eb7a3a7f212482f3b76fcba1c813f93552d --- /dev/null +++ b/lib/sdk/meson.build @@ -0,0 +1,4 @@ +subdir('./Libraries/MAX32665PeriphDriver/') +subdir('./Libraries/CMSIS/Device/Maxim/MAX32665/') + +subdir('./Libraries/Boards/card10/') diff --git a/lib/vendor/Bosch/BHy1/meson.build b/lib/vendor/Bosch/BHy1/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..a63540cc5fbab4036c86f0ffa75aebe405adb05b --- /dev/null +++ b/lib/vendor/Bosch/BHy1/meson.build @@ -0,0 +1,24 @@ +includes = include_directories( + './driver/inc/', + './examples/firmware/', + # For bosch.h + '../../../card10/', +) + +sources = files( + './driver/src/bhy.c', + './driver/src/bhy_support.c', + './driver/src/bhy_uc_driver.c', +) + +lib = static_library( + 'bhy1', + sources, + include_directories: includes, + dependencies: periphdriver, +) + +bhy1 = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/lib/vendor/Bosch/BMA400/meson.build b/lib/vendor/Bosch/BMA400/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..e8c4baf10d601220287f9e3c1a0d5aa59e8e5e12 --- /dev/null +++ b/lib/vendor/Bosch/BMA400/meson.build @@ -0,0 +1,18 @@ +includes = include_directories( + './', +) + +sources = files( + './bma400.c', +) + +lib = static_library( + 'bma400', + sources, + include_directories: includes, +) + +bma400 = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/lib/vendor/Bosch/BME680/meson.build b/lib/vendor/Bosch/BME680/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..d8e87fb1e079fd1771ceb937f24c62a48f57282f --- /dev/null +++ b/lib/vendor/Bosch/BME680/meson.build @@ -0,0 +1,18 @@ +includes = include_directories( + './', +) + +sources = files( + './bme680.c', +) + +lib = static_library( + 'bme680', + sources, + include_directories: includes, +) + +bme680 = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/lib/vendor/Maxim/MAX77650/meson.build b/lib/vendor/Maxim/MAX77650/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..32e60776d2216d80fd777beeb3c10f055690dfa7 --- /dev/null +++ b/lib/vendor/Maxim/MAX77650/meson.build @@ -0,0 +1,14 @@ +includes = include_directories( + './', +) + +lib = static_library( + 'max77650', + 'MAX77650-Arduino-Library.c', + dependencies: periphdriver, +) + +max77650 = declare_dependency( + include_directories: includes, + link_with: lib, +) diff --git a/meson.build b/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..e01f491ce24c50d83d478eacf28cde0f3dc18daa --- /dev/null +++ b/meson.build @@ -0,0 +1,31 @@ +project( + 'card10-firmware', + 'c', + default_options: [ + 'buildtype=minsize', + 'c_lto=true', + 'c_std=c99', + 'b_staticpic=false', + 'b_asneeded=false', + ], +) + +assert( + meson.is_cross_build(), + 'card10-firmware can only be cross-compiled for card10.\n' + + 'Please use `--cross-file card10-cross.ini`.', +) + +add_global_arguments( + meson.get_cross_property('target_defs'), + language: 'c', +) + +add_global_link_arguments( + '-Wl,--gc-sections', + '-lm', + language: 'c', +) + +subdir('lib/') +subdir('hw-tests/')