Commit Graph

17 Commits

Author SHA1 Message Date
Jeff Epler
726dcdb60a Add some NORETURN attributes
I have a function where it should be impossible to reach the end, so I put in a safe-mode reset at the bottom:
```
int find_unused_slot(void) {
    // precondition: you already verified that a slot was available
    for (int i=0; i<NUM_SLOTS; i++) {
        if( slot_free(i)) {
            return i;
        }
    }
    safe_mode_reset(MICROPY_FATAL_ERROR);
}
```
However, the compiler still gave a diagnostic, because safe_mode_reset was not declared NORETURN.

So I started by teaching the compiler that reset_into_safe_mode never returned.  This leads at least one level deeper due to reset_cpu needing to be a NORETURN function.  Each port is a little different in this area.  I also marked reset_to_bootloader as NORETURN.
Additional notes:

 * stm32's reset_to_bootloader was not implemented, but now does a bare reset.  Most stm32s are not fitted with uf2 bootloaders anyway.
 * ditto cxd56
 * esp32s2 did not implement reset_cpu at all.  I used esp_restart().  (not tested)
 * litex did not implement reset_cpu at all.  I used reboot_ctrl_write.  But notably this is what reset_to_bootloader already did, so one or the other must be incorrect (not tested).  reboot_ctrl_write cannot be declared NORETURN, as it returns unless the special value 0xac is written), so a new unreachable forever-loop is added.
 * cxd56's reset is via a boardctl() call which can't generically be declared NORETURN, so a new unreacahble "for(;;)" forever-loop is added.
 * In several places, NVIC_SystemReset is redeclared with NORETURN applied.  This is accepted just fine by gcc.  I chose this as preferable to editing the multiple copies of CMSIS headers where it is normally declared.
 * the stub safe_mode reset simply aborts.  This is used in mpy-cross.
2020-09-28 18:55:56 -05:00
Kamil Tomaszewski
ce7ee58e92 camera: Update camera module 2020-09-14 13:12:20 +02:00
Kamil Tomaszewski
143a1ff94a spresense: change the GC to do 32-byte blocks 2020-09-14 13:11:15 +02:00
Scott Shawcroft
a5b01f7361
Merge remote-tracking branch 'adafruit/main' into add_pwmio 2020-08-21 11:13:53 -07:00
Kamil Tomaszewski
e2891bc7d4 spresense: call usb_background function 2020-08-20 16:21:25 +02:00
Scott Shawcroft
6857f98426
Split pulseio.PWMOut into pwmio
This gives us better granularity when implementing new ports because
PWMOut is commonly implemented before PulseIn and PulseOut.

Fixes #3211
2020-08-18 13:08:33 -07:00
Diego Elio Pettenò
dd5d7c86d2 Fix up end of file and trailing whitespace.
This can be enforced by pre-commit, but correct it separately to make it easier to review.
2020-06-03 10:56:35 +01:00
Kamil Tomaszewski
ce337eaa27 Fix port_get_raw_ticks 2020-06-01 11:35:46 +02:00
Scott Shawcroft
a57da6b808
Add port_fixed_stack for more spresence 2020-05-15 17:22:41 -07:00
Scott Shawcroft
6db11cf68b
Fix up Spresense build. It doesn't sleep. 2020-03-17 14:21:45 -07:00
Scott Shawcroft
1c39606345
Fix other builds missing new heap bounds functions 2020-01-18 18:06:56 -08:00
Dan Halbert
af1fab1915
Merge pull request #2226 from kamtom480/circuitpython-device-open
Do not open the same PWM device if it is already open
2019-10-23 15:08:40 -04:00
Kamil Tomaszewski
e4574fa3bf Clean UART on reset 2019-10-21 13:17:51 +02:00
Kamil Tomaszewski
4338511b28 Add get top and limit functions for Spresense 2019-10-18 11:10:22 +02:00
Kamil Tomaszewski
96756b3945 Add functions to get top and limit stack 2019-10-18 11:04:45 +02:00
Kamil Tomaszewski
5f09609d41 Add Spresense board folder 2019-10-11 12:09:51 +02:00
Kamil Tomaszewski
1fa8841d20 Change port name to cxd56 2019-10-11 08:23:51 +02:00