Commit Graph

26716 Commits (b9d824d67cb15cf43a205aa5c78336aaa2aaeecf)

Author SHA1 Message Date
Antti Kauppila 9d8969daa7 Small fixes and doxygen update 2019-06-04 10:41:16 +03:00
Przemyslaw Stekiel 869585a196 Ticker common layer: run interrupt reschedule if the inserted event has already expired.
On some platforms, if low power ticker interrupt is set to very close value (e.g. timestamp < current tick + 3), then interrupt may not fire. This is one use case of lp ticker wrapper, but not all platforms use the wrapper. Some platforms cheat a bit and in this case, simply schedules interrupt a bit later. The problem has been found while working on the low-level lp ticker wrapper for ST boards which run lp ticker using LPTIM. These platforms have such limitation.

Failing test: tests-mbed_drivers-lp_timeout (Test Case: Zero delay)

In the test scenarion, the lp ticker callback is attached with 0.0 s delay in the loop. The new events are put in the front of the lp ticker event list and interrupt reschedule is performed. Usually, the new event is already expired, interrupt fires immediately and next event from the list is then scheduled (e.g. system tick). When the next event (e.g. system tick) is very close to the current time it might be scheduled a bit later (because of lp ticker limitation). Let's assume that system tick has been delayed by 3 ticks and while inserting new zero delay event, absolute system tick time on the event list has already expired. In this case, zero delay event may be added after the expired system tick event and no reschedule is performed (because the head of the list has not changed). Interrupt also didn't fire yet since it has been delayed, so after return from attach_callback(0) we are still waiting for the delayed interrupt and zero delay callback has not been called instantly.

This may also affect other platforms which use such delays (Cypress, NORDIC, etc.).

The proposition is to add extra condition while adding an event to the event list. If the inserted event is already expired, then perform reschedule immediately.
2019-06-04 08:50:22 +02:00
Teijo Kinnunen 728c01f9e3 STM32L0: Add DEVICE_SPI_COUNT to DISCO_L072CZ_LRWAN1 + MTB_MURATA_ABZ
Enables simultaneous use of both SPIs without interference.
2019-06-04 09:38:20 +03:00
Qinghao Shi 31fc1e56f2 Examples: enable more tests for examples 2019-06-03 18:30:42 +01:00
Filip Jagodzinski 19272b7a1c Tests: ResetReason: Use the HAL watchdog API
The Watchdog driver has been updated making this test incompatible
with the new API. Use HAL API instead.
2019-06-03 16:32:15 +02:00
Filip Jagodzinski 93b01c79bb Tests: Watchdog: Add Watchdog Manager tests 2019-06-03 16:32:15 +02:00
Filip Jagodzinski 2dd5216ceb Tests: Watchdog: Remove outdated driver tests
The Watchdog driver has been updated making these tests incompatible
with the new API. The Watchdog driver functionality is tested with the
unit tests located in UNITTESTS/drivers/Watchdog/ .
2019-06-03 16:32:14 +02:00
Rajkumar Kanagaraj dc9fbfa6fb Fix for Problem copying the instance from BSS to stack
-Created global instance of either LowPowerTicker or Ticker
2019-06-03 16:32:14 +02:00
Rajkumar Kanagaraj c41d80330e Fixed the unittest case failure 2019-06-03 16:32:14 +02:00
Rajkumar Kanagaraj 33793e710d Added the ticker support
-Modified the device dont have support of lp ticker will ticker for watchdog callback register
2019-06-03 16:32:14 +02:00
David Saada dcd2c292af PSA protected storage: Add encrypt & RB protect flags by default to set. 2019-06-03 16:32:55 +03:00
Rajkumar Kanagaraj dfe4b533c3 Update Watchdog
- Changed the process into static method
 - used the singletonptr for creating the low power ticker instance
 - Added the mbed stub into cmake build for cellularnonipsocket,loramacrypto
