Commit Graph

153 Commits (refactor_hal_greentea_cmake)

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
ale87jan 2d492e1166
Update MAX3263x.sct 2019-05-28 12:02:51 +02:00
Deepika 8c63dbeb31 Target_Maxim: Setup heap limit and size 2019-02-19 15:49:49 -06:00
Russ Butler 8669417e7b Add HAL API for spi pinmap
Add the functions to get spi pinmaps to all targets.
2019-02-08 09:10:37 -06:00
Russ Butler 34c176654d Add HAL API for serial pinmap
Add the functions serial_tx_pinmap, serial_rx_pinmap, serial_cts_pinmap
and serial_rts_pinmap to all targets.
2019-02-08 09:10:28 -06:00
Russ Butler be492fe07a Add HAL API for pwmout pinmap
Add the function pwm_pinmap to all targets.
2019-02-08 09:10:19 -06:00
Russ Butler 22a89773fa Add HAL API for i2c pinmap
Add the functions i2c_master_sda_pinmap, i2c_master_scl_pinmap,
i2c_slave_sda_pinmap and i2c_slave_scl_pinmap to all targets.
2019-02-08 09:10:12 -06:00
Russ Butler 3bd3aca6db Add HAL API for analog out pinmap
Add the function analogout_pinmap to all targets.
2019-02-08 09:10:05 -06:00
Russ Butler 4818f88d73 Add HAL API for analog in pinmap
Add the function analogin_pinmap to all targets.
2019-02-08 09:09:51 -06:00
Ben Cooke 95a050bb6e Add FLASH support to TARGET_MAX32620C MCU and derivative platform targets 2019-01-15 10:59:56 -06:00
Przemyslaw Stekiel 6d1d08b660 [Maxim] Support boot stack size configuration option 2019-01-08 15:32:03 +01:00
Alastair D'Silva aa80b7c70a Don't use define checks on DEVICE_FOO macros (partner code)
The DEVICE_FOO macros are always defined (either 0 or 1).

This patch replaces any instances of a define check on a DEVICE_FOO
macro with value test instead.

