1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

43860 Commits

Author SHA1 Message Date
bors[bot]
e0361abb3a
Merge #19771
19771: boards/nrf9160dk: use all available CC timer channels r=dylad a=dylad

### Contribution description
`nRF9160` has 6 CC per timer.
You can `grep -ra "CC_NUM" cpu/nrf9160 ` to check it.
So let's use all available CC.

### Testing procedure
You can run `tests/periph/timer` to see the new CC.


### Issues/PRs references
None.


Co-authored-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2023-07-04 12:03:43 +00:00
Dylan Laduranty
ff076fa54e boards/nrf9160dk: use all available CC timer channels
Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2023-07-04 13:58:23 +02:00
bors[bot]
2e5b2adac6
Merge #19793
19793: boards/sipeed-longan-nano: fix TFT display config and documentation r=maribu a=gschorcht

### Contribution description

This PR fixes the configuration of the TFT Display of Sipeed Longan Nano boards and improves the documentation regarding the use of the TFT Display.

### Testing procedure

```
CFLAGS='-DCONFIG_SIPEED_LONGAN_NANO_WITH_TFT=1' BOARD=sipeed-longan-nano make -C tests/drivers/st7735/ flash
```
should work with this PR.

### Issues/PRs references

Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2023-07-04 10:46:04 +00:00
Gunar Schorcht
199376651f boards/sipeed-longan-nano: fix TFT display config and documentation 2023-07-04 12:12:50 +02:00
bors[bot]
db9971de72
Merge #19783
19783: tests/core: remove Makefile.sys_common copy past mistake r=maribu a=hugueslarrive



Co-authored-by: Hugues Larrive <hlarrive@pm.me>
2023-07-03 13:54:41 +00:00
bors[bot]
2dd65304a3
Merge #19790
19790: boards: fix documentation for GD32V boards r=dylad a=gschorcht

### Contribution description

With the support of the USB OTG interface, both the flash method and the stdio interface module used were changed for the GD32V boards. However, the documentation was not updated. With this PR, the documentation is updated accordingly.

### Testing procedure

Green CI

### Issues/PRs references


Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2023-07-03 13:08:53 +00:00
Gunar Schorcht
7687c49120 boards/sipeed-longan-nano: documentation fix 2023-07-03 11:49:15 +02:00
Gunar Schorcht
e26f08d179 boards/seeedsudio-gd32: documentation fix 2023-07-03 11:48:39 +02:00
bors[bot]
92529a8d14
Merge #19785
19785: cpu/esp8266: fix region overflow with '*periph' directory in app path r=gschorcht a=hugueslarrive

### Contribution description
This pull request addresses an issue where a region overflow occurs during the generation of the `.elf` file when the application path contains a directory named '*periph'. The problem arises due to an incorrect section mapping in the `esp8266.riot-os.ld` linker script.

The issue was causing the compilation of all tests which were moved to the `tests/periph` directory by PR #19552 to fail on the ESP8266 architecture.

To resolve the issue, the `esp8266.riot-os.ld` script has been modified. The section mapping for the `*periph` directory has been changed to `*esp_common_periph`, ensuring that the correct sections are included in the final binary.