2019-06-03 15:31:20 +02:00
Hennadiy Kytsun 7447cac66c Cypress: Fix issue #10613 2019-06-03 16:26:52 +03:00
Rajkumar Kanagaraj f672974c25 Incorporated the Reivew Comments 2019-06-03 15:24:04 +02:00
Rajkumar Kanagaraj 696638afeb Incorporated the Reivew Comments 2019-06-03 15:24:03 +02:00
Rajkumar Kanagaraj cd26a74efb fix for astyle 2019-06-03 15:24:02 +02:00
Rajkumar Kanagaraj 3c0cd62476 fix for spell check and header file 2019-06-03 15:24:01 +02:00
Rajkumar Kanagaraj f94eb3cf13 Fix for the Ci build issue 2019-06-03 15:24:01 +02:00
Rajkumar Kanagaraj 43c2647be7 fix: Fixing rebased created bugs 2019-06-03 15:24:00 +02:00
Rajkumar Kanagaraj 47030cd23f SW watchdog unittest cases
-Added the mock class function to mock mbed_assert_internal
  -Added the unit test case to test start,kick,stop
  -Modified the interface api name from is_alive to process
  -added the unit test cases for process
2019-06-03 15:23:59 +02:00
Rajkumar Kanagaraj eb98c38226 Hw Watchdog UnitTest cases
-Added the unit test case for testing Hw watchdog
    -Added the supported stubs files
2019-06-03 15:23:59 +02:00
Rajkumar Kanagaraj 3ea9521408 HW Watchdog and SW watchdog interface
- Added Hw watchdog periodic kick calls software watchdog is_alive check
2019-06-03 15:23:58 +02:00
Rajkumar Kanagaraj bcea865db2 Add SW Watchdog
-SW watchdog has interface name start(),stop(),kick()	Sw watchdog internally has static list and shared across multiple instance of SW watchdog
	- Sw watchdog initialize timeout value,unique string via constructor whenever threads created sw watchdog object
	-Threads make sure pass proper timeout value,Unique string while creating the instance.
	-start() called by components(BLE,WIFI etc.,),it adds the entry into static list with few details current count ,etc.,
	-kick() called by registered components(BLE,WIFI etc.) to reset current count to zero.
        -is_alive - interface API to mbed_watchdog_manager
        -implementation optimization
2019-06-03 15:23:57 +02:00
Rajkumar Kanagaraj 400b2ee8a7 Add HwWatchdog
- mbed_watchdog_mgr has interface name mbed_wdog_manager_start(),mbed_wdog_manager_stop(),mbed_wdog_manager_kick()
    - HwWatchdog is going to attach with LowPowerTIcker for periodic callback functionality
    - mbed_wdog_manager_start() will either get start either by BL/RTOS Aps,it reads the timeout value specified via macro and macro gets defined in target.json file.
    - mbed_wdog_manager_start() internally configure below HAL hw watchdog with timeout specified via target.json
    - mbed_wdog_manager_start() internally divide the timeout(specified in target.json) by the 2 and attach LowPowerTicker with periodic callback of hw_kick()
    - mbed_wdog_manager_start() internally create one instance of sw watchdog class,to access the static list data structure of sw watchdog class
    - mbed_wdog_manager_kick() function periodically get called and refresh the hw watchdog to avoid watchdog reset
    - converted C++ code into C based APIs
    - added boolean to control watchdog start and stop
    - Added detach from ticker on stop API
2019-06-03 15:23:56 +02:00
Rajkumar Kanagaraj 3cd52d4732 Watchdog refactoring to multithreaded thread.
-Added API to register muliple threads to watchdog drivers
-Watchdog timeout reconfigures everytime whenever new register thread with longer timeout period
-New APIs for watchdog
 wd_register(const osThreadId_t tid, const uint32_t timeout) to register to watchdog
 wd_unregister(const osThreadId_t tid) to unregister to watchdog
 kick(const osThreadId_t tid) to refresh the watchdog