Signed-off-by: Alastair D'Silva <alastair@d-silva.org>
2018-12-20 20:02:29 +11:00
Deepika a6997ab970 Maxim: Fix alignment of execute region to 8-byte boundary
--legacyalign, --no_legacyalign are deprecated from ARMC6 compiler, in order to
remove deprecated flags all linker files (GCC and IAR as well to have uniformity)
should strictly align to 8-byte boundary
2018-10-09 10:15:07 -05:00
Cruz Monrreal 8e25d2d905
Merge pull request #7669 from SigmaDeltaTechnologiesInc/master
SDT64, 8195, 32620, 32625, 51822, 52832B added to targets
2018-08-17 11:10:12 -05:00
Cruz Monrreal 54f40a0f4f
Merge pull request #7523 from maximmbed/max32625pico-bl-updates
Add bootloader configuration parameters for MAX32625PICO
2018-08-09 19:06:30 -05:00
Jiwon Yune 04fc7aa36f Generic pin names added 2018-08-06 14:50:19 +01:00
Jiwon Yune 0634be8b5f SDT32625B added 2018-08-01 18:18:31 +09:00
Jiwon Yune df3afa7b57 SDT32620B added 2018-08-01 18:17:16 +09:00
Przemyslaw Stekiel c0ee843d63 Add lp/us ticker_free() functions stub.
This patch adds only empty stubs of `us_ticker_free()` and `lp_ticker_free()` for all boards where these functions are not implemented.
2018-07-25 08:58:38 +02:00
Keyur Hariya ed94e6aa35 Add bootloader configuration parameters for MAX32625PICO and rework targets.json 2018-07-16 18:26:51 -05:00
Keyur Hariya 762cafc2e1 Rename files to fix warning
"aes.c" file name conflict in Maxim platform and mbedtls.
2018-06-18 16:46:18 -05:00
Jesse Marroquin 11d418b749 mbed-os v5.9 RTC implementation 2018-05-25 13:06:56 -05:00
Martin Kojtal e1fc81dc41 max32600: fix lp ticker functions - do not inline
Wrong linkage specified, causing build to fail.
2018-05-25 13:04:23 -05:00
Martin Kojtal 6781ee88cd maxim: fix rtc if lp ticker not defined
lp ticker handler defined only if lp ticker is defined. In case not,
use only overflow, rtc0 not used.
2018-05-25 13:04:23 -05:00
Jesse Marroquin 0ddec48efc mbed-os v5.9 LPTICKER implementation 2018-05-25 12:33:42 -05:00
Jesse Marroquin b88329acb8 mbed-os v5.9 USTICKER implementation 2018-05-25 12:33:42 -05:00
Keyur Hariya fcd1bc9e37 Add default defines for MAX32625PICO 2018-05-07 16:30:57 -05:00
Keyur Hariya 04ae15a154 Declare and call low_level_init funtion 2018-05-03 10:57:38 -05:00
Keyur Hariya 3969d85feb [MAX32625PICO] Add new platform
This platform is available with or without Bootloader.
2018-05-03 10:57:38 -05:00
Keyur Hariya ca4937d40d Add support for open drain leds 2018-04-30 15:27:07 -05:00
Keyur Hariya fc7c70dbc6 Fix the initialization of a structure 2018-04-24 11:13:19 -05:00
Keyur Hariya 0ca1a61ba0 Remove the redundant input parameter 2018-04-23 16:37:55 -05:00
Keyur Hariya 1f0809a56b Add the missing input parameter 2018-04-23 16:37:55 -05:00
Keyur Hariya 85bc74cc1d Fix the return type to allow returning error 2018-04-23 16:37:55 -05:00
Keyur Hariya 11cf79ecb0 Add type cast 2018-04-23 16:37:55 -05:00
Keyur Hariya 3e7a909265 Remove automatic I2C stop after each read
Automatic stop prevents sending repeated start.
2018-04-19 13:20:14 -05:00
Cruz Monrreal df5119677a
Merge pull request #6607 from maximmbed/max32630-fix-spi
Improve SPI block write
2018-04-17 10:55:00 -05:00
Cruz Monrreal 63412bbe1d
Merge pull request #6605 from maximmbed/max32625-rework-ticker
Rework us_ticker and rtc_api/lp_ticker | Fix compiler warning for spi_api
2018-04-16 10:39:11 -05:00
Cruz Monrreal b630691fdf
Merge pull request #6606 from maximmbed/max32630-fix-i2c
Fix I2C master
2018-04-16 10:38:10 -05:00
Keyur Hariya b08c752fcd Fix indentation 2018-04-13 15:20:00 -05:00
Keyur Hariya 16d38895d3 Improve SPI block write
Replace looping construct with actual block writes.
Transaction in spi_master_block_write funtion is protected by critical
section to ensure it is completed without interruption. A hardware
limitation may cause data corruption if the TX fifo is allowed to run
empty.
2018-04-13 15:14:10 -05:00
Keyur Hariya b594ec20b8 Fix compiler warning for spi_api
Add mbed_critical include file to disable compiler warning messages.
2018-04-12 12:52:55 -05:00
Keyur Hariya 098c2cf756 Rework us_ticker and rtc_api/lp_ticker
Simplify tickers to stop emulating 1us ticks by using native timer resolutions.
Implement ticker get info functions.
Separate rtc and lp ticker init status by implementing separate functions.
2018-04-12 12:52:05 -05:00
Keyur Hariya 278707518c Revert "Rework us_ticker and rtc_api/lp_ticker | Fix compiler warnings for spi_api"
This reverts commit 840246a4d5.
2018-04-12 12:51:05 -05:00
Keyur Hariya 534f570b0c Rework us_ticker and rtc_api/lp_ticker
Simplify tickers to stop emulating 1us ticks by using native timer resolutions.
Implement ticker get info functions.
Separate rtc and lp ticker init status by implementing separate functions.
2018-04-11 16:16:09 -05:00
Keyur Hariya e802b255be Remove automatic I2C stop after each read
Automatic stop prevents sending repeated start.
2018-04-11 15:07:52 -05:00
Keyur Hariya 840246a4d5 Rework us_ticker and rtc_api/lp_ticker | Fix compiler warnings for spi_api
Simplify tickers to stop emulating 1us ticks by using native timer resolutions.
Implement ticker get info functions.
Separate rtc and lp ticker init status by implementing separate functions.
Add mbed_critical include file to disable compiler warning messages.
2018-04-11 15:02:11 -05:00
Keyur Hariya 2bb78d433f Fix assembly file extension 2018-04-04 10:32:46 -05:00
Keyur Hariya da96c56d90 [MAX32620C] Add new target 2018-03-28 16:39:09 -05:00
Cruz Monrreal 2e69ddd989
Merge pull request #6202 from maximmbed/fix-max32625mbed
Fix max32625mbed
2018-03-06 20:41:10 -06:00
Keyur Hariya 390ba4070c Replace enable/disable irq with critical section enter/exit 2018-02-26 12:35:07 -06:00
Keyur Hariya e6d901a852 Remove automatic I2C stop after each read
Automatic stop prevents sending repeated start.
2018-02-23 16:36:30 -06:00
Keyur Hariya dcf3b904d1 Enable ADC scaling and enable internal channels
Increases input range by 2x(now, 0-2.4v)
2018-02-23 16:36:30 -06:00
Keyur Hariya 992c889b33 Improve us ticker performance
Improves accuracy during heavy work load.
2018-02-23 16:32:30 -06:00
Keyur Hariya 80b0ae0d9e Improve SPI block write
Replace looping construct with actual block writes.
2018-02-23 16:32:12 -06:00
Keyur Hariya 8d778d5d8b Fix missing serial object for interrupts
Save serial objects when setting interrupt requests.
Improve uart interrupt handler.
2018-02-23 16:25:20 -06:00
Martin Kojtal 2661f6fe40 us ticker: fix fire interrupt handling
Few targets need more than just pending IRQ set. They include some flags to be
set that are checked in IRQ handler. This is the case for targets in this
commit.
2018-02-23 09:13:40 +01:00
Bartek Szatkowski c5a5438256 Update params in calls to LD/STREXW to be uint32_t 2017-11-10 09:53:42 +00:00
Jimmy Brisson 15a9a0382b Enable Compiling with ARMC6 across all targets
remove duplicate sys.cpp
2017-09-11 13:20:32 -05:00
Jimmy Brisson 66c3385727 Merge pull request #4398 from maximmbed/max326xx_ble_update
MAX326xx: BLE updates, fixed sleep, open-drain LEDs
2017-07-31 15:23:47 +00:00
Jimmy Brisson 1f94ede86c Merge pull request #4744 from deepikabhavnani/spi_issue_4743
Allow user to set default transfer byte for block read
2017-07-24 14:45:30 -05:00
Jimmy Brisson 742d98a9ed Merge pull request #4696 from pan-/max32630_fix_uart
Max32630 UART: Fix IRQ dispatching and CTS/RTS line configuration
2017-07-24 10:46:36 -05:00
Deepika 1b797e9081 Closed review comments
1. Doxygen and Grammar related
2. Change dummy to spi_fill
3. Remove NXP driver and add default loop in spi block read (same as all
other drivers)
2017-07-21 09:46:22 -05:00
Jesse Marroquin 3a4138369d Update BLE, fix sleep and open-drain LEDs in MAX326xx
MAX32630FTHR gets BLE, uses timer peripheral 5 for HCI timing
libexactLE update for 610,620
Fixup hal_sleep and hal_deepsleep for 620
LEDn outputs now forced to open-drain
2017-07-14 17:36:56 -05:00
Martin Kojtal 10ea63b8e7 Ticker: add fire interrupt now function
fire_interrupt function should be used for events in the past. As we have now
64bit timestamp, we can figure out what is in the past, and ask a target to invoke
an interrupt immediately. The previous attemps in the target HAL tickers were not ideal, as it can wrap around easily (16 or 32 bit counters). This new
functionality should solve this problem.

