I've been trying to add a python submodule and in the last linking command it fails. I've made the module based on the mlx90620 submodule (code is inside omv/py, modded Makefiles, hooks added to omv/main.c, micropython/stmhal/qstrdefsport.h and micropython/stmhal/mpconfigport.h), The code has functions to init/deinit/read/write a 16-bit SPI interface. However, it overflows the ISR part of FLASH (first 16KB). I've been removing little bits of other code to see if that allows it to fit, but with no success so far. I didn't think these would take up so much room in the ISR region, is there something I'm missing? I'm using the gcc-arm-none-eabi=188.8.131.524q3-0trusty11 ARM version of gcc. Here are the last four lines of "make" in the src/ subdirectory:
arm-none-eabi-cpp -P -E -DOPENMV1 omv/stm32f4xx.ld.S > /home/ebeall/openmv/src/build/stm32f4xx.lds
arm-none-eabi-gcc -mcpu=cortex-m4 -mabi=aapcs-linux -mthumb -mlittle-endian -mfloat-abi=hard -mfpu=fpv4-sp-d16 -nostdlib -Wl,--gc-sections -Wl,-T/home/ebeall/openmv/src/build/stm32f4xx.lds <ALL THE COMPILED BITS> -o /home/ebeall/openmv/src/build/openmv.elf
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: /home/ebeall/openmv/src/build/openmv.elf section `.isr_vector' will not fit in region `FLASH_ISR'
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/bin/ld: region `FLASH_ISR' overflowed by 92 bytes
For a test, I changed the ISR_LENGTH to 17KB in omv/stm32f4xx.ld.S and it links/compiles fine, but from what I've read (https://github.com/micropython/micropython/issues/69
) it sounds like 16KB for ISR is a hard limit? Does anybody know what I'm doing wrong?