### Testing procedure
To verify the effectiveness of this fix, the following testing procedure was performed:
1. Checked out the `master` branch of the RIOT repository
2. Cleaned and built the `blinky` example for the `esp8266-esp-12x` board:
- **Expected Result**: The build process completes successfully without any region overflow errors. The resulting `blinky.elf` file is generated.
```
hugues@p700:~/github/riot_small_fixes/RIOT$ BOARD=esp8266-esp-12x make -j64 -C examples/blinky clean all | grep -v make
rm -rf /home/hugues/github/riot_small_fixes/RIOT/examples/blinky/bin/esp8266-esp-12x/pkg-build/esp8266_sdk
Building application "blinky" for "esp8266-esp-12x" with MCU "esp8266".

esptool.py v2.4.0
   text	   data	    bss	    dec	    hex	filename
 278112	   5228	  28640	 311980	  4c2ac	/home/hugues/github/riot_small_fixes/RIOT/examples/blinky/bin/esp8266-esp-12x/blinky.elf
esptool.py v2.4.0
Parsing CSV input...
```
3. Created a directory named `somethingperiph` and copied the `blinky` example into it:
```
mkdir somethingperiph && cp -a examples/blinky/ somethingperiph
```
4. Cleaned and attempted to build the `blinky` example in the `somethingperiph` directory:
- **Expected Result**: The build process fails with a linker error, indicating a region overflow issue.
```
hugues@p700:~/github/riot_small_fixes/RIOT$ BOARD=esp8266-esp-12x make -j64 -C somethingperiph/blinky clean all | grep -v make
Building application "blinky" for "esp8266-esp-12x" with MCU "esp8266".
rm -rf /home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/bin/esp8266-esp-12x/pkg-build/esp8266_sdk

esptool.py v2.4.0
/home/hugues/esp/xtensa-esp8266-elf/bin/../lib/gcc/xtensa-esp8266-elf/5.2.0/../../../../xtensa-esp8266-elf/bin/ld: /home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/bin/esp8266-esp-12x/blinky.elf section `.text' will not fit in region `iram1_0_seg'
/home/hugues/esp/xtensa-esp8266-elf/bin/../lib/gcc/xtensa-esp8266-elf/5.2.0/../../../../xtensa-esp8266-elf/bin/ld: region `iram1_0_seg' overflowed by 24372 bytes
collect2: error: ld returned 1 exit status
make: *** [/home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/bin/esp8266-esp-12x/blinky.elf] Erreur 1
```
5. Checked out this PR's branch
6. Cleaned and attempted to build the `blinky` example in the `somethingperiph` directory again:
- **Expected Result**: The build process completes successfully without any region overflow errors. The resulting `blinky.elf` file is generated.
```
hugues@p700:~/github/riot_small_fixes/RIOT$ BOARD=esp8266-esp-12x make -j64 -C somethingperiph/blinky clean all | grep -v make
Building application "blinky" for "esp8266-esp-12x" with MCU "esp8266".
rm -rf /home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/bin/esp8266-esp-12x/pkg-build/esp8266_sdk

esptool.py v2.4.0
   text	   data	    bss	    dec	    hex	filename
 278080	   5228	  28640	 311948	  4c28c	/home/hugues/github/riot_small_fixes/RIOT/somethingperiph/blinky/bin/esp8266-esp-12x/blinky.elf
esptool.py v2.4.0
Parsing CSV input...
```
7. Verified the size of the `blinky.elf` file:
- **Expected Result**: The size of the `blinky.elf` file is similar to the size obtained in step 2, indicating a successful build. However, a slight difference in size was observed due to the linker script modification.

