Commit Graph

33 Commits (mbed-os-5.15)

Author SHA1 Message Date
Kevin Bracey fb6aa3ef4f Clean up ARM toolchain heap+stack setup in targets
ARM Compiler 6.13 testing revealed linker errors pointing out
conflicting use of `__user_setup_stackheap` and
`__user_initial_stackheap` in some targets. Remove the unwanted
`__user_initial_stackheap` from the targets - the setup is
centralised in the common platform code.

Looking into this, a number of other issues were highlighted

* Almost all targets had `__initial_sp` hardcoded in assembler,
  rather than getting it from the scatter file. This was behind
  issue #11313. Fix this generally.
* A few targets' `__initial_sp` values did not match the scatter
  file layout, in some cases meaning they were overlapping heap
  space. They now all use the area reserved in the scatter file.
  If any problems are seen, then there is an error in the
  scatter file.
* A number of targets were reserving unneeded space for heap and
  stack in their startup assembler, on top of the space reserved in
  the scatter file, so wasting a few K. A couple were using that
  space for the stack, rather than the space in the scatter file.

To clarify expected behaviour:

* Each scatter file contains empty regions `ARM_LIB_HEAP` and
  `ARM_LIB_STACK` to reserve space. `ARM_LIB_STACK` is sized
  by the macro `MBED_BOOT_STACK_SIZE`, which is set by the tools.
  `ARM_LIB_HEAP` is generally the space left over after static
  RAM and stack.
* The address of the end of `ARM_LIB_STACK` is written into the
  vector table and on reset the CPU sets MSP to that address.
* The common platform code in Mbed OS provides `__user_setup_stackheap`
  for the ARM library. The ARM library calls this during startup, and
  it calls `__mbed_user_setup_stackheap`.
* The default weak definition of `__mbed_user_setup_stackheap` does not
  modify SP, so we remain on the boot stack, and the heap is set to
  the region described by `ARM_LIB_HEAP`. If `ARM_LIB_HEAP` doesn't
  exist, then the heap is the space from the end of the used data in
  `RW_IRAM1` to the start of `ARM_LIB_STACK`.
* Targets can override `__mbed_user_setup_stackheap` if they want.
  Currently only Renesas (ARMv7-A class) devices do.
* If microlib is in use, then it doesn't call `__user_setup_stackheap`.
  Instead it just finds and uses `ARM_LIB_STACK` and `ARM_LIB_HEAP`
  itself.
2019-10-23 14:53:49 +03:00
Leon Lindenfelser 7063ccee9e Add PA6 to ADC PeripheralPins for MTS_DRAGONFLY_L471QG 2019-08-28 13:12:08 +01:00
jeromecoutant 96a773a0e6 STM32L4: update drivers version to CUBE V1.14.0 2019-07-19 13:15:07 +02:00
Kevin Bracey a522dcfa0a Replace deprecated wait calls 2019-07-15 10:13:50 +03:00
Vincent Veron 31eb49b918 TARGET_STM: Add DEVICE_SPI_COUNT to use SPIs without interference
Extend to all STM targets the work done on PR10752.

Signed-off-by: Vincent Veron <vincent.veron@st.com>
2019-06-14 14:15:56 +02:00
jeromecoutant d919498745 STM32: common cmsis.h and device.h 2019-05-27 16:27:41 +02:00
Martin Kojtal 1de0712272
Merge pull request #9944 from deepikabhavnani/stm32_splitheap
GCC - Add support to split heap across 2-RAM banks
2019-04-30 11:02:51 +01:00
Deepika 1576fb0aaa Add support for split heap in ST devices 2019-04-09 12:08:49 -05:00
Deepika 36c7b2de86 uARM - Move heap region after IRAM1
ARM_LIB_HEAP start is aligned to IRAM1 end, hence should be placed next to
RW_IRAM1 i.e. no other region in between.
2019-04-09 12:01:01 -05:00
deepikabhavnani 0dc5561991 Guard RAM start and size defines 2019-02-28 19:54:38 -06:00
deepikabhavnani b598dc1f46 Target_STM: Add ARM_LIB_STACK and ARM_LIB_HEAP section
Instead of user defined symbols in assembly files or C files,
use linker scripts to add heap and stack - this is inconsistent
with ARM std linker scripts
2019-02-28 19:54:28 -06:00
Ari Parkkila 7578d5b174 Cellular: Fix mbed2-build of onboard-modems 2019-01-29 01:08:17 -08:00
Ari Parkkila af0d2cf61d Cellular: Update API description to match better onboard_modem_api 2019-01-22 02:24:45 -08:00
Ari Parkkila c4de2f2f0e Cellular: Power API updated to match onboard_modem_api 2019-01-22 02:24:45 -08:00
Ari Parkkila 269d151b12 Cellular: Default modem drivers with FF_ARDUINO 2019-01-22 02:24:45 -08:00
Ari Parkkila 75caa75a96 Cellular: Add get_target_default_instance in CellularDevice 2019-01-22 02:24:45 -08:00
Przemyslaw Stekiel 58f6bf7292 [STM] Support boot stack size configuration option 2019-01-08 15:32:06 +01:00
Leon Lindenfelser a360b0012f Update peripheral pins
1. Add missing SPI and I2C pins.
2. Remove pin definitions for pins that are no connects.
2018-11-06 08:46:38 -06:00
Leon Lindenfelser 9f9a85830f Configure IAR stack size to 1KB 2018-10-02 13:34:16 -05:00
Leon Lindenfelser a80b2369c3 Decrease heap size in IAR linker so tests compile and use SRAM2 for IAR and GCC 2018-09-26 15:39:42 -05:00
Leon Lindenfelser 5ff0eb9d92 Rebase and changes for Dragonfly nano support 2018-09-26 15:39:42 -05:00
Leon Lindenfelser 31d04b05b7 Rebased on master mbed-os 9/7/18
This required replacing hal_tick.h with us_ticker_data.h
2018-09-26 15:37:33 -05:00
Leon Lindenfelser 3bb8543e5b Remove commented out code 2018-09-26 15:37:33 -05:00
Leon Lindenfelser 55bcf93574 Fixed spacing/tabs and clean up targets.json 2018-09-26 15:37:33 -05:00
Leon Lindenfelser fad95e9a7d Fix rev D radio init/power/reset and add back bootloader capability 2018-09-26 15:37:33 -05:00
cedrick kukela 463182d372 REV D change for modem on 2018-09-26 15:37:33 -05:00
cedrick kukela 1064994095 Rev c pin name fix 2018-09-26 15:37:33 -05:00
cedrick kukela 7f29f837d1 remove blanks 2018-09-26 15:37:33 -05:00
cedrick kukela 56fa71cbd3 delete file 2018-09-26 15:37:33 -05:00
cedrick kukela 50254bcc61 change startup and s file names to match target 2018-09-26 15:37:33 -05:00
cedrick kukela 5e1bb381cd fixing onboard modem init bug on mts dragonfly l471 2018-09-26 15:37:32 -05:00
cedrick kukela e2e5d9ed43 Ublox and PinName fixes 2018-09-26 15:37:32 -05:00
cedrick kukela c18eef804e adding TARGET MTS_DRAGONFLY_L471QG 2018-09-26 15:37:32 -05:00