#BL602 EVB on #NuttX supports one GPIO Input, one GPIO Output and one GPIO Interrupt ... And names them sequentially: "/dev/gpio0", "/dev/gpio1", "/dev/gpio2" ... Which gets super confusing because "/dev/gpio0" doesn't map to BL602 GPIO Pin 0 🤔
https://github.com/lupyuen/bl602_expander#bl602-evb-limitations
What happens when we try to support 23 GPIOs on #PineDio Stack #BL604? Yep the GPIO Names will look really messy on #NuttX RTOS 🤔
https://github.com/lupyuen/bl602_expander#bl602-evb-limitations
Tracking all 23 GPIOs used by #PineDio Stack #BL604 can get challenging ... We might reuse GPIOs by mistake! 😱 Our #NuttX GPIO Expander shall validate the GPIOs at startup
https://github.com/lupyuen/bl602_expander#check-reused-gpios
Someday our #NuttX GPIO Expander for #BL604 shall validate that the SPI / I2C / UART Pin Functions are correctly assigned to the GPIO Pin Numbers ... So SPI MISO must be either GPIO 0, 4, 8, 12, 16 or 20
https://github.com/lupyuen/bl602_expander#validate-pin-functions
Our #NuttX GPIO Expander for #BL604 implements these GPIO Operations: 1️⃣ Config / Read / Write GPIOs 2️⃣ Attach / Detach GPIO Interrupt Handlers 3️⃣ Handle GPIO Interrupts
https://github.com/lupyuen/bl602_expander#gpio-expander-operations
How we attach a GPIO Interrupt Handler in our #BL604 GPIO Expander for #NuttX RTOS ... Only 1 Interrupt Hander per GPIO ... No Daisy Chaining for now 🌼⛓
https://github.com/lupyuen/bl602_expander#attach-gpio-interrupt
Our #BL604 GPIO Expander handles GPIO Interrupts in #NuttX RTOS ... By demuxing One Single IRQ into Multiple GPIOs
https://github.com/lupyuen/bl602_expander#handle-gpio-interrupt
#BL602 EVB on Apache #NuttX RTOS ... And its strange limit of 3 GPIOs 🤔
https://lupyuen.github.io/articles/expander?3#bl602-evb-limitations
#BL602 EVB manages GPIO Pins in an awkward way on Apache #NuttX RTOS 🤔
https://lupyuen.github.io/articles/expander?4#pin-definitions
Here's how we'll fix the #BL604 GPIOs on Apache #NuttX RTOS ... With our new GPIO Expander
https://lupyuen.github.io/articles/expander?5#overcome-the-limitations
Here are the #NuttX GPIO Operations supported by our #BL604 GPIO Expander
https://lupyuen.github.io/articles/expander?7#gpio-operations
Handling a #BL602 GPIO Interrupt on Apache #NuttX RTOS can get tricky ... Here's how we fixed it
https://lupyuen.github.io/articles/expander?8#gpio-interrupt
@tllim Welcome to Mastodon, TL :-)
Can we static assert to avoid overheads in nuttx?
(Ie prevent builds with bad allocations)
@Ralim Hmmm maybe. But we still need a runtime check to be sure that the GPIOs are not reused
@lupyuen hmm true. I just like having configurations checked at compile time where possible to save iterations of testing :)
@Ralim Here's how we might validate the BL602 Pin Functions at Compile Time...
https://github.com/lupyuen/bl602_expander#validate-pin-functions
@lupyuen
Hmm…
If each pin can only be used once, could we flip the arrignment matrix and instead have it always have an entry for each pin, which is either a selected value or hi-z by default; then use kconfig rules to prevent collisions ?
(Not sure, haven't used this much tbqh)
@Ralim Hmmm major Kconfig Conflict between BL602 and ESP32 ... Wonder how the NuttX folks feel about this 🤔
Handling GPIO Interrupts gets tricky on #PineDio Stack #BL604 ... All GPIO Interrupts are multiplexed into a single IRQ! Our #NuttX GPIO Expander can help
https://github.com/lupyuen/bl602_expander#gpio-interrupts