Commit Graph

17 Commits (4da93bf9796a16e2731e81c22c7d02b6ee2a2efd)

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
Maciej Bocianski fcde82ba4f HAL I2C: adds missing DEVICE_I2C guards 2019-06-19 23:08:55 +02:00
panyz0725@thundersoft.com e0eefaed99 Modifiying file PinNames.h 2019-05-27 11:02:43 +08:00
Martin Kojtal cfb107912b
Merge pull request #10616 from ThunderSoft123/master
Fix bug Operator new[] out of memory
2019-05-23 21:40:10 +01:00
panyz0725@thundersoft.com 6aeb048e62 Fixing bug error 0x8001011F 2019-05-22 14:18:28 +08:00
Martin Kojtal f859289634
Merge pull request #10489 from kjbracey-arm/gpio_api_nc
gpio_api.h: Clarify desired behaviour for NC
2019-05-21 14:36:49 +01:00
panyz0725@thundersoft.com a6c52d3865 Modify PinName file to keep correspondence with spec 2019-05-14 20:04:25 +08:00
Kevin Bracey e6e3614bd8 TT: Cope correctly with NC GPIO 2019-05-02 12:16:34 +03:00
panyz0725@thundersoft.com 1a1904644a Add api about I2C and SPI .... 2019-02-25 14:23:37 +08:00
panyz0725@thundersoft.com 3c1d938abf Add ARM_LIB_STACK to resolve CI Error 2019-02-25 11:03:32 +08:00
panyz0725@thundersoft.com 12e4adab99 Add USER_BUTTON and SPI in file PinNames.h 2019-02-25 11:03:32 +08:00
panyz0725@thundersoft.com 1dadab7e5a Add license in file cmsis_nvic.h 2019-02-25 11:03:32 +08:00
panyz0725@thundersoft.com db5d6963ef Modify license about file GPIO, SPI and system 2019-02-25 11:03:32 +08:00
panyz0725@thundersoft.com 217d2ce1fe Modify license 2019-02-25 11:03:31 +08:00
panyz0725@thundersoft.com ec9fd55c8f Update code 2019-02-25 11:03:31 +08:00
panyz0725@thundersoft.com 003a75bd26 Add "SPDX-License-Identifier: Apache-2.0" 2019-02-25 11:03:31 +08:00
panyz0725@thundersoft.com 7e265c81bd Add platform TT_M4G9 2019-02-25 11:03:31 +08:00