hooao
hooao

Reputation: 113

ARM At91 CPU startup in qemu

ARM AT91 can not startup in QEMU. I can't get any print on the console.

I am trying to use QEMU(latest code pulled by git) to simulate an ARM AT91 board. But when startup the QEMU, I got no print in the console. In my understanding, there would be two steps to achieve this:

1, Property setup with the memory address in QEMU, let the QEMU decompress zImage. In this step, I will see "Uncompressing Linux...done, booting the kernel."

2, Property setup the output device(eg: uart0). I will get the kernel startup message.

I've succeeded in starting up with the ARM versatilePB because the QEMU supports versatilePB itself. The difference between versatilePB and AT91 is they have different SDRAM address. I've tried to modify loader_start to 0x20000000 but it seems still not work.

hwaddr loader_start;//0x2000000, which is AT91 SDRAM address
memory_region_add_subregion(sysmem, 0x2000000, ram);

At least it should print Uncompressing Linux...done, booting the kernel., which indicates that the zImage is executed and decompressed.

Upvotes: 1

Views: 409

Answers (1)

Peter Maydell
Peter Maydell

Reputation: 11523

QEMU (at least upstream QEMU) does not have a model of the AT91 SoCs. The differences between these systems and ones like the versatilePB that QEMU does support are greater than just "the RAM is at a different address" -- they will have different devices of all kinds (including the UART) which both behave differently and are found at different locations. It is impossible to run bare metal code intended for an AT91 without implementing in QEMU a model of the correct board and at least some of the AT91 devices. The changes required would be much much more substantial than just changing a few addresses for the RAM base address.

Upvotes: 1

Related Questions