-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
PoC: Persistent storage #273
Conversation
7189f4b
to
baeff05
Compare
I have tested the firmware in a patched qemu running in firmware mode all the time. I tried the management app, installed preloaded app, started it, and watched the partition table while all this was happening. The syscalls seem to work fine. I was a bit surprised that the preloaded app wasn't started automatically but I understand that part isn't implemented yet. Perhaps it's good to wait, because I think it's still unclear (#214) how we even would signal back to the firmware how not to start the preloaded app. On the other hand, perhaps now is the time to experiment with different solutions? There are more things that aren't yet implemented. The TODO notes are fine, of course, but they're often just shorthand notes and doesn't explain what more needs to be done. I suggest we track these things in issues or just tasks in an issue, but at least flesh them out a little. Since the current PoC just reuses the BLAKE2S MMIO to get to the firmware syscall handler it requires support in the hardware to watch PC all the time and raise the privelege when PC hits the blessed address stored in BLAKE2S. I'm worried about if this solution is possible to do in the hardware design without changing PicoRV32. It's certainly not easy to emulate in qemu. I looked a lot in qemu and did some experiments with the other suggestion in #234, that is to write something to an MMIO to trigger the syscall. That is certainly easier to catch in both hardware and qemu, even if affecting PC directly might still be unsolved. |
baeff05
to
92cf6a9
Compare
- `digest` is an array and hence the address of the first element is returned. - This will keep it more consistent with the rest of the code base. - Fixed misspelled comment.
PoC of how a syscall could look like.
- Have only one transfer function, to minimize duplicate code. - Remove address assignments that does not make a difference.
Add an erase command to let the user have more control over the allocated area. This will also be more familiar to embedded developers. As a bonus it minimizes the logic needed in firmware, and in theory we can now increase the current write limit of one sector.
92cf6a9
to
3771726
Compare
See #298 instead, this branch is stale now. |
Description
Draft PR, WIP. Some parts of this are still to be considered as a proof of concept.
Fixes # (issues)
Type of change
Submission checklist