8. Cleaned and attempted to build the `blinky` example in the `examples` directory again:
- **Expected Result**: The size of the `blinky.elf` file is similar to the size obtained in step 6.
```
hugues@p700:~/github/riot_small_fixes/RIOT$ BOARD=esp8266-esp-12x make -j64 -C examples/blinky clean all | grep -v make
Building application "blinky" for "esp8266-esp-12x" with MCU "esp8266".
rm -rf /home/hugues/github/riot_small_fixes/RIOT/examples/blinky/bin/esp8266-esp-12x/pkg-build/esp8266_sdk

esptool.py v2.4.0
   text	   data	    bss	    dec	    hex	filename
 278080	   5228	  28640	 311948	  4c28c	/home/hugues/github/riot_small_fixes/RIOT/examples/blinky/bin/esp8266-esp-12x/blinky.elf
esptool.py v2.4.0
Parsing CSV input...
```
The tests confirm that this pull request resolves the region overflow issue when the application path contains a directory named '*periph'. Additionally, all relevant tests in the `tests/periph` directory successfully compile again on the ESP8266 architecture:
```
hugues@p700:~/github/riot_small_fixes/RIOT$ for p in tests/periph/*; do BOARD=esp8266-esp-12x make -j64 -C $p clean all 2>&1 | grep elf; done
 279368	   5200	  28728	 313296	  4c7d0	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/adc/bin/esp8266-esp-12x/tests_adc.elf
 277492	   5192	  28672	 311356	  4c03c	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/cpuid/bin/esp8266-esp-12x/tests_cpuid.elf
 289044	   5264	  28856	 323164	  4ee5c	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio/bin/esp8266-esp-12x/tests_gpio.elf
 288884	   5288	  29160	 323332	  4ef04	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio_arduino/bin/esp8266-esp-12x/tests_gpio_arduino.elf
 279520	   5252	  28712	 313484	  4c88c	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/hwrng/bin/esp8266-esp-12x/tests_hwrng.elf
 292312	   5268	  28872	 326452	  4fb34	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/i2c/bin/esp8266-esp-12x/tests_i2c.elf
 284064	   5208	  28720	 317992	  4da28	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/pm/bin/esp8266-esp-12x/tests_pm.elf
 285800	   5248	  28856	 319904	  4e1a0	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/pwm/bin/esp8266-esp-12x/tests_pwm.elf
 281756	   5252	  28768	 315776	  4d180	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtc/bin/esp8266-esp-12x/tests_rtc.elf
 278832	   5192	  28704	 312728	  4c598	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt/bin/esp8266-esp-12x/tests_rtt.elf
 280552	   5252	  28736	 314540	  4ccac	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt_min/bin/esp8266-esp-12x/tests_rtt_min.elf
 294164	   5296	  30104	 329564	  5075c	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/spi/bin/esp8266-esp-12x/tests_spi.elf
 279440	   5192	  28800	 313432	  4c858	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer/bin/esp8266-esp-12x/tests_timer.elf
 278884	   5192	  28712	 312788	  4c5d4	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer_short_relative_set/bin/esp8266-esp-12x/tests_timer_short_relative_set.elf
 286756	   5248	  31920	 323924	  4f154	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart/bin/esp8266-esp-12x/tests_uart.elf
 275572	   5184	  28800	 309556	  4b934	/home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart_mode/bin/esp8266-esp-12x/tests_uart_mode.elf
hugues@p700:~/github/riot_small_fixes/RIOT$ git checkout master
Basculement sur la branche 'master'
Votre branche est à jour avec 'origin/master'.
hugues@p700:~/github/riot_small_fixes/RIOT$ for p in tests/periph/*; do BOARD=esp8266-esp-12x make -j64 -C $p clean all 2>&1 | grep Erreur; done
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/adc/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/adc/bin/esp8266-esp-12x/tests_adc.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/cpuid/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/cpuid/bin/esp8266-esp-12x/tests_cpuid.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio/bin/esp8266-esp-12x/tests_gpio.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio_arduino/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/gpio_arduino/bin/esp8266-esp-12x/tests_gpio_arduino.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/hwrng/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/hwrng/bin/esp8266-esp-12x/tests_hwrng.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/i2c/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/i2c/bin/esp8266-esp-12x/tests_i2c.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/pm/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/pm/bin/esp8266-esp-12x/tests_pm.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/pwm/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/pwm/bin/esp8266-esp-12x/tests_pwm.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtc/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtc/bin/esp8266-esp-12x/tests_rtc.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt/bin/esp8266-esp-12x/tests_rtt.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt_min/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/rtt_min/bin/esp8266-esp-12x/tests_rtt_min.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/spi/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/spi/bin/esp8266-esp-12x/tests_spi.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer/bin/esp8266-esp-12x/tests_timer.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer_short_relative_set/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/timer_short_relative_set/bin/esp8266-esp-12x/tests_timer_short_relative_set.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart/bin/esp8266-esp-12x/tests_uart.elf] Erreur 1
make: *** [/home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart_mode/../../../Makefile.include:761 : /home/hugues/github/riot_small_fixes/RIOT/tests/periph/uart_mode/bin/esp8266-esp-12x/tests_uart_mode.elf] Erreur 1
```

### Issues/PRs references
Highlighted in #16727, appeared whith project tree as a side effect from #19552 but pre-existing.


Co-authored-by: Hugues Larrive <hlarrive@pm.me>
2023-07-02 14:49:30 +00:00
Hugues Larrive
2d660faf74 cpu/esp8266: fix region overflow with '*periph' directory in app path 2023-07-02 12:21:16 +02:00
Hugues Larrive
9acb5ffc0b tests/core: remove Makefile.sys_common copy past mistake 2023-07-01 19:05:54 +02:00
bors[bot]
6fc006421b
Merge #19779
19779: cpu/atmega_common: make vera++ happy r=maribu a=maribu

### Contribution description

Vera++ doesn't like `#error` preprocessor directives without a quoted string afterwards (and also my syntax highlighter doesn't like this as well). So let's add the quotes to have the tools not spooked out.


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-30 08:37:31 +00:00
Marian Buschsieweke
87e3a611fe
cpu/atmega_common: make vera++ happy
Vera++ doesn't like `#error` preprocessor directives without a quoted
string afterwards (and also my syntax highlighter doesn't like this as
well). So let's add the quotes to have the tools not spooked out.
2023-06-29 22:27:59 +02:00
bors[bot]
c2df430deb
Merge #19745
19745: Makefile.include: Generate lst file using objdump r=maribu a=nandojve

### Contribution description