set_interrupt for tickers in HAL code should not handle anything but the next match interrupt. If it was in the past is handled by the upper layer.

It is possible that we are setting next event to the close future, so once it is set it is already in the past. Therefore we add a check after set interrupt to verify it is in future.
If it is not, we fire interrupt immediately. This results in
two events - first one immediate, correct one. The second one might be scheduled in far future (almost entire ticker range),
that should be discarded.

The specification for the fire_interrupts are:
- should set pending bit for the ticker interrupt (as soon as possible),
the event we are scheduling is already in the past, and we do not want to skip
any events
- no arguments are provided, neither return value, not needed
- ticker should be initialized prior calling this function (no need to check if it is already initialized)

All our targets provide this new functionality, removing old misleading if (timestamp is in the past) checks.
2017-07-13 12:23:25 +01:00
Vincent Coubard bf419ca1b3 Max32630 UART: Fix P5_5 mapping. 2017-07-11 17:53:58 +01:00
Vincent Coubard 004d01d1b5 MAX32630: Apply correct configuration for CTS/RTS lines. 2017-07-03 17:02:43 +01:00
Vincent Coubard 5157c7b622 MAX32630: clear uart interrupt flag prior to handler call. 2017-07-03 16:39:29 +01:00
Vincent Coubard 253de5286d MAX32630: Map UART IRQ to serial object.
Before this change none of the IRQ set would be dispatch to the actual serial object.
2017-07-03 16:35:19 +01:00
Sam Grove 5f138810a9 Merge pull request #4294 from ARMmbed/feature_cmsis5
Update CMSIS-Core and RTX to version 5
2017-06-02 23:44:32 -05:00
Bartek Szatkowski 85cc9c8381 Remove deprecated RTX4 config options 2017-05-30 18:55:55 +01:00
Bartek Szatkowski b793a3fb89 Update codebase for CMSIS5/RTX5
Update all of mbed-os to use RTX5.
2017-05-30 18:55:52 +01:00
Bartek Szatkowski b97ffe8fdc CMSIS5: Replace target defined NVIC_Set/GetVector with CMSIS implementation 2017-05-30 18:55:51 +01:00
Christopher Haster c1de19e49e spi: Added default spi_master_block_write implementation to all targets
There is an easy default implementation of spi_master_block_write that
just calls spi_master_write in a loop, so the default implementation
of spi_master_block_write has been added to all targets.
2017-05-25 12:04:58 -05:00
Martin Kojtal d4bab30923 MAX32630FTHR: Fix NVIC_SetVector type in HAL
Change the irq_handler parameter of NVIC_SetVector from a function
pointer to a uin32_t so it matches the cmsis specification. This
prevents the following problem from occurring in RTX5 when building
for IAR:
The error: Error[Pe167]: argument of type "void (*)(void)" is incompatible
with parameter of type "uint32_t".
2017-05-11 18:09:58 -05:00
Kevin Gilbert 418d83b6c2 Addressed review comments: fixed unmapped switches and added Hexiware buttons 2017-05-02 12:20:05 -05:00
Kevin Gilbert 28d1ac5a44 Added mapping to USER_BUTTON-labelled switches
Revert HRM1017 file source deletion

