Hi,
galex wrote:
Thanks. Will check the tutorial out. Seems quite good for first look.
Let me know if you have a question.
galex wrote:
However probably it would be easier to debug/develop using an emulator first. I started using qemu with x86 and x86_64 many years ago and found quite good for this use case.
Definitely. I've implemented raspi3 machine for qemu, available in mainline since qemu 2.12. The ARM part is quite fully supported, however there are certain limitations in the hardware emulation. Only the most common peripherals are emulated, many are missing. For the VC, only the Mailbox interface supported, which is enough to get most of the firmware interface working, including setting up framebuffers, configuring clock frequencies etc. but not the 3D acceleration part.
galex wrote:
I never tried with ARM before and I'm stunned how undocumented it is...
It is quite well documented, but @pvc, @kzinti and @zaval is right about one thing: the documentation is very difficult to come by, which makes ARM less OSdev friendly. But if you try hard enough, it is not impossible to get those.
galex wrote:
I mean qemu and how/what it actually emulates. On the bright side the source code is on the internet
so will figure it out eventually.
To get the list of currently supported devices, I'd suggest to take a look at the qemu peripheral initialization code:
bcm2835_peripherals.c. For Rpi3 there are some additional devices, see bcm2836.c and the QA7 multicore interrupt controller is also emulated (see
bcm2836_control.c). I've also implemented the ARM Local Timer emulation, that works as well (not sure when it was merged into the mainline, but quite some time now, should be available in all current binary qemu packages).
Cheers,
bzt