The MAP file does not provide all information necessary to do a full analize of generated code. This automatically generate the LST file with all relavant C and ASM code to help inspect code generated.

### Testing procedure

This was tested using AVR and Cortex-M toolchains.

Co-authored-by: Gerson Fernando Budke <nandojve@gmail.com>
2023-06-29 16:21:49 +00:00
Gerson Fernando Budke
ae61702ffe Makefile.include: Generate lst file using objdump
The MAP file does not provide all information necessary to do a full
analize of generated code. This automatically generate the LST file
with all relavant C and ASM code to help inspect code generated.

Signed-off-by: Gerson Fernando Budke <nandojve@gmail.com>
2023-06-29 17:29:33 +02:00
bors[bot]
755442fe27
Merge #19712
19712: cpu/riscv: Add PMP driver r=MrKevinWeiss a=Teufelchen1

### Contribution description

Hi! 🐘 

this adds a basic RISC-V physical memory protection (PMP) driver to RIOT. Well, 'driver' might be a stretched, feels more like a little utility :)

EDIT: Also added  a no-execute RAM option for the hifive & a corresponding test

Since I only have an Hifive rev b, it's only enabled on this board / cpu. I also tested the code on an ESP32-C but the feature can't be enabled there, as `cpu/riscv_common/` is not used by the ESP32...

### Testing procedure

* Grab a hifive rev b
* go to `examples/hello-world`
* Add `USEMODULES += periph_pmp` to the `Makefile`
* Include `pmp.h` in `main.c`
* Add code e.g. `print_pmpcfg(0);`
* compile & flash & term 

You should see something like this:
```
# Hello World!
# You are running RIOT on a(n) hifive1b board.
# This board features a(n) fe310 MCU.
# pmp00cfg: - R-X OFF   0x00000000 - 0x00000000
```



Co-authored-by: Teufelchen1 <bennet.blischke@outlook.com>
2023-06-29 09:57:31 +00:00
bors[bot]
7c320055a1
Merge #19772
19772: cpu/avr8_common: fix typo in a comment r=maribu a=maribu



Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-29 05:35:45 +00:00
Marian Buschsieweke
a6f48d84a0
cpu/avr8_common: fix typo in a comment 2023-06-28 22:36:21 +02:00
bors[bot]
d339984c66
Merge #19766
19766: core/lib: make the use of DEBUG_BREAKPOINT on assert optional r=gschorcht a=gschorcht

### Contribution description

This PR makes the use of `DEBUG_BREAKPOINT` on failed assertion optional.

The behavior of `assert` has been changed with PR #19368. Instead of printing some useful information, either a breakpoint is inserted and the execution of the MCU stops in debugger or a endless while loop is executed.

Before PR #19368 the user got on failed assertion:
```
Starting ESP32x with ID: 7cdfa1e36a34
ESP-IDF SDK Version v4.4.1-0-g1329b19fe49
...
*** RIOT kernel panic:
FAILED ASSERTION.

*** halted.
```
This was very helpful during development, especially to identify quickly the cause of problems with `DEBUG_ASSERT_VERBOSE` enabled, e.g. when misconfiguration led to failed assertions.

With PR #19368 the user gets an address in best case (or even `0` on platforms like ESP32), in worst case the MCU seems to stuck, e.g.
```
Starting ESP32x with ID: 7cdfa1e36a34
ESP-IDF SDK Version v4.4.1-0-g1329b19fe49
...
0
```
The problem with the new behavior is that
- a user doesn't get a quick indication of what happened
- there is not always an easy way to attach a debugger

This PR therefore makes the use of `DEBUG_BREAKPOINT` optional using `DEBUG_ASSERT_BREAKPOINT` define.

### Testing procedure

Add `assert(0)` in `examples/hello-world/main.c` and compile with and w/o `CFLAGS='-DDEBUG_ASSERT_BREAKPOINT'`.

With `DEBUG_ASSERT_BREAKPOINT` the execution should stop in `assert_failue`. Without `DEBUG_ASSERT_BREAKPOINT`, the information as generated before PR #19368 and the execution should stop in `panic_arch`.

### Issues/PRs references



Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2023-06-28 13:21:56 +00:00
Teufelchen1
0e839654e8 cpu/riscv: Add PMP driver 2023-06-28 11:55:34 +02:00
Gunar Schorcht
6eb358bfee tests/sys/sema_inv: boards with insufficient RAM 2023-06-28 11:39:08 +02:00
bors[bot]
117c577bf6
Merge #19767 #19768
19767: boards: Fix I2C Arduino mapping r=chrysn a=maribu

