Ride7 is free software, but can only be used with Raisonance toolchains, and RLink debugging adapter for target. Code size is unlimited with RKit-arm Lite, only limited by RLink.
RLink Standard limits debugging of ARM core-based 32-bit devices is limited to 64 K bytes of code. Yet Flash programming size is unlimited. This is available as Mouser 511-STX-RLINK for $70.
RLink Professional permits unlimited debugging size, yet costs more than 7 times standard. Opentag code size is likely to be well under 64K.
Upon installation of these tools, Ride7 IDE should always be installed first, followed by the toolchain.
RKit-ARM may be authorized for use by registering using the serial number of RLink purchased within a year ago, otherwise you are limited to 7-day trial. This gives you one year of support from Raisonance. This installation might work forever, however if RKit-ARM is upgraded or Ride7 re-installed after the one-year period, you will need to purchase another year of support costing 49€.
This toolchain is supported by ST in its standard peripheral libraries, meaning that project template is provided for Ride7, as well as all examples in the standard peripheral libraries include Ride7 projects.
As with any GCC-based compiler, to place variables at a specific memory location,
__attribute__ ((section ("sectionname")))
is required as a variable modifier, along with corresponding section defined in linker script .ld file.
An example of this is currently in the Opentag dev branch in git, named
stm32L_flash_vl.ld, which places the veelite const data into EEPROM of STM32.
In this case, Ride7 will also program the EEPROM along with flash when you start debug session.
When specifying custom linker script in project properties, ensure filename only is specified (no path). Ride will pull linker script from project directory.
Compiler/linker settings for size optimization:
Adherence to general good practice, turn on warnings:
Other toolchains may be used with attention to the veelite const data attributes. Alternative toolchains supported by STM32L1xx peripheral library: