- Aug 17, 2021
-
- Aug 15, 2021
-
-
schneider authored
-
- Jul 25, 2021
-
- Jul 16, 2021
-
-
rahix authored
-
- Jul 04, 2021
-
-
rahix authored
Disable all maskable interrupts on core 1 during API calls. This brings two main advantages: 1. It means API calls are now always ISR-safe and can be used everywhere in core 1 code. This is mostly interesting to l0dables as Pycardium should not need to do this. 2. It allows Epicardium to halt the clock for core 1 without fear as we have observed problems with doing this when core 1 is currently executing instructions that touch memory. Now a synchronous call from core 1 will guarantee that it is currently waiting in a WFE and no other ISRs could be potentially running.
-
rahix authored
When interrupts are disabled during API calls on core 1, we can only trigger a core 1 reset when there is no API call ongoing. This means that the lifecycle machinery needs to allow any running API calls to complete before it has a chance to see its reset interrupt delivered. This is complicated because we cannot synchronize on core 1 triggering an API call - the best we can do is stop the dispatcher, check whether our reset interrupt was delivered, and if not, give it another chance to process an API call. Additionally, "give it another chance to process an API call" means that the IDLE task must run, because this is currently a prerequisite to scheduling the dispatcher (see [1]). The only way to facilitate this is with a sleep that is long enough that it will eventually let core 0 go idle. It seems that an 8 tick delay does the job quite fine. Thus, implement a busy loop which provides the above requirements and with that makes Epicardium prepared for payloads which perform API calls with interrupts disabled. [1]: https://firmware.card10.badge.events.ccc.de/epicardium/overview.html#internals
-
rahix authored
This function is useful on its own for more complex lifecycle management in Epicardium. Split it out of core1_wait_ready() so it can be used.
-
- Apr 11, 2021
-
- Apr 09, 2021
- Apr 08, 2021
- Apr 07, 2021
-
- Apr 04, 2021
- Apr 03, 2021
-
-
rahix authored
In commit 4944aa48 ("fix(ble): Update to changes from new SDK") a call to `BbDrvDisable()` was added to `sleep_deepsleep()`. This function must, however, only be called when BLE was previously initialized, otherwise a wakeup from deepsleep will not be possible (if it ever reaches it?). Fix this by reworking the BLE enabled check to also be usable here, to only call `BbDrvDisable()` when BLE is active. Fixes: 4944aa48 ("fix(ble): Update to changes from new SDK") Fixes: #231
-
schneider authored
-
rahix authored
-
rahix authored
-
rahix authored
-
rahix authored
With sphinx 3 a ton of warnings about unresolvable xrefs are generated. Add a workaround to silence them. Ref: https://github.com/sphinx-doc/sphinx/issues/8945
-
rahix authored
Don't lint vendored sources...
-
rahix authored
Update vendored hawkmoth sources to commit upstream 69cde0b2c5315e46bf431a4c7c8b92cf47a544a6.
-
rahix authored
Use a newer container with Sphinx 3 installed.
- Apr 02, 2021
-
-
schneider authored