On Sat, 3 Jul 2021, Kenneth Adam Miller wrote:
I just wanted to ask how I can get started developing other than just starting building? QEMU is a huge project, and getting familiar with all of the source and stuff is a lot of work. Probably, it wouldn't be helpful to know the entire source, but just what I need.
If you go to https://www.qemu.org/contribute/ there's a link to the wiki: https://wiki.qemu.org/Documentation/GettingStartedDevelopers where there are a few links to some docs. I've also gathered these links: https://osdn.net/projects/qmiga/wiki/DeveloperTips
I want to add a new system target for an architecture in which non-user mode instructions might be used. In my case, I am reading the documentation at qemu-project.gitlab.io/qemu/devel/*, and I find that some of it is good for getting started because it tells about the roles of different build targets. At the current time though, I feel like I'm so far at the beginning that I don't know what question to ask to help myself best. Is there any way to know in more detail how a system target would both share and differ from one architecture to another? For example, the same devices may be present from arm to x86, but this isn't true for how the processor works. Also, is there any reference on the execution lineage or data structures used?
Probably the easiest is to find a simple machine in QEMU that is similar to what you want and look at how that's implemented. At the beginning QOM boilerplate code might be confusing but it's just how QEMU defines objects in C so reading up on QOM and QDev might help to understand how to write and instantiate those objects then the code becomes more readable.
Hope this helps. Regards, BALATON Zoltan