diff --git a/.gitignore b/.gitignore index 191abd6a..8d609d3a 100644 --- a/.gitignore +++ b/.gitignore @@ -54,6 +54,7 @@ tags # subprojects subprojects/radio_tool subprojects/codec2 +subprojects/tinyusb #ignore log files *.log diff --git a/meson.build b/meson.build index 70118587..483ee0c4 100644 --- a/meson.build +++ b/meson.build @@ -85,6 +85,9 @@ else codec2_dep = dependency('codec2') endif +# tinyusb, An open source cross-platform USB stack for embedded system +tinyusb_proj = subproject('tinyusb') +tinyusb_dep = tinyusb_proj.get_variable('tinyusb_dep') ## ## RTOS @@ -418,7 +421,7 @@ md3x0_opts = {'sources' : md3x0_src, 'cpp_args': md3x0_args, 'link_args' : ['-Wl,-T../platform/mcu/STM32F4xx/linker_script_MDx.ld', '-Wl,--print-memory-usage'], - 'dependencies': [codec2_dep], + 'dependencies': [codec2_dep, tinyusb_dep], 'include_directories': md3x0_inc} mduv3x0_opts = {'sources': mduv3x0_src, @@ -426,7 +429,7 @@ mduv3x0_opts = {'sources': mduv3x0_src, 'cpp_args': mduv3x0_args, 'link_args' : ['-Wl,-T../platform/mcu/STM32F4xx/linker_script_MDx.ld', '-Wl,--print-memory-usage'], - 'dependencies': [codec2_dep], + 'dependencies': [codec2_dep, tinyusb_dep], 'include_directories': mduv3x0_inc} gd77_opts = {'sources': gd77_src, @@ -450,7 +453,7 @@ md9600_opts = {'sources': md9600_src, 'cpp_args': md9600_args, 'link_args' : ['-Wl,-T../platform/mcu/STM32F4xx/linker_script_MDx.ld', '-Wl,--print-memory-usage'], - 'dependencies': [codec2_dep], + 'dependencies': [codec2_dep, tinyusb_dep], 'include_directories': md9600_inc} mod17_opts = {'sources': mod17_src, @@ -458,7 +461,7 @@ mod17_opts = {'sources': mod17_src, 'cpp_args': mod17_args, 'link_args' : ['-Wl,-T../platform/mcu/STM32F4xx/linker_script_Mod17.ld', '-Wl,--print-memory-usage'], - 'dependencies': [codec2_dep], + 'dependencies': [codec2_dep, tinyusb_dep], 'include_directories': mod17_inc} ## diff --git a/subprojects/packagefiles/tinyusb/meson.build b/subprojects/packagefiles/tinyusb/meson.build new file mode 100644 index 00000000..660866a5 --- /dev/null +++ b/subprojects/packagefiles/tinyusb/meson.build @@ -0,0 +1,37 @@ +project('tinyusb', 'c') + +# +# HACK +# This is a workaround for meson not propagating the include directories of the +# main project to the subprojects. To avoid double-inclusion we force the +# include paths needed to compile tinyusb and already present in the main +# program via GCC compile arguments. +# +add_project_arguments('-I../platform/mcu/CMSIS/Device/ST/STM32F4xx/Include', + language : 'c') +add_project_arguments('-I../platform/mcu/CMSIS/Include', language : 'c') +add_project_arguments('-w', language : 'c') + +tinyusb_inc = include_directories('openrtx', 'src', 'hw') + +tinyusb_src = ['src/tusb.c', + 'src/device/usbd.c', + 'src/common/tusb_fifo.c', + 'src/device/usbd_control.c', + 'src/class/cdc/cdc_device.c', + 'src/portable/st/synopsys/dcd_synopsys.c', + 'src/portable/st/stm32_fsdev/dcd_stm32_fsdev.c'] + +# Define CPU type and clock speed via GCC command line arguments +add_project_arguments('-DSTM32F405xx', language : 'c') +add_project_arguments('-DHSE_VALUE=8000000', language : 'c') + + + +tinyusb = static_library('tinyusb', + tinyusb_src, + include_directories : tinyusb_inc, + install : false) + +tinyusb_dep = declare_dependency(include_directories : tinyusb_inc, + link_with : tinyusb) diff --git a/subprojects/tinyusb.wrap b/subprojects/tinyusb.wrap new file mode 100644 index 00000000..a2a5d390 --- /dev/null +++ b/subprojects/tinyusb.wrap @@ -0,0 +1,4 @@ +[wrap-git] +url = https://github.com/hathach/tinyusb.git +revision = 4bfab30c02279a0530e1a56f4a7c539f2d35a293 +patch_directory = tinyusb