### Contribution description

The correct macro name is `ARDUINO_I2C_UNO` for Arduino UNO compatible I2C bus location, or `ARDUINO_I2C_NANO` for Arduino Nano compatible I2C bus location.


19768: sys/arduino: move pseudo modules to makefiles r=chrysn a=maribu

### Contribution description

This allows using the arduino_pwm feature (which is translated into a module) without the arduino module; e.g. for only using the Arduino I/O mapping but not the Arduino API.


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-28 07:41:50 +00:00
Marian Buschsieweke
a461cd8b94
sys/arduino: move pseudo modules to makefiles
This allows using the arduino_pwm feature (which is translated into a
module) without the arduino module; e.g. for only using the Arduino
I/O mapping but not the Arduino API.
2023-06-28 09:09:31 +02:00
Marian Buschsieweke
4f0f1be1d2
boards: Fix I2C Arduino mapping
The correct macro name is `ARDUINO_I2C_UNO` for Arduino UNO compatible
I2C bus location, or `ARDUINO_I2C_NANO` for Arduino Nano compatible
I2C bus location.
2023-06-28 09:05:23 +02:00
Gunar Schorcht
c9a9a5901b core/lib: do not use DEBUG_BREAKPOINT by default 2023-06-27 17:04:27 +02:00
bors[bot]
b209fdd76c
Merge #19759
19759: boards,sys/arduino: major clean up r=maribu a=maribu

### Contribution description

- Rename all `arduino_pinmap.h` to `arduino_iomap.h`
    - An empty `arduino_pinmap.h` that just includes `arduino_iomap.h` is provided for backward compatibility
    - Move all info from `arduino_board.h` into the new file as trivial macros, so that they can also be used outside of sketches
    - The new name reflects the fact not just pin mappings, but also other I/O features such as PWMs are mapped
- Drop all `arduino_board.h`
    - `arduino_board.h` and `arduino_iomap.h` now provide the exact same information, just in a different format
    - a generic `arduino_board.h` is provided instead that just uses the info in `arduinio_iomap.h` and provides them in the format the code in `sys/arduino` expects it
- Add fine grained features to indicate for mappings
    - availability of mappings for analog pins, DAC pins, PWM pins, UART devices, SPI/I2C buses to the corresponding RIOT identification can now be expressed:
        - `arduino_pins`: `ARDUINO_PIN_0` etc. are available
        - `arduino_analog`: `ARDUINO_A0` etc. are available
        - `arduino_pwm`: `ARDUINO_PIN_13_PWM_DEV` etc. are available
        - `arduino_dac`: `ARDUINO_DAC0` etc. are available
        - `arduino_uart`: `ARDUINO_UART_D0D1` or similar are available
        - `arduino_spi`: `ARDUINO_SPI_ISP` or similar are available
        - `arduino_i2c`: `ARDUINO_I2C_UNO` or similar are available
    - mechanical/electrical compatibility with specific form factors can now be expressed as features:
        - `aruino_shield_nano`: Arduino NANO compatible headers
        - `aruino_shield_uno`: Arduino UNO compatible headers
        - `aruino_shield_mega`: Arduino MEGA compatible headers
        - `aruino_shield_isp`: ISP header is available

This provides the groundwork to implement shield support as modules that can rely on the I/O mappings, rather than having to provide a configuration per board.


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-26 18:19:29 +00:00
Marian Buschsieweke
efb3a32a8d
dist/tools/doccheck: update exclude patterns 2023-06-26 17:24:07 +02:00
Marian Buschsieweke
043e8cc88e
boards,sys/arduino: major clean up
- Rename all `arduino_pinmap.h` to `arduino_iomap.h`
    - An empty `arduino_pinmap.h` that just includes `arduino_iomap.h`
      is provided for backward compatibility
    - Move all info from `arduino_board.h` into the new file as trivial
      macros, so that they can also be used outside of sketches
    - The new name reflects the fact not just pin mappings, but also
      other I/O features such as PWMs are mapped
- Drop all `arduino_board.h`
    - `arduino_board.h` and `arduino_iomap.h` now provide the exact
      same information, just in a different format
    - a generic `arduino_board.h` is provided instead that just
      uses the info in `arduinio_iomap.h` and provides them in the
      format the code in `sys/arduino` expects it