Added in small comment next to additions

Added mapping to BTN-labelled switches

Added mapping to USER_BUTTON-labelled switches

Undo incorrect mapping to SWIO pin in NORDIC target
2017-04-28 11:37:23 -05:00
Kevin Gilbert 77cc87b050 Adding consistent button pin mappings 2017-04-27 18:42:47 -05:00
Bartek Szatkowski 4cd6068b73 MAX32630: Fix sleep definitions 2017-04-10 11:40:04 +01:00
0xc0170 801708b594 Maxim 3630: define LED4 same as LED1 2017-01-27 11:10:53 +02:00
Martin Kojtal 15cd3da4ba Merge pull request #3640 from maximmbed/max32630
MAX32630FTHR: Adding new platform
2017-01-27 11:01:03 +02:00
Jesse Marroquin dddcf76b3e [MAX32630FTHR] Adding new platform 2017-01-24 15:48:19 -06:00
Bartek Szatkowski 6a045a49a9 Platform: Add sleep/deepsleep user facing functions
Add sleep/deepsleep functions to platform layer which are replacing HAL
functions with the same name, rename existing symbols in HAL layer
to hal_sleep/hal_deepsleep. This way sleep functions
are always available, even if target doesn't implement them, which makes
the code using sleep clearer. It also enables us to make decision on in
which builds (debug/release) the sleep will be enabled.
2017-01-19 09:39:29 +00:00
Kevin Gillespie a0243cd852 [MAX32620] Fixing serial readable function. 2016-12-07 10:23:26 -06:00
Brian Daniels f6e79cb111 Fixing invalid comment notation in assembly file 2016-11-09 12:09:09 -06:00
Brian Daniels 52dc7c5423 Renames all prebuilt binaries to be prefixed with 'lib'
This fixes an issue with make_iar, since IAR requires all libraries that
are linked to be prefixed with 'lib'.
2016-11-09 11:08:01 -06:00
Jeremy Brodt 722e89784c [MAX32625] Prevent serial activity if tx/rx pin is NC. 2016-11-01 09:46:51 -05:00
Jeremy Brodt 0784f0315c [MAX32625MBED] Adding new Maxim Integrated target. 2016-11-01 09:46:51 -05:00
Jeremy Brodt 1e5466a114 [MAX32625NEXPAQ] Adding new Maxim Integrated target. 2016-11-01 09:46:51 -05:00
Jeremy Brodt b4e2339223 [MAX326xx] Reduced stack/heap size due to mbed test failures. 2016-10-12 09:07:03 -05:00
Jeremy Brodt 4858f3112d [MAXWSNENV] Updated BLE library and stack/heap size. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 98dd41988b [MAX32620HSP] Reduced system clock speed due to SPI issue. 2016-10-12 08:59:38 -05:00
Jeremy Brodt d535180784 [MAX326xx] Added support for FEATURE_BLE. Integrated MaximBLE library. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 7e99a75f1d [MAX32620HSP] Fixed deepsleep issue using IAR. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 5a34a2b91d [MAX326xx] Increased default stack and heap sizes. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 87d2b89750 [MAX32620HSP] Updated BLE libraries. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 24e4d83357 [MAX326xx] Fixed default handler implementations for ARM and IAR. 2016-10-12 08:59:38 -05:00
Jeremy Brodt 240d721f0b [MAX326xx] Fixed SysTick_Handler name. 2016-10-12 08:59:38 -05:00
Kevin Gillespie 0611885832 [MAX32620HSP] Cleanup with formatting script. 2016-10-12 08:59:38 -05:00