2019-06-03 15:23:56 +02:00
Laurent Meunier df07e7d29e Fixes in Sys Timer test
Do not call sleep from the test thread, but let scheduler do it.
And also include the deep sleep latency in the computation of the allowed
delta for deep sleep test case.
2019-06-03 13:50:40 +02:00
Teijo Kinnunen aade299c62 CThunk: Fix assertion when CThunk object is destroyed
In case the CThunk object is deleted without having called the
entry() function (and thus _entry is NULL), cthunk_free_real()
will fail with an assertion.
2019-06-03 13:11:07 +03:00
Kevin Bracey 18ce757c07 ARMC6: Suppress "register deprecated" warning
Lots of target code, STM in particular, uses the `register` keyword, so
it'll take a little while to clean up. In the interim, some builds are
producing a lot of warnings. Suppress the warning for now, as `register`
remains legal C++14 and C11, despite C++14 deprecating it.

C++17 removes `register`, so code will need to be cleaned before any
further C++ version update.
2019-06-03 12:19:58 +03:00
Chun-Chieh Li 197b328944 [M2351] Override wait_ns to provide more accurate implementation
At high HCLK rate, M2351 cannot provide zero-wait-state flash performance. Besides,
cache is forcibly turned off for non-secure land for internal reason. We locate
'delay_loop_code' from flash to SRAM to achieve zero-wait-state performance.
2019-06-03 16:47:14 +08:00
Martin Kojtal f18e3364e9
Merge pull request #10716 from kfnta/alzix/manifest-tool
Update requirement for manifest-tool
2019-06-03 09:19:47 +01:00
Vincent Veron 16475829f1 TARGET_STM: SPI: add pulse on master transmissions
Add a pulse when using hardware chip select for SPI transmissions.
CS is at low level when a transmission is on-going.

Be careful, this is not compatible with all modes. It will work only
if PHA is 0, ie spi mode is 0 or 2. See stm32xx reference manual,
chapter "NSS pulse mode" for more details.

Fix #10671

Signed-off-by: Vincent Veron <vincent.veron@st.com>
2019-06-03 10:00:06 +02:00
Martin Kojtal a93542bab5
Merge pull request #10683 from OpenNuvoton/nuvoton_wait-ns_weak
Export wait_ns to be overridable
2019-06-03 08:54:50 +01:00
Martin Kojtal 752101d041
Merge pull request #10696 from AriParkkila/cell-ublox-at-connect
Cellular: Fix socket connect on UBLOX_AT driver
2019-06-03 08:52:43 +01:00
Martin Kojtal 62698b903c
Merge pull request #10660 from mprse/fpga_ts_add_sckl_stats
Add SCLK and SIN stats to SPIMasterTester
2019-06-03 08:49:39 +01:00
Martin Kojtal 5d33fe1dfa
unsupported USBHAL: fix coding style 2019-06-03 08:44:41 +01:00
Martin Kojtal f0696417c5
Merge pull request #10647 from tymoteuszblochmobica/coverity
Fix LWIP warning issues found by Coverity scan