- Add fine grained features to indicate for mappings
    - availability of mappings for analog pins, DAC pins, PWM pins,
      UART devices, SPI/I2C buses to the corresponding RIOT
      identification can now be expressed:
        - `arduino_pins`: `ARDUINO_PIN_0` etc. are available
        - `arduino_analog`: `ARDUINO_A0` etc. are available
        - `arduino_pwm`: `ARDUINO_PIN_13_PWM_DEV` etc. are available
        - `arduino_dac`: `ARDUINO_DAC0` etc. are available
        - `arduino_uart`: `ARDUINO_UART_D0D1` or similar are available
        - `arduino_spi`: `ARDUINO_SPI_ISP` or similar are available
        - `arduino_i2c`: `ARDUINO_I2C_UNO` or similar are available
    - mechanical/electrical compatibility with specific form factors
      can now be expressed as features:
        - `aruino_shield_nano`: Arduino NANO compatible headers
        - `aruino_shield_uno`: Arduino UNO compatible headers
        - `aruino_shield_mega`: Arduino MEGA compatible headers
        - `aruino_shield_isp`: ISP header is available

This provides the groundwork to implement shield support as modules
that can rely on the I/O mappings, rather than having to provide a
configuration per board.
2023-06-26 17:24:07 +02:00
bors[bot]
abc0a09828
Merge #19761
19761: buildsystem: only expose CPU_RAM_BASE & SIZE when known r=maribu a=maribu

### Contribution description

This gets rid of the following ugly warnings:

    /bin/sh: 1: arithmetic expression: expecting primary: ""


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-26 10:12:37 +00:00
bors[bot]
ca72d8b514
Merge #19763
19763: cpu/esp32: define RAM_START_ADDR and RAM_LEN r=maribu a=gschorcht

### Contribution description

This PR fixes the problem
```
/bin/sh: 1: arithmetic expression: expecting primary: ""
```
for ESP32x SoCs that was introduced with PR #19746. The reason for the error message was that `RAM_LEN` was not defined for ESP32x SoCs.

The solution is a bit tricky since ESP32x SoCs use a combination of SRAMs of different sizes and with different byte/word access requirements. Additionally, several hardware components such as the instruction cache or the Bluetooth controller share the RAM so that the start address and the size that is usable may differ depending on the hardware components used and configured parameters like the cache size a.s.o.

Therefore, the DRAM region parameters as defined in the memory layout of the linker scripts are used to define `RAM_START_ADDR` and `RAM_LEN` in `cpu/esp32/Makefile.include`. Some checks have been added to the linker scripts to ensure that the same parameters are used in the linker scripts and for `RAM_LEN` and `RAM_START_ADDR`. This is to ensure that none of the parameters are changed without generating an assertion.

**Note:** Since I don't know for what other purposes than the `riotboot` module these parameters might be relevant, I'm not sure if the values represent what they are supposed to.

### Testing procedure

Green CI with full compilation

### Issues/PRs references

Fixes PR #19746

Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
2023-06-26 07:16:20 +00:00
Gunar Schorcht
87a9d635c8 cpu/esp32: ensure correct RAM_START_ADDR and RAM_LEN 2023-06-25 18:12:57 +02:00
Gunar Schorcht
b707235592 cpu/esp32: define RAM_START_ADDR and RAM_LEN 2023-06-25 17:33:06 +02:00
Marian Buschsieweke
1c7e660973
buildsystem: only expose CPU_RAM_BASE & SIZE when known
This gets rid of the following ugly warnings:

    /bin/sh: 1: arithmetic expression: expecting primary: ""
2023-06-24 23:35:14 +02:00
bors[bot]
655211129e
Merge #19749
19749: sys/net/rpl: fix missing assignment operator r=maribu a=szsam




Co-authored-by: Mingjie Shen <shen497@purdue.edu>
2023-06-24 16:04:59 +00:00
bors[bot]
9ba1d78c55
Merge #19756
19756: all/gnrc: fix null pointer dereference r=miri64 a=szsam



Co-authored-by: Mingjie Shen <shen497@purdue.edu>
2023-06-23 05:13:31 +00:00
Mingjie Shen
51ff6c3675 all/gnrc: fix null pointer dereference
Check return values of following functions for null:
    - gnrc_netif_iter
    - gnrc_netif_hdr_build
    - gnrc_pktsnip_search_type
    - gnrc_netif_get_by_pid
    - gnrc_netif_hdr_get_netif
    - _nib_drl_get
2023-06-22 19:43:30 -04:00
bors[bot]
d4a8c145a8
Merge #19751
19751: cpu/avr8 common: added avr4.ld script r=maribu a=hugueslarrive

