Show newer

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

@amiloradovsky@functional.cafe Yep thanks I might try GDB and OpenOCD later ... Trouble is that BL602 can only be flashed over UART, not JTAG ... Right now I'm reading the HAL code and I think I know what went wrong 🙂

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

@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!🙂

@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 Thanks for this one.

"Let’s talk evil. And by evil, I mean money."

Open source licensing for supervillains

Show older
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.