Page for aarch64 with newer cortex
Posted: Mon Mar 04, 2024 5:50 am
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,
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,