Adding Board Support Package for #PineCone #BL602 to #Mynewt
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/hw/bsp/pinecone/bsp.yml
Disassembled the #PineCone #BL602 HelloWorld App for reference
https://github.com/lupyuen/bl_iot_sdk/releases/download/v0.0.4/sdk_app_helloworld.S
#BL602 Start Code comes from here...
https://github.com/lupyuen/bl_iot_sdk/blob/master/components/bl602/bl602/evb/src/boot/gcc/start.S
#BL602 Flash Memory Map for #Mynewt ... With my handy hex calculator
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/hw/bsp/pinecone/bsp.yml#L36-L74
Set #PineCone #BL602 as the Firmware Target for #Mynewt
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/targets/pinecone_app/target.yml
Building #Mynewt for #PineCone #BL602 ... Now using the right #RISCV GCC
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
#BL602 #Mynewt compiles OK ... Now fixing the Reset Handler
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
Now porting the missing HAL functions for #Mynewt #BL602
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
Still porting the missing HAL functions for #Mynewt #BL602
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
#BL602 #Mynewt Firmware built successfully yay! (Using stubs for HAL functions) Now inspecting the Disassembled Firmware
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
Disassembly of #BL602 #Mynewt Firmware looks OK ... Reset Handler is at the right address ... Let's run this firmware!
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
Nope OpenOCD + JTAG doesn't work for loading #Mynewt Firmware into #BL602 Flash Memory ... Let's load the #RISCV Firmware into RAM instead
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
Yep OpenOCD + JTAG works OK for loading #Mynewt Firmware into #BL602 RAM!
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
#VSCode Debugger works OK for #Mynewt Firmware on #PineCone #BL602 yay!
https://github.com/lupyuen/pinecone-rust-mynewt/blob/main/README.md
@lupyuen Good job! Just to document the map of interrupt sources (from BL602 reference manual) and the programmers interface to handle them:
@caligari Cool thanks! 🙂
Unlike SiFive FE310, #BL602 doesn't have a Platform-Level Interrupt Controller (PLIC) ... This #RISCV code in #Mynewt needs to be fixed 🤔
https://github.com/apache/mynewt-core/blob/master/kernel/os/src/arch/rv32imac/os_arch_rv32imac.c#L214