### Contribution description
Splitted from:
- #19740

### Testing procedure
Tested on atmega8 with:
- #19755

### Issues/PRs references



Co-authored-by: Hugues Larrive <hlarrive@pm.me>
2023-06-22 16:07:11 +00:00
Hugues Larrive
b94cd39339 cpu/avr8_common: supports CPUs with missing CALL and JMP instructions 2023-06-22 17:35:36 +02:00
Hugues Larrive
996ff9ba25 cpu/avr8_common: added avr4.ld script 2023-06-22 17:35:14 +02:00
bors[bot]
970734efd8
Merge #19750
19750: dist/tools/usb-serial: Fix handling of None while quoting r=aabadie a=maribu

### Contribution description

This fixes:

    Traceback (most recent call last):
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 259, in <module>
        print_ttys(sys.argv)
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 255, in print_ttys
        print_results(args, ttys)
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 189, in print_results
        if item.rfind(args.format_sep) >= 0:
           ^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'rfind'

Which occurs while testing whether a string requires special quoting if an attribute is None.


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-22 05:40:27 +00:00
Marian Buschsieweke
6192c620c8
dist/tools/usb-serial: Fix handling of None while quoting
This fixes:

    Traceback (most recent call last):
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 259, in <module>
        print_ttys(sys.argv)
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 255, in print_ttys
        print_results(args, ttys)
      File "/home/maribu/Repos/software/RIOT/master/dist/tools/usb-serial/ttys.py", line 189, in print_results
        if item.rfind(args.format_sep) >= 0:
           ^^^^^^^^^^
    AttributeError: 'NoneType' object has no attribute 'rfind'

Which occurs while testing whether a string requires special quoting
if an attribute is None.
2023-06-21 22:13:21 +02:00
Mingjie Shen
4fc1c25082 sys/net/rpl: fix missing assignment operator
GNRC_RPL_COUNTER_INCREMENT has no external side effects.
2023-06-21 14:05:07 -04:00
bors[bot]
561e19303d
Merge #19718 #19737 #19746
19718: drivers/dht: busy wait reimplementation r=benpicco a=hugueslarrive

### Contribution description

In PR #19674, I also provided quick and dirty fixes to restore functionality on esp8266 and enable operation on AVR. While reviewing PR #18591, it became apparent to me that this driver needed a refresh, particularly its migration to ztimer.

The cause of the malfunction on esp8266 was that since the default switch to ztimer as the backend for xtimer, XTIMER_BACKOFF was no longer taken into account. Therefore, the correction I provided in PR #19674 simply made explicit what was previously done implicitly with xtimer and now needs to be done explicitly with ztimer (spinning instead of sleeping).

Moreover, it was unnecessarily complex to measure the pulse duration in a busy-wait implementation, which required 2 calls to ztimer_now() and  32-bit operations expensive on 8-bit architecture. Instead, it is sufficient to read the state of the bus at the threshold moment.

Finally, in practice, it is possible to reduce the read interval (down to less than 0.5s for DHT22) by "harassing" the DHT with start signals until it responds.

