diff --git a/bootloader/meson.build b/bootloader/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..04a4f73c15a936ae700155a07d281bfebc2a068d --- /dev/null +++ b/bootloader/meson.build @@ -0,0 +1,19 @@ +name = 'bootloader' + +executable( + name + '.elf', + 'main.c', + 'mscmem.c', + 'bootloader-usb.c', + 'crc16-ccitt.c', + dependencies: [ + libcard10, + max32665_startup_boot, + libff13, + maxusb, + ], + link_whole: [max32665_startup_boot_lib, board_card10_lib], + link_args: [ + '-Wl,-Map=' + meson.current_build_dir() + '/' + name + '.map', + ], +) diff --git a/lib/card10/meson.build b/lib/card10/meson.build index 07c9e3e3fcaad99a147d3660fee5799cd48f86f5..8e6ce61f03e0853b705fd3e0870e95db3649b97e 100644 --- a/lib/card10/meson.build +++ b/lib/card10/meson.build @@ -31,3 +31,31 @@ libcard10 = declare_dependency( link_with: lib, dependencies: deps, ) + +########################################################## + +includes = include_directories( + './', +) + +sources = files( + 'mx25lba.c', +) + +deps = [ + board_card10, + periphdriver, +] + +lib = static_library( + 'mx25lba', + sources, + include_directories: includes, + dependencies: deps, +) + +mx25lba = declare_dependency( + include_directories: includes, + link_with: lib, + dependencies: deps, +) diff --git a/lib/card10/mscmem.h b/lib/card10/mscmem.h new file mode 100644 index 0000000000000000000000000000000000000000..9d4a6e943ecf5614c16e2ea4626d19baf34a23ef --- /dev/null +++ b/lib/card10/mscmem.h @@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (C) 2017 Maxim Integrated Products, Inc., All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining a + * copy of this software and associated documentation files (the "Software"), + * to deal in the Software without restriction, including without limitation + * the rights to use, copy, modify, merge, publish, distribute, sublicense, + * and/or sell copies of the Software, and to permit persons to whom the + * Software is furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included + * in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES + * OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR + * OTHER DEALINGS IN THE SOFTWARE. + * + * Except as contained in this notice, the name of Maxim Integrated + * Products, Inc. shall not be used except as stated in the Maxim Integrated + * Products, Inc. Branding Policy. + * + * The mere transfer of this software does not imply any licenses + * of trade secrets, proprietary technology, copyrights, patents, + * trademarks, maskwork rights, or any other form of intellectual + * property whatsoever. Maxim Integrated Products, Inc. retains all + * ownership rights. + * + * Description: Communications Device Class ACM (Serial Port) over USB + * $Id: descriptors.h 31172 2017-10-05 19:05:57Z zach.metzinger $ + * + ******************************************************************************* + */ + +/** + * @file mscmem.h + * @brief Memory routines used by the USB Mass Storage Class example. + * See the msc_mem_t structure in msc.h for function details. + */ + +#ifndef __MSC_MEM_H__ +#define __MSC_MEM_H__ + +#include <stdint.h> + +int mscmem_init(void); +int mscmem_start(void); +int mscmem_stop(void); +uint32_t mscmem_size(void); +int mscmem_read(uint32_t lba, uint8_t* buffer); +int mscmem_write(uint32_t lba, uint8_t* buffer); +int mscmem_ready(void); + +#endif /* __MSC_MEM_H__ */ diff --git a/lib/ff13/meson.build b/lib/ff13/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..48a2634991bfaee9e3f3eee91409eba5dd8a7b48 --- /dev/null +++ b/lib/ff13/meson.build @@ -0,0 +1,23 @@ +includes = include_directories( + './Source/', +) + +sources = files( + './Source/diskio.c', + './Source/ff.c', + './Source/ffsystem.c', + './Source/ffunicode.c', +) + +lib = static_library( + 'ff13', + sources, + include_directories: includes, + dependencies: [periphdriver, mx25lba], +) + +libff13 = declare_dependency( + include_directories: includes, + link_with: lib, + dependencies: [periphdriver, mx25lba], +) diff --git a/lib/meson.build b/lib/meson.build index e2f7c313470b22b1f46247970113ac2c29c968bf..80fd654a828e4e01c14ccf9548df96491fe47cc1 100644 --- a/lib/meson.build +++ b/lib/meson.build @@ -7,3 +7,4 @@ subdir('./vendor/Maxim/MAX77650/') subdir('./gfx/') subdir('./card10/') +subdir('./ff13/') diff --git a/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build index 9f9b1f64f2e74448f68a8b009f9474ecd1d6ae41..4fef47d4ef088c6eb51c93e7634c03d1efd6601c 100644 --- a/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build +++ b/lib/sdk/Libraries/CMSIS/Device/Maxim/MAX32665/meson.build @@ -66,3 +66,17 @@ max32665_startup_core1 = declare_dependency( '--entry', 'Reset_Handler', ], ) + +############################################################# +# For the bootloader +############################################################# + +# We can just reuse the same lib here +max32665_startup_boot_lib = max32665_startup_lib + +max32665_startup_boot = declare_dependency( + link_args: [ + '-T', meson.current_source_dir() + 'Source/GCC/max32665_boot.ld', + '--entry', 'Reset_Handler', + ], +) diff --git a/lib/sdk/Libraries/MAXUSB/meson.build b/lib/sdk/Libraries/MAXUSB/meson.build new file mode 100644 index 0000000000000000000000000000000000000000..6df655d6978c03a658b2f6a4c6d86fc937c35e26 --- /dev/null +++ b/lib/sdk/Libraries/MAXUSB/meson.build @@ -0,0 +1,33 @@ +includes = include_directories( + 'include/core/musbhsfc', + 'include/core', + 'include/devclass', + 'include/enumerate', + 'include/util', + 'include/dbg_log', +) + +sources = files( + 'src/core/musbhsfc/usb.c', + 'src/core/usb_event.c', + 'src/dbg_log/dbg_log.c', + 'src/devclass/cdc_acm.c', + 'src/devclass/hid_kbd.c', + 'src/devclass/hid_raw.c', + 'src/devclass/msc.c', + 'src/enumerate/enumerate.c', + 'src/util/fifo.c', +) + +lib = static_library( + 'maxusb', + sources, + include_directories: includes, + dependencies: periphdriver, +) + +maxusb = declare_dependency( + include_directories: includes, + link_with: lib, + dependencies: periphdriver, +) diff --git a/lib/sdk/meson.build b/lib/sdk/meson.build index b78dc88f303266b52edfd30f8c255c0d3aca2d68..e71031e577d7942f506dd1deae8124dec3dcb15c 100644 --- a/lib/sdk/meson.build +++ b/lib/sdk/meson.build @@ -4,3 +4,5 @@ subdir('./Libraries/CMSIS/Device/Maxim/MAX32665/') subdir('./Libraries/Boards/card10/') subdir('./Libraries/FreeRTOS/') + +subdir('./Libraries/MAXUSB/') diff --git a/meson.build b/meson.build index 0cb5a984fa08e582ef5ae817d5bac343a04e7213..a00a065b303ca33ade35acd054a64851eaeda23f 100644 --- a/meson.build +++ b/meson.build @@ -30,4 +30,5 @@ add_global_link_arguments( python3 = import('python').find_installation('python3') subdir('lib/') +subdir('bootloader/') subdir('hw-tests/')