|
From: | Randy Yates |
Subject: | QEMU Development Questions |
Date: | Thu, 16 Apr 2020 21:46:14 -0400 |
User-agent: | Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) |
I came to the QEMU project with the goal of writing a new machine. We are reverse engineering this machine and do not have the SoC reference manual. We do have the flash code, the bare metal startup code. Thus we're having to guess and infer a lot about the machine from the code. Since this is an ARM A9, my initial thought was to base the new machine on the vexpress-a9.
I've been asking lots of questions in #address@hidden and some of the folks there (mainly pm215 and f4bug) suggested I put these questions and my comments into writing and send out to the mailing list to help new people become familiar with the project.I confess, I am ignorant. Some of the questions may not be QEMU questions at all but ARM architecture, hardware, or other questions. Please bear with me and help me out.
It is believed we are using an ARM Cortex A9 MPCORE machine with 4 cores and with TrustZone (and possibly hypervisor) functionality. The machine eventually loads and runs linux, but we believe there are at least three levels of bootloaders prior to linux:
It appears that only two of the four cores are used and it appears to be an asymmetric multiprocessing design, in which the two cores are running different OSes, one a bare metal and the other linux.
The goal is to define the minimum amount of machine (cpu, sram, dram, itcm, dtcm, gic, flash, ?) be able to reverse engineer code up to the second-level bootloader. Then hopefully we can leverage QEMU's capabilities, e.g., exception reporting in the debug output, to determine missing functionality.
The QEMU project was git cloned on 4/16/2020. The work is being done under Fedora 31.
There is a MachineClass, MachineState, and MachineInstance. What are purposes of these logical divisions?
-chardev socket,id=monitor,host=127.0.0.1,port=4444,server,nowait,telnet -mon chardev=monitor,mode=readline
That's all for now - thanks for all help/suggestions/pointers/etc.
[Prev in Thread] | Current Thread | [Next in Thread] |