Joel Bodenmann Posted July 21, 2015 Report Posted July 21, 2015 As I am getting many requests by people asking for a working STM32F7 Discovery project I decided to put mine in a repository so it is available to everybody.You can find the repository here: https://bitbucket.org/Tectu/stm32f7-discoveryI just pushed the current state of the project without cleaning up as the demands are really high. Sorry for the mess.ImportantuGFX itself is not part of the project. You will need to download this separately and adjust the GFXLIB variable in the Makefile accordingly.You can either just use a text editor & Make or you can use the Em::Blocks IDE (Make sure that you actually download Em::Bitz, not Em::Blocks). The project and configuration files for the Em::Bitz IDE are included in the project repository.Please contribute your changes by sending pull requests so everybody can benefit.Please leave all questions, comments, contributions and other feedback below.~ Tectu
Joel Bodenmann Posted July 22, 2015 Author Report Posted July 22, 2015 A primary version of the touchscreen driver has been added. The first version keeps everything simple: No multitouch support and no support for changing orientations.~ Tectu
vlad Posted November 10, 2015 Report Posted November 10, 2015 Hello to everyone,I need help in compiling demos on STM32F7Discovery board.I'm using Eclipse as IDE and arm-none-eabi gcc compiler from launchpadSteps that I'm doing:1) edit the Makefile in ugfx/boards/base/STM32F746-Discovery/example_raw32:GFXLIB = /home/vlad/Program_Files/ARM_Eclipse/workspace/ugfxSTMHAL = /home/vlad/Program_Files/ARM_Eclipse/STM32Cube_FW_F7_V1.2.0/Drivers/STM32F7xx_HAL_DriverCMSIS = /home/vlad/Program_Files/ARM_Eclipse/STM32Cube_FW_F7_V1.2.0/Drivers/CMSIS2) make. After compilation with some warnings it fails to link the .elf:Linking .build/example_raw32.elf/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: .build/example_raw32.elf uses VFP register arguments, /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-init.o) does not/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-init.o)/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: .build/example_raw32.elf uses VFP register arguments, /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-memcpy.o) does not/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-memcpy.o)/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: .build/example_raw32.elf uses VFP register arguments, /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-memset.o) does not/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-memset.o)/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-setjmp.o): Conflicting CPU architectures 13/1/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-setjmp.o)/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: .build/example_raw32.elf uses VFP register arguments, /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-strcpy.o) does not/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-strcpy.o)/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: .build/example_raw32.elf uses VFP register arguments, /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-strlen.o) does not/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-strlen.o)collect2: error: ld returned 1 exit status/home/vlad/Program_Files/ARM_Eclipse/workspace/ugfx/tools/gmake_scripts/compiler_gcc.mk:282: recipe for target '.build/example_raw32.elf' failedmake: *** [.build/example_raw32.elf] Error 13) googling (http://stackoverflow.com/questions/9753 ... bject-file) gives that probably mfloat-abi shold be set to softfp rather than hard. So I tried to change the file ugfx/tools/gmake_scripts/cpu_stm32m7.mk:SRCFLAGS += -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=softfp -mfpu=fpv4-sp-d16LDFLAGS += -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=softfp -mfpu=fpv4-sp-d16DEFS += CORTEX_USE_FPU=TRUE USE_FPU=softfpand received another strange linker error:Linking .build/example_raw32.elf/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: error: /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-setjmp.o): Conflicting CPU architectures 13/1/home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: failed to merge target specific data of file /home/vlad/Program_Files/ARM_Eclipse/gcc-arm-none-eabi-4_9-2015q3/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/libc.a(lib_a-setjmp.o)collect2: error: ld returned 1 exit status/home/vlad/Program_Files/ARM_Eclipse/workspace/ugfx/tools/gmake_scripts/compiler_gcc.mk:282: recipe for target '.build/example_raw32.elf' failedmake: *** [.build/example_raw32.elf] Error 14) I tried compiler versions gcc-arm-none-eabi-4_9-2015q1 and gcc-arm-none-eabi-4_9-2015q3 but they behaves the same.I saw a video on youtube with successful demonstration of demo on STM32F7Discovery so most probably I'm missing something to compile it.I would appreciate for any help.Thanks in advance,Vlad.
inmarket Posted November 11, 2015 Report Posted November 11, 2015 It should definitely be "hard" as the cpu has hardware floating point.It looks like you don't have the correct libc installed for hardware floating point. In fact it doesn't look like it is using f7 libraries at all.Perhaps you are using a pre-f7 compiler as the f7 is a very recently supported cpu or atleast your libc is out of date (note the "conflicting archetecture error in the 2nd build)
vlad Posted November 11, 2015 Report Posted November 11, 2015 Thanks for the reply,if I understand everything right about gcc-arm-none-eabi, it uses it's own libgcc.a instead of libc.a?Which compiler did you use to build the demo?With mentioned compilers I'm able to build some projects which don't contain uGFX for STM32F7 Discovery in Eclipse.
inmarket Posted November 11, 2015 Report Posted November 11, 2015 There is definitely a problem with your standard c library (whatever it is called).You can however just avoid the problem by changing the cpu setting at the top of the makefile. Try using the stm32m4 setting etc.Whilst this may get you round your library problem you will lose any cpu optimizations.This is likely why your other projects worked, they are not turning on the f7 specific compile flags.Ohh - dont forget to do a make clean in between changing any of these flags
Joel Bodenmann Posted November 11, 2015 Author Report Posted November 11, 2015 We have successfully compiled this project with arm-none-eabi-gcc 4.9. We also used the version from the Launchpad.~ Tectu
vlad Posted November 13, 2015 Report Posted November 13, 2015 The problem solved with changing -mfpu=fpv4-sp-d16 to -mfpu=fpv5-sp-d16 in ugfx/tools/gmake_scripts/cpu_stm32m7.mk (twice).Thanks for your help!You guys are doing an impressive work.
Joel Bodenmann Posted November 13, 2015 Author Report Posted November 13, 2015 Glad to hear that you got it working!Thanks for your feedback.~ Tectu
Kent Posted January 8, 2016 Report Posted January 8, 2016 Hi,I'm a newbie student trying to use UGFX on the STM32F7.I'm using the stm32f7 project and the ugfx lib from bitbucket. I've modified the makefile, and fixed a first problem adding "INCPATH = $(HAL)/Inc".But now i've an other issue and i don't find the way to fix it : "make: *** No rule to make target `.build/obj//Src/stm32f7xx_hal.o', needed by `.build/stm32f7-discovery.elf'. Stop."ent@kentXu:~/Projects/ugfx_Workspace/stm32f7-discovery$ make.C Compiler Options....arm-none-eabi-gcc -c -g3 -ggdb -O0 -std=c99 -g3 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.d -I. -ISTM32F7xx_HAL_Driver/Inc -I../ugfx -I../ugfx/3rdparty/tinygl-0.4-ugfx/include -I../ugfx/boards/base/STM32F746-Discovery -ICMSIS/Device/ST/STM32F7xx/Include -ICMSIS/Include -I/Inc -I../ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumbfile.c -o .build/obj/fakethumbfile.o.Assembler Options.....arm-none-eabi-gcc -c -g3 -ggdb -O0 -std=c99 -g3 -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant -fomit-frame-pointer -Wall -Wextra -Wstrict-prototypes -fverbose-asm -MMD -MP -MF .build/dep/fakethumbfile.o.d -I. -ISTM32F7xx_HAL_Driver/Inc -I../ugfx -I../ugfx/3rdparty/tinygl-0.4-ugfx/include -I../ugfx/boards/base/STM32F746-Discovery -ICMSIS/Device/ST/STM32F7xx/Include -ICMSIS/Include -I/Inc -I../ugfx/drivers/gdisp/STM32LTDC -DSTM32F746xx -DGFX_OS_PRE_INIT_FUNCTION=Raw32OSInit -DGFX_OS_INIT_NO_WARNING=TRUE -DGFX_USE_OS_RAW32=TRUE -DCORTEX_USE_FPU=TRUE -DUSE_FPU=hard -DTHUMB_PRESENT -DTHUMB_NO_INTERWORKING -mthumb -DTHUMB fakethumbfile.s -o .build/obj/fakethumbfile.o.Linker Options........arm-none-eabi-gcc -mcpu=cortex-m7 -falign-functions=16 -mfloat-abi=hard -mfpu=fpv5-sp-d16 -fsingle-precision-constant -nostartfiles -mthumb -Wl,-Map=.build/stm32f7-discovery.map,--cref -T../ugfx/boards/base/STM32F746-Discovery/stm32f746nghx_flash.ld -lm .build/obj/fakethumbfile.o -o .build/stm32f7-discovery.elf.make: *** No rule to make target `.build/obj//Src/stm32f7xx_hal.o', needed by `.build/stm32f7-discovery.elf'. Stop.Somebody could help me with that ?Thanks
Joel Bodenmann Posted January 8, 2016 Author Report Posted January 8, 2016 Hello Kent and welcome to the community!I'll fix and update the project over the weekend. Sorry for the inconvenience!~ Tectu
r4d10n Posted February 1, 2016 Report Posted February 1, 2016 Kent... I came across the same error. As vlad had suggested, I tried adding the paths (as shown below) to ugfx/boards/base/STM32F746-Discovery/example_raw32 - which didn't help. It compiled fine when I added the same lines to ugfx\ugfx\boards\base\STM32F746-Discovery . May not be proper way, I hope the higher powers would take a look ;>STMHAL = /home/vlad/Program_Files/ARM_Eclipse/STM32Cube_FW_F7_V1.2.0/Drivers/STM32F7xx_HAL_DriverCMSIS = /home/vlad/Program_Files/ARM_Eclipse/STM32Cube_FW_F7_V1.2.0/Drivers/CMSISAlso you might have to add this to Makefile in the root of the project dir.INCPATH = ./STM32F7xx_HAL_Driver/Inc
Joel Bodenmann Posted February 1, 2016 Author Report Posted February 1, 2016 Oh dear, I completely forgot about this one! Sorry!I got disturbed while working on the new STM32F746-Discovery baremetal project and then forgot about it.Sadly I won't have time to finish this in the next 10 days. However, I already have a project that compiles correctly, it just currently doesn't show anything on the screen. If anybody wants to have an early look I attached the project to this post. The new project uses a new dedicated Makefile and the latest STM32F7Cube HAL.Edit: I just had a look. There must be an issue in the initialization code as the LED doesn't start flashing. Compiling with uGFX works just fine, tho. If nobody will have fixed this I'll finish this next week.~ Tectu
CShark Posted February 1, 2016 Report Posted February 1, 2016 I've tried to get ugfx with the board working to no avail. Now I am as far as getting to the linker without errors, but now there are some functions missing. It looks like the modules are not properly included... but I have no idea why or how to fix that. Any Ideas?Building target: dmxprobeInvoking: Cross ARM C++ Linkerarm-none-eabi-g++ -mcpu=cortex-m7 -mthumb -O2 -g -Xlinker --gc-sections -Wl,-Map,"dmxprobe.map" -o "dmxprobe" ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_adc_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_can.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cec.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cortex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_crc_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cryp.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_cryp_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dac.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dac_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dcmi_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma2d.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_dma_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_eth.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_flash_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_gpio.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_hash.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_hash_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_hcd.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2c_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_i2s.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_irda.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_iwdg.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_lptim.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_ltdc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_msp_template.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nand.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_nor.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pcd.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pcd_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_pwr_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rcc_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rng.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rtc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_rtc_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sai_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sd.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sdram.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_smartcard.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_smartcard_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_spdifrx.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_spi.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_sram.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_tim_ex.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_uart.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_usart.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_wwdg.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_fmc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_sdmmc.o ./STM32F7xx_HAL_Driver/Src/stm32f7xx_ll_usb.o ./CMSIS/Device/ST/STM32F7xx/Source/Templates/system_stm32f7xx.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_bitreversal.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_init_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix2_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_init_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix4_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_cfft_radix8_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_init_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_dct4_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_fast_init_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_f32.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_init_q31.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q15.o ./CMSIS/DSP_Lib/Source/TransformFunctions/arm_rfft_q31.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_f32.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q15.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q31.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_copy_q7.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_f32.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q15.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q31.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_fill_q7.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q15.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q31.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_float_to_q7.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_float.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q31.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q15_to_q7.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_float.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q15.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q31_to_q7.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_float.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q15.o ./CMSIS/DSP_Lib/Source/SupportFunctions/arm_q7_to_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_max_q7.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_mean_q7.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_min_q7.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_power_q7.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_rms_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_std_q31.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_f32.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q15.o ./CMSIS/DSP_Lib/Source/StatisticsFunctions/arm_var_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_add_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_cmplx_mult_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_init_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_inverse_f64.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_fast_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_mult_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_scale_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_sub_q31.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_f32.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q15.o ./CMSIS/DSP_Lib/Source/MatrixFunctions/arm_mat_trans_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_32x64_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df1_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_f64.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_df2T_init_f64.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_biquad_cascade_stereo_df2T_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_opt_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_opt_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_partial_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_conv_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_opt_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_correlate_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_decimate_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_fast_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_init_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_interpolate_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_lattice_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_init_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_fir_sparse_q7.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_iir_lattice_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_f32.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_init_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_norm_q31.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q15.o ./CMSIS/DSP_Lib/Source/FilteringFunctions/arm_lms_q31.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_f32.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q15.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_cos_q31.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_f32.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q15.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sin_q31.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q15.o ./CMSIS/DSP_Lib/Source/FastMathFunctions/arm_sqrt_q31.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_f32.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q15.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_init_q31.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_f32.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q15.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_pid_reset_q31.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_f32.o ./CMSIS/DSP_Lib/Source/ControllerFunctions/arm_sin_cos_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_conj_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_dot_prod_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mag_squared_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_cmplx_q31.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_f32.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q15.o ./CMSIS/DSP_Lib/Source/ComplexMathFunctions/arm_cmplx_mult_real_q31.o ./CMSIS/DSP_Lib/Source/CommonTables/arm_common_tables.o ./CMSIS/DSP_Lib/Source/CommonTables/arm_const_structs.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_abs_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_add_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_dot_prod_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_mult_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_negate_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_offset_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_scale_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_shift_q7.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_f32.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q15.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q31.o ./CMSIS/DSP_Lib/Source/BasicMathFunctions/arm_sub_q7.o ./main.o ./main.o: In function `_heartbeat':E:\Projekte\eclipse\dmxprobe\Default/../main.c:27: undefined reference to `gfxSleepMilliseconds'./main.o: In function `_updateColor':E:\Projekte\eclipse\dmxprobe\Default/../main.c:45: undefined reference to `gwinClear'./main.o: In function `main':E:\Projekte\eclipse\dmxprobe\Default/../main.c:153: undefined reference to `gfxInit'E:\Projekte\eclipse\dmxprobe\Default/../main.c:156: undefined reference to `gdispOpenFont'E:\Projekte\eclipse\dmxprobe\Default/../main.c:156: undefined reference to `gwinSetDefaultFont'E:\Projekte\eclipse\dmxprobe\Default/../main.c:157: undefined reference to `gwinSetDefaultStyle'E:\Projekte\eclipse\dmxprobe\Default/../main.c:158: undefined reference to `gdispGClear'./main.o: In function `_guiCreate':E:\Projekte\eclipse\dmxprobe\Default/../main.c:56: undefined reference to `gwinWidgetClearInit'E:\Projekte\eclipse\dmxprobe\Default/../main.c:65: undefined reference to `gwinGLabelCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:73: undefined reference to `gwinGFrameCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:82: undefined reference to `gwinGButtonCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:91: undefined reference to `gwinGSliderCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:92: undefined reference to `gwinSliderSetRange'E:\Projekte\eclipse\dmxprobe\Default/../main.c:93: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:102: undefined reference to `gwinGButtonCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:111: undefined reference to `gwinGSliderCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:112: undefined reference to `gwinSliderSetRange'E:\Projekte\eclipse\dmxprobe\Default/../main.c:113: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:122: undefined reference to `gwinGButtonCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:131: undefined reference to `gwinGSliderCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:132: undefined reference to `gwinSliderSetRange'E:\Projekte\eclipse\dmxprobe\Default/../main.c:133: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:140: undefined reference to `gwinGWindowCreate'./main.o: In function `main':E:\Projekte\eclipse\dmxprobe\Default/../main.c:164: undefined reference to `geventListenerInit'E:\Projekte\eclipse\dmxprobe\Default/../main.c:165: undefined reference to `gwinAttachListener'E:\Projekte\eclipse\dmxprobe\Default/../main.c:168: undefined reference to `gfxThreadCreate'E:\Projekte\eclipse\dmxprobe\Default/../main.c:172: undefined reference to `geventEventWait'E:\Projekte\eclipse\dmxprobe\Default/../main.c:189: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:185: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:187: undefined reference to `gwinSliderSetPosition'E:\Projekte\eclipse\dmxprobe\Default/../main.c:187: undefined reference to `GDISP'E:\Projekte\eclipse\dmxprobe\Default/../main.c:187: undefined reference to `WhiteWidgetStyle'collect2.exe: error: ld returned 1 exit statusmakefile:62: recipe for target 'dmxprobe' failedmake: *** [dmxprobe] Error 1
Joel Bodenmann Posted February 2, 2016 Author Report Posted February 2, 2016 Hello CShark and welcome to the community!When I understand you correctly you managed to make the LED blinking with the project I attached in my last post?The errors you get is because uGFX isn't available/linked properly. I just took a look and it seems like I have removed the uGFX part from the Makefile. What you need to do in the Makefile is the following: Set the GFXLIB variable to the path pointing to the µGFX library root directory Include the main µGFX Makefile (/ugfx/gfx.mk) Add GFXSRC to the sources variable/list Add GFXINC to the include paths variable/list Include additional Makefiles of the µGFX library to include board files, drivers, ...That would look something like that (I haven't tested it! I'm currently on the road):################################################################################# Generic Makefile for STM32 based applications using StdPeriph/STM32Cube. ## ## Copyright (C) 2015 by Joel Bodenmann ## ## Feel free to use this makefile without any warranty on your own risk. ################################################################################## This is the name of the binaries that will be generatedTARGET = project# Some pathsCMSIS = CMSISHAL = STM32F7xx_HAL_Driver# Include uGFX stuff, don't forget about $(GFXSRC) and $(GFXINC) further belowGFXLIB = /path/to/your/ugfx/directoryinclude $(GFXLIB)/gfx.mkinclude $(GFXLIB)/boards/base/STM32F746-Discovery/board.mk# Here we add all *.c files that we want to compileCSRCS = \ $(GFXSRC) \ $(HAL)/Src/stm32f7xx_hal.c \ $(HAL)/Src/stm32f7xx_hal_cortex.c \ $(HAL)/Src/stm32f7xx_hal_flash.c \ $(HAL)/Src/stm32f7xx_hal_flash_ex.c \ $(HAL)/Src/stm32f7xx_hal_rcc.c \ $(HAL)/Src/stm32f7xx_hal_rcc_ex.h \ $(HAL)/Src/stm32f7xx_hal_gpio.c \ $(HAL)/Src/stm32f7xx_hal_dma.c \ $(HAL)/Src/stm32f7xx_hal_i2c.c \ $(HAL)/Src/stm32f7xx_hal_ltdc.c \ $(HAL)/Src/stm32f7xx_hal_pwr.c \ $(HAL)/Src/stm32f7xx_hal_pwr_ex.h \ system_stm32f7xx.c \ main.c# Here we add all *.cpp files that we want to compileCPPSRCS = # Here we add all *.s files that we want to compile (Don't include startup file)ASSRCS =# Here we add the paths to all include directoriesINCS = \ $(GFXINC) \ $(CMSIS)/Device/ST/STM32F7xx/Include \ $(CMSIS)/Include \ $(HAL)/Inc \ .# here we add the paths to all custom librariesLIBDIRS =# here we add librariesLIBS =# StartUp fileSTARTUP = startup_stm32f746xx.s# Linker scriptLDSCRIPT = stm32f746nghx_flash.ld# The controller typeCONTROLLER = STM32F746xx# MCU flagsMCUFLAGS = -mthumb -mcpu=cortex-m7# Should a map file be generated? (yes / no)GENERATE_MAP = no# The following variables hold binaries and settingsARCH = arm-none-eabiAS = $(ARCH)-gccLD = $(ARCH)-gcc CC = $(ARCH)-gccCPPC = $(ARCH)-g++SIZE = $(ARCH)-sizeOBJCOPY = $(ARCH)-objcopyASFLAGS = -ggdb -WallCFLAGS = -ggdb -Wall -std=c99CPPFLAGS = -ggdb -WallLDFLAGS = -lnosys -fno-exceptions -fdata-sections################################################################################# Don't change anything below this line ################################################################################## Some directory and file magicBUILDDIR = buildOBJDIR = $(BUILDDIR)/objMAPFILE = $(BUILDDIR)/$(TARGET).map# Add the startup fileASSRCS += $(STARTUP)# Generate the object namesOBJS = $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CSRCS:%.c=%.o))))OBJS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(ASSRCS:%.s=%.o))))OBJS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CPPSRCS:%.cpp=%.o))))# Automate the inclusion pathsCFLAGS += $(INCS:%=-I%) $(MCUFLAGS) -D$(CONTROLLER) -DUSE_STDPERIPH_DRIVERCPPFLAGS += $(INCS:%=-I%)LDFLAGS += $(LIBDIRS:%=-L%) $(INCS:%=-I%) $(LIBS) $(MCUFLAGS) -T$(LDSCRIPT)# Some user settings magicifeq ($(GENERATE_MAP), yes) LDFLAGS += -Wl,-Map=$(MAPFILE),--crefendif# This is the default target if the user does just calls 'make'all: build size# Build all the filesbuild: builddirs $(BUILDDIR)/$(TARGET).elf $(BUILDDIR)/$(TARGET).bin $(BUILDDIR)/$(TARGET).hex# Create the required directories (if not already existing)builddirs: @mkdir -p $(BUILDDIR) @mkdir -p $(OBJDIR)# Create the *.bin$(BUILDDIR)/%.bin: $(BUILDDIR)/$(TARGET).elf @$(OBJCOPY) -O binary $< $@# Create the *.hex$(BUILDDIR)/%.hex: $(BUILDDIR)/$(TARGET).elf @$(OBJCOPY) -O ihex $< $@# Link everything together to a *.elf file$(BUILDDIR)/$(TARGET).elf: $(OBJS) @echo Linking $@ @$(LD) $(LDFLAGS) -o $(BUILDDIR)/$(TARGET).elf $(OBJS)# Compile assembly files$(OBJDIR)/%.o: %.s @mkdir -p $(dir $@) @echo Compiling $^ @$(AS) $(ASFLAGS) -c -o $@ $^# Compile c files$(OBJDIR)/%.o: %.c @mkdir -p $(dir $@) @echo Compiling $^ @$(CC) $(CFLAGS) -c -o $@ $^# Compile cpp files$(OBJDIR)/%.o: %.cpp @mkdir -p $(dir $@) @echo Compiling $^ @$(CPPC) $(CPPFLAGS) -c -o $@ $^# Print size informationsize: $(BUILDDIR)/$(TARGET).elf @echo @echo $(SIZE) $^ @echo $(FOO)# Clean upclean: @rm -rf *.o $(BUILDDIR) $(OBJS) $($MAPFILE) $(TARGET).* @echo Done# Clean must be a phony target so make knows this never exists as a file.PHONY: clean~ Tectu
CShark Posted February 2, 2016 Report Posted February 2, 2016 It worked!!First, I forgot to turn off the auto generated makefile in eclipse. The second mistake was to use eclipse instead of cygwin. Now everything works fine. Thats a starting point, at least.
Joel Bodenmann Posted February 2, 2016 Author Report Posted February 2, 2016 That's nice! Can you upload your project so everybody can benefit? At the end we want heavily extend the 'ready-to-use' projects that can be downloaded from the uGFX homepage.Just to clarify: Did you get this working based on the project I posted a couple of posts earlier?~ Tectu
BenjyC Posted February 3, 2016 Report Posted February 3, 2016 Hello!I'm also trying to use an Windows Eclipse environment, I've pointed to the makefile (I think) but on trying to build the project you've designed I recieve the following error:The system cannot find the path specified.The syntax of the command is incorrect.make: *** [builddirs] Error 1I know this happens because this IDE needs to use mkdir [path]\[subpath] instead of mkdir -p [path]/[subpath]On replacing / with \ in compiler_gcc.mk only I get the following error:make: *** No rule to make target `.build\obj\main.o', needed by `.build\.elf'. Stop.Am I making life difficult for myself? Where am I going astray?
inmarket Posted February 3, 2016 Report Posted February 3, 2016 I think you are using a bad make executable. You need to use one that is gnu compatible.Both the cygwin system and the mingw system produce suitable make executables. Our preference is for the mingw version because of some cygwin strange pathing problems. Our makefile is designed to use either.You are probably using the old msdos make which is too simple for this type of project.The other possibility is that you have spaces in one of your path variables in the makefile. This is a no-no due to inadequacies in the gnu make.Once you have sorted out the make executable on your path you will need to change those \'s back into /'s
Joel Bodenmann Posted February 3, 2016 Author Report Posted February 3, 2016 Both the cygwin system and the mingw system produce suitable make executables. Our preference is for the mingw version because of some cygwin strange pathing problems. Our makefile is designed to use either.If he's using the project I attached in a post above then he's not using our makefiles. The baremetal project for the STM32F746-Discovery currently uses one of my own makefiles (to keep stuff easy to understand for people who want to use this as a starting point) and doesn't use the ones that come with the uGFX repository.I guess we have to wait until CShark provides us with his fixed version of the project that actually works.~ Tectu
CShark Posted February 3, 2016 Report Posted February 3, 2016 While working out where the error was, I did a complete rollback to the old makefile. Good news though, I got it to compile even using eclipse. I will try to implement the cubemx makefile step by step today/tomorrow.
CShark Posted February 4, 2016 Report Posted February 4, 2016 (edited) Regarding Eclipse:I needed the gnu arm eclipse plugin[1], arm build tools for windows [2] and cygwin. [1] provides the compiler and linker for the stm32, [2] provides a more recent gnu make and cygwin provided me with a working mkdir (package has to be installed).To get it finally up and running, I imported the makefile project into eclipse and did the following adjustments:Open the Project Properties and make sure/change:1. C/C++ Build: Make sure "Generate makefiles automatically" is turned off2. C/C++ Build->Environment: Make sure "PATH" contains cygwin's bin path (probably doesn't) and the paths to build tools and the compiler bin path (should already be)For a working IDE with code completion and stuff:C/C++ General->Paths and Symbols: include everything that you need, in my case I needed the path to the root of ugfx and some include dirs in the project dir.Also make sure to never use drive letters in makefiles. You'll get some weird errors with targets failing/missing and other stuff. Always use relative paths.Some demos or functions complain about a missing _sbrk. Create a file "_sbrk.c" containing the following code to fix the error:#include "gfx.h"char* _sbrk(int incr) { return (char *)gfxAlloc(incr);}Oh, and \ actually has another meaning in a makefile, don't use it in paths. \ joins multiple lines into one. Cygwins mkdir works fine with the paths and cmd arguments provided by ugfx.[1]: http://gnuarmeclipse.github.io/[2]: http://gnuarmeclipse.github.io/windows-build-tools/ Edited February 4, 2016 by Guest
Joel Bodenmann Posted February 4, 2016 Author Report Posted February 4, 2016 Thank you for providing this detailed information! Hopefully this will help BenjyC to get his project up and running.But I have to ask again, just to be sure: Did you use the project from the bitbucket repository or the one I attached to a forum post on the previous page? If you used the latter, can you please let us know what modifications were required to get it working (because currently it seems like it hardfaults) and/or provide a ZIP with the modified, working project?~ Tectu
CShark Posted February 4, 2016 Report Posted February 4, 2016 (edited) I started with your file, but to track down the make errors, I reversed it bit by bit until I got the bitbucket one. Now I applied all changes forward and have a working makefile with the version you provided. So first a list of all changes and afterwards an explanation.Things to change in ugfx:/boards/base/STM32F746-Discovery/board.mkGFXINC += $(GFXLIB)/boards/base/STM32F746-DiscoveryGFXSRC += $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746g_discovery_sdram.c \ $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f7_i2c.cifeq ($(OPT_OS),raw32) GFXDEFS += STM32F746xx GFXSRC += $(STMHAL)/Src/stm32f7xx_hal.c \ $(STMHAL)/Src/stm32f7xx_hal_cortex.c \ $(STMHAL)/Src/stm32f7xx_hal_rcc.c \ $(STMHAL)/Src/stm32f7xx_hal_rcc_ex.h \ $(STMHAL)/Src/stm32f7xx_hal_gpio.c \ $(STMHAL)/Src/stm32f7xx_hal_pwr.c \ $(STMHAL)/Src/stm32f7xx_hal_pwr_ex.c STARTUP = $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746g_raw32_startup.s GFXSRC += $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746g_raw32_ugfx.c \ $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746g_raw32_system.c \ $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746g_raw32_interrupts.c GFXDEFS += GFX_OS_PRE_INIT_FUNCTION=Raw32OSInit GFX_OS_INIT_NO_WARNING=TRUE GFXINC += $(CMSIS)/Device/ST/STM32F7xx/Include \ $(CMSIS)/Include \ $(STMHAL)/Inc LDSCRIPT = $(GFXLIB)/boards/base/STM32F746-Discovery/stm32f746nghx_flash.ldendifinclude $(GFXLIB)/tools/gmake_scripts/cpu_stm32m7.mkinclude $(GFXLIB)/drivers/gdisp/STM32LTDC/driver.mkinclude $(GFXLIB)/drivers/ginput/touch/FT5336/driver.mkAnd finally, the makefile:################################################################################# Generic Makefile for STM32 based applications using StdPeriph/STM32Cube. ## ## Copyright (C) 2015 by Joel Bodenmann ## ## Feel free to use this makefile without any warranty on your own risk. ################################################################################## This is the name of the binaries that will be generatedTARGET = project# Some pathsOPT_OS = raw32CMSIS = CMSISSTMHAL = STM32F7xx_HAL_DriverGFXBOARD = STM32F746-Discovery# Include uGFX stuff, don't forget about $(GFXSRC) and $(GFXINC) further belowGFXLIB = ../ugfx-ca0be9403f25include $(GFXLIB)/gfx.mk# Here we add all *.c files that we want to compileCSRCS = \ $(GFXSRC) \ $(STMHAL)/Src/stm32f7xx_hal_flash.c \ $(STMHAL)/Src/stm32f7xx_hal_flash_ex.c \ $(STMHAL)/Src/stm32f7xx_hal_dma.c \ $(STMHAL)/Src/stm32f7xx_hal_i2c.c \ $(STMHAL)/Src/stm32f7xx_hal_ltdc.c \ main.c \ _sbrk.c# Here we add all *.cpp files that we want to compileCPPSRCS = # Here we add all *.s files that we want to compile (Don't include startup file)ASSRCS =# Here we add the paths to all include directoriesINCS = \ $(GFXINC) \ .# here we add the paths to all custom librariesLIBDIRS =# here we add librariesLIBS = $(GFXLIBS)# StartUp file#STARTUP = startup_stm32f746xx.s# Linker script#LDSCRIPT = stm32f746nghx_flash.ld# The controller typeCONTROLLER = STM32F746xx# MCU flagsMCUFLAGS = -mthumb -mcpu=cortex-m7# Should a map file be generated? (yes / no)GENERATE_MAP = no# The following variables hold binaries and settingsARCH = arm-none-eabiAS = $(ARCH)-gccLD = $(ARCH)-gcc CC = $(ARCH)-gccCPPC = $(ARCH)-g++SIZE = $(ARCH)-sizeOBJCOPY = $(ARCH)-objcopyASFLAGS = -ggdb -WallCFLAGS = -ggdb -Wall -std=c99CPPFLAGS = -ggdb -WallLDFLAGS += -lnosys -fno-exceptions -fdata-sections################################################################################# Don't change anything below this line ################################################################################## Some directory and file magicBUILDDIR = buildOBJDIR = $(BUILDDIR)/objMAPFILE = $(BUILDDIR)/$(TARGET).mapDEPDIR = $(BUILDDIR)/depSRCFLAGS += -MMD -MP -MF $(DEPDIR)/$(@F:.o=.d)# Add the startup fileASSRCS += $(STARTUP)# Generate the object namesOBJS = $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CSRCS:%.c=%.o))))OBJS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(ASSRCS:%.s=%.o))))OBJS += $(addprefix $(OBJDIR)/,$(addsuffix .o,$(basename $(CPPSRCS:%.cpp=%.o))))# Automate the inclusion pathsDEFS += $(GFXDEFS)CFLAGS += $(INCS:%=-I%) $(MCUFLAGS) -D$(CONTROLLER) $(DEFS:%=-D%) -DUSE_STDPERIPH_DRIVER $(SRCFLAGS)CPPFLAGS += $(INCS:%=-I%)LDFLAGS += $(LIBDIRS:%=-L%) $(INCS:%=-I%) $(LIBS) $(MCUFLAGS) -T$(LDSCRIPT)# Some user settings magicifeq ($(GENERATE_MAP), yes) LDFLAGS += -Wl,-Map=$(MAPFILE),--crefendif# This is the default target if the user does just calls 'make'all: build size# Build all the filesbuild: builddirs $(BUILDDIR)/$(TARGET).elf $(BUILDDIR)/$(TARGET).bin $(BUILDDIR)/$(TARGET).hex# Create the required directories (if not already existing)builddirs: @mkdir -p $(BUILDDIR) @mkdir -p $(OBJDIR) @mkdir -p $(DEPDIR)# Create the *.bin$(BUILDDIR)/%.bin: $(BUILDDIR)/$(TARGET).elf @$(OBJCOPY) -O binary $< $@# Create the *.hex$(BUILDDIR)/%.hex: $(BUILDDIR)/$(TARGET).elf @$(OBJCOPY) -O ihex $< $@# Link everything together to a *.elf file$(BUILDDIR)/$(TARGET).elf: $(OBJS) @echo Linking $@ @$(LD) $(LDFLAGS) -o $(BUILDDIR)/$(TARGET).elf $(OBJS)# Compile assembly files$(OBJDIR)/%.o: %.s @mkdir -p $(dir $@) @echo Compiling $< @$(AS) $(ASFLAGS) -c -o $@ $<# Compile c files$(OBJDIR)/%.o: %.c @mkdir -p $(dir $@) @echo Compiling $< @$(CC) $(CFLAGS) -c -o $@ $<# Compile cpp files$(OBJDIR)/%.o: %.cpp @mkdir -p $(dir $@) @echo Compiling $< @$(CPPC) $(CPPFLAGS) -c -o $@ $<# Print size informationsize: $(BUILDDIR)/$(TARGET).elf @echo @echo $(SIZE) $^ @echo $(FOO)-include $(shell mkdir -p $(DEPDIR) 2>/dev/null) $(wildcard $(DEPDIR)/*)# Clean upclean: @rm -fR $(BUILDDIR) @echo Done# Clean must be a phony target so make knows this never exists as a file.PHONY: cleanChanges to do to your sourcecode:Include the _sbrk.c file as given some posts above (not required to work though, just fix the source list accordingly)In main.c, remove the _init() function.That should be everything... except I forgot something which you should find out very quick Explanation of the changes:[cpu_stm32m7.mk]:I changed -mfpu=fpv4-sp-d16 to -mfpu=fpv5-sp-d16, as suggested some posts before.[board.mk]Here I included the cpu specific makefile and specified the startup assembly file as STARTUP, not GFXSRC[Makefile]First, I adjusted some missing/misspelled variables. OPT_OS was missing, HAL changed to STMHAL, GFXBOARD was missing, CSRCS and INCS had some double items, which were also defined in board.mk and STARTUP and LDSCRIPT are defined in board.mk. Further down I added the GFXDEFS to DEFS and applied all DEFS as defines to CFLAGS.I changed clean to the bitbucket version, because the command resulted in some errors and didn't do anything on my laptop. And as a last point I added the dependency guard. Edited February 4, 2016 by Guest
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now