4594 Commits

Author SHA1 Message Date
Gunar Schorcht
fa48e3f51f cpu/esp8266: event handling for link up/down 2019-01-26 17:34:13 +01:00
Gunar Schorcht
4e41afa2fb cpu/esp8266: readable disconn reasons in esp_wifi 2019-01-26 17:33:28 +01:00
Gunar Schorcht
1a8a560bb5 cpu/esp8266: remove timeout handling in send func
It is not necessary to realize timeout handling in send function or to disconnect from AP if lwIP packet buffer is exhausted. Waiting that the frame allocated in lwIP packet buffer is freed by MAC layer led to the complete blockage of send function on heavy network load. Disconnecting from AP is counterproductive since reconnecting usually fails on heavy network load.
2019-01-26 17:32:04 +01:00
Gunar Schorcht
fa5fe7e48f cpu/esp8266: don't disconnect on pbuf full in send
Disconnecting from the AP in the send function if the lwIP packet buffer is exhausted is counterproductive since reconnecting usually fails on heavy network load. A better strategy is to slow down the sending of MAC frames from netif a bit to wait for flushing the buffer in the MAC layer.
2019-01-26 17:23:21 +01:00
Anton Gerasimov
19d2ef736c kinetis: limit scope of a variable in ics.c to make Codacy happy
Signed-off-by: Anton Gerasimov <tossel@gmail.com>
2019-01-26 15:53:05 +01:00
Anton Gerasimov
40bcfc9211 kinetis: add support for S9KEAZ128
Signed-off-by: Anton Gerasimov <anton.gerasimov@here.com>
2019-01-26 15:53:05 +01:00
Gunar Schorcht
5d0b447209 cpu/esp8266: auto reconnect in esp_wifi
It seems to be more stable and less memory consuming to use auto reconnect policy.
2019-01-25 23:59:42 +01:00
Gunar Schorcht
457ef97d74 cpu/esp8266: lwIP dummy functions added
Defines a number of lwIP functions that are required as symbols by Espressif's SDK libraries. These functions are only dummies without real functionality. Using these functions instead of real lwIP functions provided with the SDK saves arround 4 kBytes of RAM.
2019-01-25 23:59:42 +01:00
Gunar Schorcht
24b71a7fbe cpu/esp8266: call _recv directly in esp_wifi
Since _esp_wifi_recv_cb is not executed in interrupt context but in the context of the `ets` thread, it is not necessary to pass the`NETDEV_EVENT_ISR` event first. Instead, the receive function can be called directly which result in much faster handling, a less frame lost rate and more robustness.
2019-01-25 23:59:42 +01:00
Gunar Schorcht
f12606d7c0 cpu/esp8266: removes the mutex in esp_wifi
Since _esp_wifi_recv_cb is not executed in interrupt context but in the context of the `ets` thread, the receive function can be called directly. There is no need for a mutex anymore to synchronize the access to the receive buffer between _esp_wifi_recv_cb and _recv function.
2019-01-25 23:59:42 +01:00
Hauke Petersen
93e7d88f75
cpu/nrf5x: reworked and fixed UART driver 2019-01-25 15:52:25 +01:00
Alexandre Abadie
cb8c2b759e
cpu/nrf52: use UARTE device type for nrf52840
This requires to implement the use of EasyDMA for this kind of peripheral
2019-01-25 15:52:25 +01:00
Alexandre Abadie
336851e3bc
cpu/nrf52: add uart flow control on nrf52840 2019-01-25 15:51:50 +01:00
Alexandre Abadie
8e8f48f75e
cpu/nrf52: add multi UART support for nrf52840 2019-01-25 15:51:49 +01:00
55e50d3015
Merge pull request #10858 from miri64/socket_zep/fix/ubsan-timestamp
socket_zep: fix undefined timestamp conversion behavior
2019-01-25 09:13:07 +01:00
Martine Lenders
83bc4b162f socket_zep: fix undefined timestamp conversion behavior 2019-01-24 14:05:31 +01:00
Sebastian Meiling
907b761750
Merge pull request #10792 from gschorcht/esp8266_esp_wifi_netdev
esp8266: esp_wifi netdev driver
2019-01-24 12:09:46 +01:00
Gunar Schorcht
49f06efd38 cpu/esp8266: fix pbuf length check in esp_wifi
When the size of a received frame is checked, always the total length should be used instead of the length of the first lwIP pbuf in the pbuf chain. Otherwise, the check that the length does not exceed ETHERNET_MAX_LEN will always be true since the maximum size of one lwIP pbuf in a pbuf chain is 512 bytes.
2019-01-24 09:54:53 +01:00
Gunar Schorcht
88c65aff0b cpu/esp8266: allow _esp_wifi_recv_cb during send
Receiption of a frame in _esp_wifi_recv_cb while sending has no effect and should be possible to increases the performance.
2019-01-24 09:39:45 +01:00
Gunar Schorcht
0920bbb4fb cpu/esp8266: log message on reconnect in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
92f6c1a7c6 cpu/esp8266: WiFi mode changed in esp_wifi
Although only the station interface is needed, the WiFi interface has to be used in SoftAP + Station mode. Otherwise the send function blocks sporadically. Since the SoftAP interface is not used, it is configured with a hidden SSID and a long beacon interval. Connections from other stations are not allowed.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
538aac00ad cpu/esp8266: fix of allocated pbuf in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
e384f1e502 cpu/esp8266: send timeout handling in esp_wifi
A timeout was introduced if sending a frame takes to long time. In that case the WiFi interface disconnects and reconnects automatically to recover.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
04ee2ebe15 cpu/esp8266: automatic reconnect in esp_wifi
A reconnect timer is used to try to reconnect every 20 secons if WiFi interface is in disconnected or connecting state.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
87b87631a6 cpu/esp8266: functions that have to run in IRAM
Due to performance reasons _esp_wifi_recv_cb and _send have to be executed in IRAM.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
96d0910d33 cpu/esp8266: avoid _esp_wifi_recv_cb during send
To avoid conflicts on receiption of a frame while sending, _esp_wifi_recv_cb should not executed while a frame is in transmission
2019-01-24 09:21:17 +01:00
Gunar Schorcht
78e0aa2a77 cpu/esp8266: usage of _esp_wifi_recv_cb
Overriding ethernet_input function _esp_wifi_recv_cb is only used when the WiFi interface is in connected state.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
c5a9058ab9 cpu/esp8266: simplified error handling in esp_wifi
wifi_station_connect and wifi_stattion_disconnect never produce errors. Thus, error handling can be removed.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
3225aaa387 cpu/esp8266: different conn states in esp_wifi
Different connection states defined to be able to realize a better connect/reconnect handling
2019-01-24 09:21:17 +01:00
Gunar Schorcht
88f6beeca2 cpu/esp8266: use SDK mem management for esp_wifi
Some SDK interrupt service routines obviously use malloc/free in the interrupt context. Because the rmutex-based lock/unlock approach of the malloc/free function suite of the newlib does not work in the interrupt context, the SDK memory management functions MUST therefore be used. To use the same memory management functions in RIOT as in the SDK, the malloc/free function suite has to be replaced by wrapper functions.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
5a835e91ba cpu/esp8266: fix some comments in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
107e196b18 cpu/esp8266: fix of maximum frame length in esp_wif
Since complete MAC frames are handled, ETHERNET_MAX_LEN has to be used instead of ETHERNET_DATA_LEN for receive buffer size and length check.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
0e46869e57 cpu/esp8266: react to "out of memory" in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
35a751c245 cpu/esp8266: avoid send interruption in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
f7998c2ad6 cpu/esp8266: automatic reconnect in esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
d6664dafad cpu/esp8266: esp_wifi dbg msg changed to err msg 2019-01-24 09:21:17 +01:00
Gunar Schorcht
be3a2a4cb5 cpu/esp8266: fix compilation problem of esp_wif 2019-01-24 09:21:17 +01:00
Gunar Schorcht
698770ddb5 cpu/esp8266: fix esp_wifi stability issues
Fixes sporadic blocking of the wifi thread in esp_wifi_recv_cb function under heavy network load conditions when frames are coming in faster than they can be processed. Since esp_wifi_recv_cb function is not executed in interrupt context, the msg_send function used for ISR event can block when the message queue is full. With this change esp_wifi can be flooded with icmpv6 packets of maximum size without any problems over hours.
2019-01-24 09:21:17 +01:00
Gunar Schorcht
21db1ce224 cpu/esp8266: doc extended for esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
664566ce70 cpu/esp8266: makefile support for esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
04de1e75aa cpu/esp8266: stack sizes tuned for esp_wifi 2019-01-24 09:21:17 +01:00
Gunar Schorcht
642c48f856 cpu/esp8266: add built-in WiFi netdev driver 2019-01-24 09:21:17 +01:00
Gaëtan Harter
9cd50a693a
cpu/atmega_common: do not export LINKFLAGS
This prevent evaluating `LINKFLAGS` when not needed and when building
in docker so does not produce errors if `avr-ld` is not installed.

