-
Notifications
You must be signed in to change notification settings - Fork 38
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
exercises/01 fails when run in docker against ibex #243
Comments
If the board is |
I suspect that the recent(ish) changes to the AccessSystemRegisters permissions in Ibex may have broken |
Ah, Ok thanks. I tried changing one of the examples to the ibex simulator and then doing "xmake config --sdk=/cheriot-tools/; xmake clean; xmake; xmake run" - but that didn't fail which made me think this was the wrong track. Looks like I need to "rm -rf .xmake .cache" to really get back to a clean state ? And the exercise needs the simulator because the sail model doesn't have a uart - is that right ? (Sorry for the questions - still feeling my way around here some) |
You shouldn't need it, but sometimes |
The Sail UART is output only, yes. |
Kunyan confirms that this is an Ibex bug. The refactoring of the PermitAccessSystemRegisters logic accidentally missed |
The dev container is updated with the fix so this should work now. |
Yep - runs fine now, thanks |
As noted at the Sonata Hackathon exercise/01.compartmentalisation doesn't run in the dev docker, although it does work if compiled and run on the Sonata board. I tested against the latest commit (771f2bb - Jun 3rd) in case any of the recent changes to the dev contained had fixed it, but it still fails for me.
Digging in a little the line that fails in Ibex is generating the secret in secret.cc
Replacing this with, for example, makes everything run fine
Commenting out the code in secret.cc which waits for the uart (so the call to rdcycle64() is in effect the first call in the therad) also makes no difference.
Adding a compartment_error_handler() gives the error as:
Calling rdcycle64() in any of the examples with IBEX works fine, so I'm assuming there is some difference in the build that I'm missing, but the only thing I spotted is that exercise xmake.luna has:
whereas the examples use
I'm happy to dig further if someone can point me in the right direction.
The text was updated successfully, but these errors were encountered: