Skip to content

[STM32F7xx] update cube hal to v1.4, adding NUCLEO_F767 #1833

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 119 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
119 commits
Select commit Hold shift + click to select a range
7876749
Added CAN API for STM32F3xx family
BartSX Apr 19, 2016
656d195
[NUCLEO_F334R8] Added CAN support
BartSX Apr 19, 2016
9a78b01
[NUCLEO_F303RE] Added CAN support
BartSX Apr 19, 2016
347a5e6
[NUCLEO_F303K8] Added CAN support
BartSX Apr 19, 2016
f1c42bf
[NUCLEO_F302R8] Added CAN support
BartSX Apr 19, 2016
61e2296
Fix NXP LPCxxxx i2c_start() handling of repeated start
adamgreen May 25, 2016
709f479
hal - adding doxygen documentation
0xc0170 May 25, 2016
04e4c6a
k64f - mac address - fix warnings - get UID via K64F SIM macros
0xc0170 May 27, 2016
d8935bb
Misc fixes for LPC4088/LPC4088DM:
lindvalla May 30, 2016
cc34a7b
Provide initial RTOS support for EFM32 targets
stevew817 May 30, 2016
f327de0
STM32Cube_FW_F0_V1.5.0
May 30, 2016
7f88761
[STM32F0] Init daylight saving time
May 27, 2016
0180125
Adopt Callback class in rtos Threads
geky May 15, 2016
617caf6
Added all symbols to assembler (not just FPU_PRESENT=1). Removed unus…
lindvalla Jun 1, 2016
b1accd3
Fix stack size on EFM32 RTOS tests to avoid heap overflow
stevew817 Jun 1, 2016
e079c2e
Added support for Callback to Thread lifetime
geky Jun 1, 2016
3f7fbe6
Added useful attributes supported by supported compilers
geky May 16, 2016
4c7a4de
Added MBED prefix to attributes
geky May 25, 2016
b7bcb93
Fix backwards compatibility for WEAK/PACKED attributes
geky May 26, 2016
a08d04c
Fixed typo in FORCEINLINE definition on IAR
geky May 26, 2016
5cdb151
Changed MBED_PACKED to a macro
geky Jun 1, 2016
2d4c6b7
[STM32F7] update Cube driver to v1.4.0
ohagendorf Jun 1, 2016
b3852b2
[STM32F7] update target specific files
ohagendorf Jun 1, 2016
3378828
[NUCLEO_F767ZI] adding new target
ohagendorf Jun 1, 2016
33b33c5
[NUCLEO_F7xx] adding both targets to travis build
ohagendorf Jun 1, 2016
5df96fb
Merge pull request #1815 from stevew817/feature/rtos_support_efm32
0xc0170 Jun 2, 2016
0015943
Remove RTOS support for EFM32 Zero Gecko because of too little RAM
stevew817 Jun 2, 2016
d14fc7f
Forgot to remove ZG RTOS from the automated build...
stevew817 Jun 2, 2016
7643399
Merge pull request #1835 from stevew817/feature/rtos_support_efm32
0xc0170 Jun 2, 2016
92e8d48
[NUCLEO_F7xx] typo in target names for travis build
ohagendorf Jun 2, 2016
f68cdcb
Merge pull request #1802 from theotherjimmy/callback-rtos
0xc0170 Jun 2, 2016
5ac648f
Merge pull request #1762 from BartSX/can-devel-f3
0xc0170 Jun 3, 2016
ff7d7aa
Merge pull request #1776 from adamgreen/i2cRepeatedStartFix
0xc0170 Jun 3, 2016
c35a6f6
Modify serial nc tests init part
LMESTM May 25, 2016
05baf36
Synchronize host and target for nc serial auto test
LMESTM May 26, 2016
2a19ddc
Add lpc821 cocorico target
0xc0170 Jun 2, 2016
5764593
Merge pull request #1811 from lindvalla/lpc4088_misc_fixes
0xc0170 Jun 3, 2016
d3c14f6
[STM32L0XX] SlaveCounter type correction
svastm Jun 3, 2016
bddce7c
Merge pull request #1847 from svastm/pr_1743_continuation
0xc0170 Jun 3, 2016
000e04d
RTOS port for nrf51.
pan- May 27, 2016
96787cd
[NUCLEO_F446RE] Added CAN support
BartSX Apr 14, 2016
ce78144
[DISCO_F469NI] Added CAN support
BartSX Apr 27, 2016
766b5c2
[DISCO_F429ZI] Added CAN support
BartSX Apr 27, 2016
08733d1
[STM32F4] Update to cube V1.10.0
LMESTM May 20, 2016
8955b66
[STM32F4] Update to cube V1.11.0
LMESTM May 20, 2016
8e15a6c
[STM32F4][V1.11.0] Update serial_api.c to support new UART_HandleTypeDef
May 26, 2016
a9b27da
[STM32F4] Update Cube FW to V1.12.0
May 30, 2016
2afce67
[STM32F4][V1.12.0] SystemCoreClock update
May 31, 2016
e5a12ea
[STM32F4][DISCO-F429ZI] LSE not soldered. Use LSI RTC
May 31, 2016
7c29455
Merge pull request #1784 from geky/attributes
0xc0170 Jun 3, 2016
f3d547e
Merge pull request #1771 from BartSX/can-devel-f4
0xc0170 Jun 3, 2016
986225d
Merge pull request #1838 from egostm/dev_F4_V1.12.0
0xc0170 Jun 3, 2016
4e5fe30
[NUCLEO_L476RG, DISCO_L476VG]: GCC_ARM, ARM_STD fix RTOS failed,
jamike Jun 3, 2016
ca8ae5c
provided a scirpt for moving from device.h to target.json
theotherjimmy May 31, 2016
76e6c88
auto-formatted target.json
theotherjimmy Jun 1, 2016
2fe708d
added features support to all of the toolchains
theotherjimmy Jun 2, 2016
9cf3268
HUGE COMMIT WARNING device.h defines -> target.json features
theotherjimmy Jun 2, 2016
dbeee2a
added device MICRONFCBOARD's provides to targets.json
theotherjimmy Jun 2, 2016
ff11e7f
updated readme to include a basic description of features.
theotherjimmy Jun 2, 2016
66574aa
made features a first class citizen
theotherjimmy Jun 3, 2016
d1ec4be
Merge pull request #1830 from theotherjimmy/device-h-to-target-json
0xc0170 Jun 4, 2016
c0a6c7c
Better generation of heap section.
pan- Jun 5, 2016
39a459f
Port RTOS tests to nrf51.
pan- Jun 5, 2016
c854d01
Build RTOS tests on nrf51 based targets.
pan- Jun 5, 2016
e46b659
Merge branch 'master' of https://github.com/mbedmicro/mbed into nrf51…
pan- Jun 5, 2016
f3b1d45
Add functions for atomic access
c1728p9 Jun 1, 2016
47e2e09
Merge pull request #1843 from c1728p9/atomic_access
0xc0170 Jun 6, 2016
8b44c0d
Added CAN API for STM32F1xx family.
BartSX Apr 21, 2016
6e77543
[NUCLEO_F103RB] Added CAN support
BartSX Apr 21, 2016
859ae4c
Merge pull request #1772 from BartSX/can-devel-f1
0xc0170 Jun 6, 2016
19f0c58
Added CAN API for STM32F7xx family
BartSX Apr 21, 2016
b5c4faf
Critical section - fix for cortex-a
0xc0170 Jun 6, 2016
4d22e94
[NUCLEO_F746ZG] Added CAN support
BartSX Apr 21, 2016
bafd20f
[DISCO_F746NG] Added CAN support
BartSX Apr 21, 2016
cb24e38
Merge pull request #1856 from 0xc0170/fix_critical_cortexa
0xc0170 Jun 6, 2016
55a35f9
Use attributes from toolchain.h instead of compiler specific declarat…
pan- Jun 6, 2016
415521f
Merge pull request #1773 from BartSX/can-devel-f7
0xc0170 Jun 6, 2016
0d3c835
Merge pull request #1846 from jamike/fix-issue-1845
0xc0170 Jun 6, 2016
7a262f1
Added CAN API for STM32L4xx family
BartSX Apr 20, 2016
155d38e
[DISCO_L476VG] Added CAN support
BartSX Apr 20, 2016
10cce63
[NUCLEO_L476RG] Added CAN support
BartSX May 18, 2016
f2c824c
[NUCLEO_F103RB] Revert and update path for 16-bit timer
BartSX Jun 6, 2016
32075c3
added extra_labels_add checking to script
theotherjimmy Jun 6, 2016
88fbfac
Merge pull request #1859 from theotherjimmy/device-h-to-target-json
0xc0170 Jun 6, 2016
fc9bd4c
Merge pull request #1858 from BartSX/f103
0xc0170 Jun 6, 2016
be81d02
[NUCLEO_F767] adding gccarm and uvision5 exporter
ohagendorf Jun 6, 2016
02ce61d
Merge pull request #1774 from BartSX/can-devel-l4
0xc0170 Jun 7, 2016
ca59e86
Add call to SystemCoreClockUpdate() and Reset peripheral before init …
bcostm Jun 7, 2016
2460907
Merge pull request #1778 from 0xc0170/dev_hal_doxy
0xc0170 Jun 7, 2016
ec81bcc
Fix support for InterruptManager on KSDK 2
c1728p9 Jun 6, 2016
6455389
Merge pull request #1860 from c1728p9/fix_interrupt_manager
0xc0170 Jun 7, 2016
4afc14d
Merge pull request #1781 from LMESTM/fix_MBED_37_Init
0xc0170 Jun 7, 2016
4651075
introduce the CMSIS Storage driver and its implementation for K64F
Jun 7, 2016
02bb0df
Merge pull request #1797 from 0xc0170/dev_k64f_hal_additions
0xc0170 Jun 7, 2016
c58198e
Remove setbuf from rtos tests.
pan- Jun 7, 2016
5562f9a
[STM32] Move CAN device.h defines to targets.json
BartSX Jun 8, 2016
a169d6c
Merge pull request #1874 from BartSX/can-st-json
0xc0170 Jun 8, 2016
847d3aa
Fix for Issue# 1834 (#1871)
mmahadevan108 Jun 8, 2016
6cd41fd
Add UVISOR_SUPPORTED to the K64F based targets
Jun 8, 2016
9947072
Merge pull request #1875 from mbedmicro/add_uvisor_flag
0xc0170 Jun 8, 2016
b368c4a
Add a K64F target with uVisor enabled
Jun 8, 2016
0a9bba4
rename intermediate folder from "storage-abstraction" to "storage_abs…
Jun 8, 2016
83aec2d
Merge pull request #1877 from mbedmicro/change_uvisor_flag
0xc0170 Jun 8, 2016
0986c54
guard code within DEVICE_STORAGE
Jun 8, 2016
93564b6
add a missing extern to a global declaration of a status register
Jun 8, 2016
00feaa0
adding STORAGE to the list of device features for K64F
Jun 8, 2016
c9a15d0
Merge pull request #1854 from pan-/nrf51_port
0xc0170 Jun 8, 2016
5c60eb6
Merge pull request #1867 from rgrover/master
0xc0170 Jun 8, 2016
d7a196e
Merge pull request #1826 from jeromecoutant/PR_UpdateF0_driver_v1_5_0
0xc0170 Jun 8, 2016
c4833fa
[STM32F7] update Cube driver to v1.4.0
ohagendorf Jun 1, 2016
bc8baf7
[STM32F7] update target specific files
ohagendorf Jun 1, 2016
6dd5158
[NUCLEO_F767ZI] adding new target
ohagendorf Jun 1, 2016
e77fbbb
[NUCLEO_F7xx] adding both targets to travis build
ohagendorf Jun 1, 2016
a137627
[NUCLEO_F7xx] typo in target names for travis build
ohagendorf Jun 2, 2016
261653c
[NUCLEO_F767] adding gccarm and uvision5 exporter
ohagendorf Jun 6, 2016
0efc548
[NUCLEO_F767] rebase and adding ARM_STD config, all F7 use ARM as def…
ohagendorf Jun 8, 2016
9f0c5ef
Merge branch 'stm32f7cube' of https://github.com/ohagendorf/mbed into…
ohagendorf Jun 8, 2016
456d034
Merge pull request #3 from bcostm/pr/n1833_ohagendorf
ohagendorf Jun 8, 2016
135e62a
[NUCLEO_F767] rename feature to device_has in new target
ohagendorf Jun 9, 2016
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions docs/mbed_targets.md
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,13 @@ The list of **labels** defines how the build system looks for sources, libraries

If target inheritance is used, it's possible to alter the values of `extra_labels` using `extra_labels_add` and `extra_labels_remove`. This is similar to the `macros_add` and `macros_remove` mechanism described in the previous paragraph.

## features, features_add, features_remove

The list of **features** defines what hardware a device has.
This allows allowing mbed, libraries, or application source code to select between different implementations of drivers based on hardware availability, to selectively compile drivers for only the hardware that exists, or to test only the tests that apply to a particular platform.

If target inheritance is used, it's possible to alter the values of `features` using `features_add` and `features_remove`. This is similar to the `macros_add` and `macros_remove` mechanism described in the previous two paragraphs.

## supported_toolchains

This is the list of toolchains that can be used to compile code for the target. The known toolchains are `ARM`, `uARM`, `GCC_ARM`, `GCC_CR`, `IAR`.
Expand Down
209 changes: 209 additions & 0 deletions hal/api/critical.h
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@
#ifndef __MBED_UTIL_CRITICAL_H__
#define __MBED_UTIL_CRITICAL_H__

#include <stdbool.h>

#ifdef __cplusplus
extern "C" {
#endif
Expand Down Expand Up @@ -48,6 +50,213 @@ void core_util_critical_section_enter();
*/
void core_util_critical_section_exit();

/**
* Atomic compare and set. It compares the contents of a memory location to a
* given value and, only if they are the same, modifies the contents of that
* memory location to a given new value. This is done as a single atomic
* operation. The atomicity guarantees that the new value is calculated based on
* up-to-date information; if the value had been updated by another thread in
* the meantime, the write would fail due to a mismatched expectedCurrentValue.
*
* Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect
* you to the article on compare-and swap].
*
* @param ptr The target memory location.
* @param[in,out] expectedCurrentValue A pointer to some location holding the
* expected current value of the data being set atomically.
* The computed 'desiredValue' should be a function of this current value.
* @Note: This is an in-out parameter. In the
* failure case of atomic_cas (where the
* destination isn't set), the pointee of expectedCurrentValue is
* updated with the current value.
* @param[in] desiredValue The new value computed based on '*expectedCurrentValue'.
*
* @return true if the memory location was atomically
* updated with the desired value (after verifying
* that it contained the expectedCurrentValue),
* false otherwise. In the failure case,
* exepctedCurrentValue is updated with the new
* value of the target memory location.
*
* pseudocode:
* function cas(p : pointer to int, old : pointer to int, new : int) returns bool {
* if *p != *old {
* *old = *p
* return false
* }
* *p = new
* return true
* }
*
* @Note: In the failure case (where the destination isn't set), the value
* pointed to by expectedCurrentValue is still updated with the current value.
* This property helps writing concise code for the following incr:
*
* function incr(p : pointer to int, a : int) returns int {
* done = false
* *value = *p // This fetch operation need not be atomic.
* while not done {
* done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success
* }
* return value + a
* }
*/
bool core_util_atomic_cas_u8(uint8_t *ptr, uint8_t *expectedCurrentValue, uint8_t desiredValue);

/**
* Atomic compare and set. It compares the contents of a memory location to a
* given value and, only if they are the same, modifies the contents of that
* memory location to a given new value. This is done as a single atomic
* operation. The atomicity guarantees that the new value is calculated based on
* up-to-date information; if the value had been updated by another thread in
* the meantime, the write would fail due to a mismatched expectedCurrentValue.
*
* Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect
* you to the article on compare-and swap].
*
* @param ptr The target memory location.
* @param[in,out] expectedCurrentValue A pointer to some location holding the
* expected current value of the data being set atomically.
* The computed 'desiredValue' should be a function of this current value.
* @Note: This is an in-out parameter. In the
* failure case of atomic_cas (where the
* destination isn't set), the pointee of expectedCurrentValue is
* updated with the current value.
* @param[in] desiredValue The new value computed based on '*expectedCurrentValue'.
*
* @return true if the memory location was atomically
* updated with the desired value (after verifying
* that it contained the expectedCurrentValue),
* false otherwise. In the failure case,
* exepctedCurrentValue is updated with the new
* value of the target memory location.
*
* pseudocode:
* function cas(p : pointer to int, old : pointer to int, new : int) returns bool {
* if *p != *old {
* *old = *p
* return false
* }
* *p = new
* return true
* }
*
* @Note: In the failure case (where the destination isn't set), the value
* pointed to by expectedCurrentValue is still updated with the current value.
* This property helps writing concise code for the following incr:
*
* function incr(p : pointer to int, a : int) returns int {
* done = false
* *value = *p // This fetch operation need not be atomic.
* while not done {
* done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success
* }
* return value + a
* }
*/
bool core_util_atomic_cas_u16(uint16_t *ptr, uint16_t *expectedCurrentValue, uint16_t desiredValue);

/**
* Atomic compare and set. It compares the contents of a memory location to a
* given value and, only if they are the same, modifies the contents of that
* memory location to a given new value. This is done as a single atomic
* operation. The atomicity guarantees that the new value is calculated based on
* up-to-date information; if the value had been updated by another thread in
* the meantime, the write would fail due to a mismatched expectedCurrentValue.
*
* Refer to https://en.wikipedia.org/wiki/Compare-and-set [which may redirect
* you to the article on compare-and swap].
*
* @param ptr The target memory location.
* @param[in,out] expectedCurrentValue A pointer to some location holding the
* expected current value of the data being set atomically.
* The computed 'desiredValue' should be a function of this current value.
* @Note: This is an in-out parameter. In the
* failure case of atomic_cas (where the
* destination isn't set), the pointee of expectedCurrentValue is
* updated with the current value.
* @param[in] desiredValue The new value computed based on '*expectedCurrentValue'.
*
* @return true if the memory location was atomically
* updated with the desired value (after verifying
* that it contained the expectedCurrentValue),
* false otherwise. In the failure case,
* exepctedCurrentValue is updated with the new
* value of the target memory location.
*
* pseudocode:
* function cas(p : pointer to int, old : pointer to int, new : int) returns bool {
* if *p != *old {
* *old = *p
* return false
* }
* *p = new
* return true
* }
*
* @Note: In the failure case (where the destination isn't set), the value
* pointed to by expectedCurrentValue is still updated with the current value.
* This property helps writing concise code for the following incr:
*
* function incr(p : pointer to int, a : int) returns int {
* done = false
* *value = *p // This fetch operation need not be atomic.
* while not done {
* done = atomic_cas(p, &value, value + a) // *value gets updated automatically until success
* }
* return value + a
* }
*/
bool core_util_atomic_cas_u32(uint32_t *ptr, uint32_t *expectedCurrentValue, uint32_t desiredValue);

/**
* Atomic increment.
* @param valuePtr Target memory location being incremented.
* @param delta The amount being incremented.
* @return The new incremented value.
*/
uint8_t core_util_atomic_incr_u8(uint8_t * valuePtr, uint8_t delta);

/**
* Atomic increment.
* @param valuePtr Target memory location being incremented.
* @param delta The amount being incremented.
* @return The new incremented value.
*/
uint16_t core_util_atomic_incr_u16(uint16_t * valuePtr, uint16_t delta);

/**
* Atomic increment.
* @param valuePtr Target memory location being incremented.
* @param delta The amount being incremented.
* @return The new incremented value.
*/
uint32_t core_util_atomic_incr_u32(uint32_t * valuePtr, uint32_t delta);

/**
* Atomic decrement.
* @param valuePtr Target memory location being decremented.
* @param delta The amount being decremented.
* @return The new decremented value.
*/
uint8_t core_util_atomic_decr_u8(uint8_t * valuePtr, uint8_t delta);

/**
* Atomic decrement.
* @param valuePtr Target memory location being decremented.
* @param delta The amount being decremented.
* @return The new decremented value.
*/
uint16_t core_util_atomic_decr_u16(uint16_t * valuePtr, uint16_t delta);

/**
* Atomic decrement.
* @param valuePtr Target memory location being decremented.
* @param delta The amount being decremented.
* @return The new decremented value.
*/
uint32_t core_util_atomic_decr_u32(uint32_t * valuePtr, uint32_t delta);

#ifdef __cplusplus
} // extern "C"
#endif
Expand Down
Loading