Let's hunt for MEPC (Machine Exception Program Counter) 0x2300 8fe2 in the Disassembly ... Yep my buggy code crashed in the I2C Interrupt Handler 🤔

github.com/lupyuen/bl_iot_sdk/

Show thread

Found the bug in my I2C program ... There are two levels of BL602 I2C API: 1️⃣ High Level (which calls FreeRTOS) 2️⃣ Low Level (which doesn't call FreeRTOS) ... I'm using the Low Level API, so I shouldn't call "hal_i2c_init" in the High Level API

github.com/lupyuen/bl_iot_sdk/

Show thread

Here's our simple I2C Interrupt Handler ... When we hit an I2C Interrupt, bump up the Interrupt Counters ... Remember: No funny business allowed in Interrupt Handlers (like Console Output)

github.com/lupyuen/bl_iot_sdk/

Show thread

I2C "Slave Address" vs "Device Address" vs "Slave Device Address" vs "Slave Device Register Address" ... A little confusing 🤔

github.com/bouffalolab/bl_docs

Show thread

@lupyuen recently I had to implement exception code 11 (M-mode ECALL) for a Risc-V software model. Modeling these things is no easy task

@lupyuen but I've always wanted to look at the upper layers such as HAL, which is way I enjoy your posts. Keep it up!🙂

@lopeztel Thanks for the encouragement ... Really appreciate it! 🙂

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.