RP2350: Add RISCV, Unify RP2350, Update UART, Add XH3IRQ Interrupt Controller#21753
Conversation
|
Would you mind creating a "DELETEME" commit that adds the two boards to the |
mguetschow
left a comment
There was a problem hiding this comment.
Great work! 🎉 Some comments from briefly skimming over the changes.
AnnsAnns
left a comment
There was a problem hiding this comment.
Thank you for all the reviews (esp. so quickly 🐎), I will try to go through all the points mentioned and fix them 🐸 👉👉
|
Moving the register addresses out of the assembly caused the assembler to complain. Since that is the only location they are used I moved them back into the function and simply explained them within the function. |
|
I resolved some of the review comments that were fixed, but here are the ones that either haven't been addressed yet or where I'm not sure if they should be marked as resolved yet. #21753 (comment) |
cpu/rp2350: increase stack size fix: pmp is actually just 8, the other 8 are a lie fix: rp2350-e6 breaks PMP completely
2c0dbf3 to
8ff7adb
Compare
mguetschow
left a comment
There was a problem hiding this comment.
Weak approve since I have only skimmed over it right now.
Thanks for doing this!
|
YOLO |
|
Responsibility for this merge is now 100% with @Teufelchen1, I take 0% blame :) |
|
Congratulations 🥳 |
|
Thank you so much for all the reviews & reviewers over the last months 🫡 |
Contribution description
After two failed attempts, I finally managed to get a shared and unified setup working for the RP2350. As opposed to the other approaches I took, where I tried to fully unify both the RISCV and ARM versions, this version takes a different approach similar to cortexm_common or riscv_common where each CPU still exists as a separate entity, e.g.
rp2350_armandrp2350_riscvbut uses the sharedrp2350_commonfolder.This PR supersedes both #21745 and #21746, as in it:
However, as of now, it does not yet add the multicore example. All the points raised in the other PRs also still hold true.
Testing procedure
Remember to specify
USEMODULE += stdio_uartif you wish to print via UART.For my testing I mostly modified
examples/basic/blinkyto also print. On RISCV you can also usexh3irq_force_irqto force interrupts for testing purposes, for example, on each blinky loop, if you feel like it :)RISCV
make PROGRAMMER=openocd QUIET=0 BOARD=rpi-pico-2-riscv flashflashes the pico 2 in RISCV mode using openocd, you can also usemake PROGRAMMER=picotool QUIET=0 BOARD=rpi-pico-2-riscv flashto flash it using picotool.ARM
make PROGRAMMER=openocd QUIET=0 BOARD=rpi-pico-2-arm flashflashes the pico 2 in RISCV mode using openocd, you can also usemake PROGRAMMER=picotool QUIET=0 BOARD=rpi-pico-2-arm flashto flash it using picotool.Issues/PRs references