```
BUILD_IN_DOCKER=1 BOARD=arduino-mega2560  make --no-print-directory -C examples/hello-world/ clean
/srv/ilab-builds/workspace/git/riot_master/makefiles/toolchain/gnu.inc.mk:18: objcopy not found. Hex file will not be created.
/bin/sh: 1: avr-ld: not found
```

It removes the `/bin/sh: 1: avr-ld: not found`
2019-01-23 18:32:40 +01:00
Peter Kietzmann
1f7292c358
Merge pull request #10764 from benemorius/kinetis-rtt-subseconds
cpu/kinetis/rtt: clear TPR when writing TSR
2019-01-23 15:15:29 +01:00
Alexandre Abadie
73fa699192
cpu/nrf5x: handle multiple exti pins in gpio driver
Each pin is associated to a given GPIOTE channel
2019-01-22 16:47:34 +01:00
Dylan Laduranty
5dd51f2ec5 cpu/sam0_common: remove unneeded GCLK_SLOW setup in i2c driver 2019-01-22 09:29:42 +01:00
Alexandre Abadie
7e3c382547
Merge pull request #10653 from dylad/pr/saml1x_support
cpu/saml1x: add support for SAML10 and SAML11 MCUs (Cortex-M23)
2019-01-22 08:53:06 +01:00
Sebastian Meiling
0edf76d362
Merge pull request #9984 from kaspar030/refactor_atmega_libc
cpu/atmega_common: refactor AVR libc code into module
2019-01-22 08:41:37 +01:00
Sebastian Meiling
e22e582049
Merge pull request #10656 from gschorcht/esp8266_ets_handling
cpu/esp8266: change of ETS task handling
2019-01-21 21:57:45 +01:00
Dylan Laduranty
9450fa7dc3 cpu/sam0_common: add support for saml10/saml11
Add SAML10/SAML11 support through SAM0 because hardware IP are the same so reuse to avoid duplication
2019-01-21 17:06:58 +01:00