Show older

Simple fix for a PlatformIO build error in 's LoRaP2P_TX sample ... My first Pull Request for WisBlock!

github.com/RAKWireless/WisBloc

GPIO Interrupts: Should we use Sync or Async Interrupts for ? 🤔 ... BL602 IoT SDK uses Async Interrupts to handle GPIO Buttons ... Let's do the same for LoRa

github.com/bouffalolab/bl_iot_

Maybe High Level Trigger Interrupt = High Priority Interrupt = Sync Interrupt? 🤔 ... Lemme check the original Chinese Reference Manual

github.com/bouffalolab/bl_docs

My bad ... High Level Trigger Interrupt = 高电平触发中断 = Trigger Interrupt on Logic High ... Nothing to do with priority 🤔

github.com/bouffalolab/bl_docs

Transmitter ... Sniffed by Airspy R2 SDR ... Watch the distinctive LoRa Chirp (red spike)

youtu.be/USqStub3KC0

And still hangs when transmits Packets ... Chaos Magic 🤔

Something spooky about GPIO Interrupts 🤔 ... Let's disconnect SX1276 pins DIO1 to DIO3 ... And connect DIO0 to my fav Blue LED (GPIO 11)

github.com/lupyuen/bl_iot_sdk/

GPIO Interrupts hanging could be due to the way we handle multiple GPIO Interrupts ... Let's revisit this when we can trigger multiple GPIO Interrupts from SX1276

github.com/lupyuen/bl_iot_sdk/

Now that can handle Packet Received Interrupt ... Let's defer the LoRa Packet Processing from the Interrupt Handler to the Application Task ... How shall we do this in FreeRTOS? 🤔

github.com/lupyuen/bl_iot_sdk/

Shall we teach Multitasking with NimBLE Porting Layer? 1️⃣ Looks easier than FreeRTOS 2️⃣ It's portable to FreeRTOS, Mynewt, NuttX and RIOT OS 🤔

lupyuen.github.io/pinetime-rus

Our Build, Flash and Run Firmware script generates the Disassembly ... Let's track down the address of the RISC-V Exception

github.com/lupyuen/bl_iot_sdk/

Exception happened because we passed a pointer to a stack object ... Which gets used by the Interrupt Handler 😲 ... This works OK in the original Mynewt code, but not for BL602

gist.github.com/lupyuen/1539f9

Reference Manual mentions "GPIO_INT_CLR" but the address is undefined in the doc ... Methinks a chunk of addresses are missing from the doc 🤔

github.com/bouffalolab/bl_docs

shows Stack Trace when CONFIG_ENABLE_FP=1 ... But the addresses don't make sense ... They belong to the code that's dumping the Stack Trace 🤔

github.com/lupyuen/bl_iot_sdk/

Oops needs us to "make clean ; make" to fix up the Stack Frame Pointers ... Now BL602 Stack Trace points to the "ebreak" instruction ... Which belongs to the Exception Handler 🙄

github.com/lupyuen/bl_iot_sdk/

Below the Exception Handler Stack ... Is another Stack! ... Does this Stack contain the Stack Trace that we need? 🤔

gist.github.com/lupyuen/5ddbcd

Answer: "radio_events" contains Undefined Fields ... Because it was allocated on the Stack! Lesson Learnt: ALWAYS Init Stack Variables! 🙏

github.com/apache/mynewt-core/

Show newer
Sign in to participate in the conversation
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.