This re-implementation brings the following improvements:
- Many backports from `@maribu's` IRQ based implementation (#18591):
  - Use of ztimer
  - Use of errno.h
  - Use of a dht_data structure to pass arguments, to facilitate integration
  - Adaptation of the bit parsing technique to parse bits into the data array
- Reintroduction of DHT11/DHT22 differentiation.
- Separation of `dht_read()` steps into functions for better readability and the ability to share certain functions among different implementations
- Sensor presence check in `dht_init()`
- ~~Automatic adjustment to a minimum data hold time~~
- Default input mode changed to open drain (a pull-up resistor should be placed close to the output if necessary but not close to the input)
- AVR support without platform-specific handling by avoiding  ztimer_spin() and using the overflow of an 8-bit variable as a pre-timeout to minimize time-consuming ztimer_now() calls

Regarding the changes in the start signal sequence and the removal of the `_reset()` function:
![nano_dht_read_2](https://github.com/RIOT-OS/RIOT/assets/67432403/95966813-2b5f-4a0f-a388-8ac630526ab2)

~~In the previous implementation, there was an unnecessary spike at the beginning of the signal sequence, corresponding to START_HIGH_TIME. This spike has been removed in the re-implementation, as it is unnecessary. Instead, the MCU now simply pulls the signal low for START_LOW_TIME and then releases the bus, which is sufficient for initiating communication with the DHT sensor.~~ Actually, it is necessary to raise the bus level; otherwise, the _wait_for_level() called immediately after to check the response of the DHT may read the port before the signal level is raised, resulting in a false positive.

Additionally, the previous implementation had an issue where the MCU switched back to output mode and went high immediately after reading the 40 bits of data. However, the DHT sensor was still transmitting 2 or 3 additional bytes of '0' at that point, causing a conflict. This issue has been resolved in the re-implementation:
![nano_dht_read_optimized](https://github.com/RIOT-OS/RIOT/assets/67432403/ff124839-5ec5-4df3-bab7-5348d8160a25)

~~Regarding the optimization for AVR, I have performed measurements of `_wait_for_level()` until timeout (85 loops):~~
~~- on esp8266-esp-12x: 264 µs, which is 3.11 µs per loop~~
~~- on nucleo-f303k8: 319 µs, which is 3.75 µs per loop~~
~~- on arduino-nano: 3608 µs, which is 42.45 µs per loop~~
~~Duration measurements on the Arduino Nano:~~


19737: dist/tools/openocd: start debug-server in background and wait r=benpicco a=fabian18



19746: buildsystem: Always expose CPU_RAM_BASE & SIZE flags r=benpicco a=Teufelchen1

### Contribution description

Hello 🐧 

This moves the definition of `CPU_RAM_BASE/SIZE` from being only available in certain situation to be always available.
Reason for change is to simplify common code in the cpu folder.

In cooperation with `@benpicco` 

### Testing procedure

Passing CI


### Issues/PRs references

First usage will be in the PMP driver. Although there is more code in RIOT that could be refactored to use these defines instead of hacks / hardcoded values.

Co-authored-by: Hugues Larrive <hlarrive@pm.me>
Co-authored-by: Fabian Hüßler <fabian.huessler@ml-pa.com>
Co-authored-by: Teufelchen1 <bennet.blischke@outlook.com>
2023-06-20 10:40:01 +00:00
Teufelchen1
791d4e3a4d buildsystem: Always expose CPU_RAM_BASE & SIZE flags 2023-06-20 12:16:06 +02:00
Hugues Larrive
a582da1f31 drivers/dht: busy wait reimplementation
- many backports from @maribu's IRQ based implementation (#18591)
- use of ztimer and errno.h
- separation of dht_read() steps into functions for better readability
- reintroduction of DHT11/DHT22 differentiation
- sensor presence checking in dht_init()
- default input mode changed to open drain
- AVR support without platform-specific handling by avoiding
  ztimer_spin() and using the overflow of an 8-bit variable as a
  pre-timeout to minimize time-consuming ztimer_now() calls
- add a new DHT11_2022 type for 0.01 °C resolution devices
- data caching removed
2023-06-20 12:07:48 +02:00
bors[bot]
4deca3dfd7
Merge #19743 #19744
19743: tests/unittests: improve int size detection r=maribu a=maribu

### Contribution description

Deduce from the value of `INT_MAX` whether `int` is 16 bit or 32 bit, rather than check CPU names.


19744: tests: update tests for MSP430 CPU r=maribu a=maribu

### Contribution description

Using the builtin `__MSP430__` macro is fool-proof and stable even if one would try to rename and reorganize the MSP430 cpu code.


Co-authored-by: Marian Buschsieweke <marian.buschsieweke@posteo.net>
2023-06-19 14:37:00 +00:00
Marian Buschsieweke
ee79bb7d68
tests: update tests for MSP430 CPU
Using the builtin `__MSP430__` macro is fool-proof and stable even
if one would try to rename and reorganize the MSP430 cpu code.
2023-06-19 14:49:55 +02:00
Marian Buschsieweke
e0b5d63021
tests/unittests: improve int size detection
Deduce from the value of `INT_MAX` whether `int` is 16 bit or 32 bit,
rather than check CPU names.
2023-06-19 14:01:56 +02:00
bors[bot]
ef82aa6acc
Merge #19651
19651: sys/stdio_semihosting: model in Kconfig r=MrKevinWeiss a=aabadie



Co-authored-by: Alexandre Abadie <alexandre.abadie@inria.fr>
2023-06-19 07:07:59 +00:00
bors[bot]
1bed7dde15
Merge #19739
19739: gnrc/rpl: fix incorrect addition overflow check r=maribu a=szsam




Co-authored-by: Mingjie Shen <shen497@purdue.edu>
2023-06-17 16:25:56 +00:00