[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Question about using qemu with multiple, different CPUs (or alternatives
Question about using qemu with multiple, different CPUs (or alternatives)
Thu, 27 Aug 2020 14:17:14 -0700
Mozilla/5.0 (X11; Linux x86_64; rv:68.0) Gecko/20100101 Thunderbird/68.11.0
I have an interesting situation on my hands. On my free time I am
involved in the Nintendo 3DS homebrew community, and one thing that
we've wanted to do for some time is emulating the low-level system so
that we can test (and debug) our own programs on our PCs instead of
having to transfer them over to the 3DS to run them (and pray; no remote
debugging support on bare metal). Someone (b1l1s) a while back began
implementing some 3DS hardware support in qemu, and it was simple enough
to run some basic programs that ran on the actual console. That said,
this only focused on one of the CPUs of the 3DS.
The 3DS has actually 3 different CPUs in it-- an ARM7, and ARM9 (arm946
I think), and an ARM11 (mpcore) CPU, each having access to slightly
different parts of the hardware, and each CPU has different capabilities
and speeds (e.g. the ARM9 has an MPU and not an MMU, while the ARM11
does have an MMU). On hardware, the way the CPUs communicate with each
other is over a small FIFO queue with interrupt support, and some memory
is shared while other is not, and each CPU has their own map of memory
(so really, it's like 3 computers in one, sharing some peripherals).
My question is, is it possible use qemu to emulate this mess of a
system? I looked into maybe using shared memory, but that exposes the
shared memory across multiple instances of qemu as a PCI device...
Any suggestions or ideas would be appreciated. Thanks!
- Question about using qemu with multiple, different CPUs (or alternatives),
Gabriel Marcano <=