lwip_dns.c in function: dns_add_interface_server
CID 1399051 (#1 of 1): Buffer not null terminated (BUFFER_SIZE_WARNING)10. buffer_size_warning: Calling strncpy with a maximum size argument of 6 bytes on destination array new_interface_server->interface_name of size 6 bytes might leave the destination string unterminated.
line 434 strncpy(new_interface_server->interface_name, interface_name, INTERFACE_NAME_MAX_SIZE);

lwip_ip4_frag.c in function: ip_reass_free_complete_datagram

CID 1373164 (#1 of 1): Dereference after null check (FORWARD_NULL)7. var_deref_model: Passing null pointer prev to ip_reass_dequeue_datagram, which dereferences it. [show details]
line 209 ip_reass_dequeue_datagram(ipr, prev);

lwip_ip4_frag.c in function: ip_reass

CID 1373163 (#1-2 of 2): Dereference after null check (FORWARD_NULL)38. var_deref_model: Passing null pointer ipr_prev to ip_reass_dequeue_datagram, which dereferences it. [show details]
line 663 ip_reass_dequeue_datagram(ipr, ipr_prev);

lwip_api_msg.c in function: lwip_netconn_do_connected

CID 1373162 (#1 of 1): Explicit null dereferenced (FORWARD_NULL)10. var_deref_model: Passing null pointer op_completed_sem to sys_sem_signal, which dereferences it. [show details]
line 1336 sys_sem_signal(op_completed_sem);
2019-06-03 08:41:53 +01:00
Martin Kojtal 9a3c175e96
Merge pull request #10588 from AriParkkila/cell-bg96-power
Cell bg96 power
2019-06-03 08:38:58 +01:00
Martin Kojtal 93e4a8251c
Merge pull request #10697 from jeromecoutant/PR_H7FLASH
STM32H7: flash issue while erasing sector in Bank 1
2019-06-03 08:35:29 +01:00
Martin Kojtal 4f6035e6b1
Merge pull request #10501 from davidsaada/david_spif_driver_unlog
Remove excessive info and debug prints in SPIF driver
2019-06-03 08:33:19 +01:00
Chun-Chieh Li 010f4225a0 [M487] Fix wait_ns test failed 2019-06-03 11:28:26 +08:00
Antti Kauppila 7f199ceeef Added missing _cid handling 2019-06-02 18:55:50 +03:00
Vincent Coubard 11cb7f0119 BLE - tune Cordio LL default parameters to reduce the memory required. 2019-05-31 16:11:08 +01:00
Vincent Coubard 12bdc0ebdb BLE - Fix Cordio LL extended advertising size. 2019-05-31 16:10:02 +01:00
Vincent Coubard a74c4ce57f BLE - Set rx ACL buffer size to the minimum viable in cordio conf. 2019-05-31 16:09:28 +01:00
Vincent Coubard 0baf04dfb4 Disable l2cap connection oriented channels in Cordio default conf. 2019-05-31 16:08:37 +01:00
Chris Trowbridge cea7bbd815 Remove component 'QSPIF' for target 'EP_AGORA' 2019-05-31 09:58:23 -04:00
George Psimenos f82b7d8229 Improve type cast 2019-05-31 13:59:40 +01:00
Przemyslaw Stekiel 48fdd33db8 tests-mbed_drivers-lp_timeout: Rework "Zero delay" test case
Execute test case 100 times in loop since one run is not enough to catch possible failure.
2019-05-31 14:17:33 +02:00
Przemyslaw Stekiel 874ff1fe22 tests-mbed_hal-sleep: add exception for STM LPTIM targets.
On some targets like STM family boards with LPTIM enabled an interrupt is triggered on counter rollover.
We need special handling for cases when next_match_timestamp < start_timestamp (interrupt is to be fired after rollover).
In such case after first wake-up we need to reset interrupt and go back to sleep waiting for the valid one.

On some targets like STM family boards with LPTIM enabled there is a required delay (~100 us) before we are able to reprogram LPTIM_COMPARE register back to back.
This is handled by the low level lp ticker wrapper which uses LPTIM_CMPOK interrupt. CMPOK fires when LPTIM_COMPARE register can be safely reprogrammed again.
This means that on these platforms we have additional interrupt (CMPOK) fired always ~100 us after programming lp ticker.
Since this interrupt wake-ups the board from the sleep we need to go to sleep after CMPOK is handled.

Background:
There is an errata in LPTIM specification that explains that CMP Flag
condition is not an exact match (COUNTER = MATCH) but rather a
comparison (COUNTER >= MATCH).

As a consequence the interrupt is firing early than expected when
programing a timestamp after the 0xFFFF wrap-around.

In order to
work-around this issue, we implement the below work-around.
In case timestamp is after the work-around, let's decide to program the
CMP value to 0xFFFF, which is the wrap-around value. There would anyway be
a wake-up at the time of wrap-around to let the OS update the system time.
When the wrap-around interrupt happen, OS will check the current time and
program again the timestamp to the proper value.
2019-05-31 14:16:34 +02:00
Martin Kojtal a8444bd6ff
Merge pull request #10651 from desowin/usbhost-set-address-wait
USBHost: Wait for device to implement SET ADDRESS
2019-05-31 12:37:19 +01:00