Hello,
I've been doing a bit of aarch64 development with the Cortex A72 with Qemu's Virt emulator, and I didn't seem to see any articles on OSDev, or rather anywhere easily available on startup guides, and the one on OSDev for ARM V7-A (https://wiki.osdev.org/ARMv7-A_Bare_Bones) does not really work for this kind of setup, especially since at least with Qemu's Virt emulator, RAM starts at 1GB+, while the article mentions you should set the stack to 0x10000 which will not work since you'll be accessing some memory mapped data.
As well as the fact 32-bit is starting to become quite outdated, it would be nice to make an aarch64 article and help OSDev be a bit more useful for the modern Arm architecture.
I'm happy to write an article for it following the general convention of the above article for ARM V7-A, but specifically for Qemu's Virt emulator, which I feel a lot of people would be using anyways to start off with for developing with aarch64, and using a newer Arm chip, in this case I have been developing with the Cortex A72 which is a modern (ish) chip running ARM V8-A, anyhow the Virt emulator barebones could later be converted by anyone building anything to work with a more specific board with some changes.
Qemu's Virt also supports a RAM framebuffer for display which is quite tricky to setup as you need to perform DMA transfers with Qemu's fw_cfg API, which is very undocumented, let alone for aarch64, and as someone who started learning Arm for my role to do some research on Arm TrustZone, a foundation for this would be very helpful.
In general, I would be interested in writing a barebones article for Arm V8-A with Qemu's Virt board in particular, with a barebones page for a simple graphics framebuffer as well, but want to double check with the community first before I actually start writing something.
Thanks,
Page for aarch64 with newer cortex
Re: Page for aarch64 with newer cortex
You're looking at the wrong page. The AArch64 bare-bones is at QEMU AArch64 Virt Bare Bones.YDeeps1 wrote:I've been doing a bit of aarch64 development with the Cortex A72 with Qemu's Virt emulator, and I didn't seem to see any articles on OSDev, or rather anywhere easily available on startup guides, and the one on OSDev for ARM V7-A (https://wiki.osdev.org/ARMv7-A_Bare_Bones) does not really work for this kind of setup, especially since at least with Qemu's Virt emulator, RAM starts at 1GB+, while the article mentions you should set the stack to 0x10000 which will not work since you'll be accessing some memory mapped data.
Re: Page for aarch64 with newer cortex
Ah okay, I completely missed that.klange wrote:You're looking at the wrong page. The AArch64 bare-bones is at QEMU AArch64 Virt Bare Bones.YDeeps1 wrote:I've been doing a bit of aarch64 development with the Cortex A72 with Qemu's Virt emulator, and I didn't seem to see any articles on OSDev, or rather anywhere easily available on startup guides, and the one on OSDev for ARM V7-A (https://wiki.osdev.org/ARMv7-A_Bare_Bones) does not really work for this kind of setup, especially since at least with Qemu's Virt emulator, RAM starts at 1GB+, while the article mentions you should set the stack to 0x10000 which will not work since you'll be accessing some memory mapped data.
But what about a potential page on ramfb/framebuffer for virt on aarch64?
Re: Page for aarch64 with newer cortex
I'll note that ramfb is available for all platforms, so a generic article on it would be welcome. (By the way, you can also use other display adapters on AArch64 virt machines, including the bochs one: It's just a PCI device!)YDeeps1 wrote:Ah okay, I completely missed that.
But what about a potential page on ramfb/framebuffer for virt on aarch64?
We do have an article on fw_cfg that could be improved with examples for non-x86 arches, since x86 is weird for using I/O ports: https://wiki.osdev.org/QEMU_fw_cfg