This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Arm MMU configuration works on (qemu) raspberry(a53) but not on virt(armv7, a53) board

Now, I’m aware that this is a complex question and might not be resolved here. I am new to embedded/processor programming and I would like to know if there are any major differences between those two boards(cpu wise). I thought that since it is the same CPU (which I think has the same mmu, at least I couldn’t find any information about different versions), my code for the page table config would be universal.

A bit more context, both versions run on exactly the same code, and I am configuring one gigabyte as a section for the boot loaders (which is the current code, the one writing to the page tables) memory.

When I turn on the MMU(after writing the page table to memory and configuring tcr), the next read of the pc causes a “memory, not accessible” exception, but only on the virt board, on the raspi3b board it works just fine.

Best regards Niklas

Parents
  • The only obvious difference between the two boards is that he raspberry boots into el3 and I'm ereting to el1 pre boot loader, but that shouldn't make a difference, right?

    Depends what the firmware is doing before dropping you to EL1.  Something should have set up the EL2 registers for example.

    When you see exception, can you get the ESR_EL1/FAR_EL1/ELR_EL1 register values generated by the fault?  (assuming the exception is taken to EL1)

Reply
  • The only obvious difference between the two boards is that he raspberry boots into el3 and I'm ereting to el1 pre boot loader, but that shouldn't make a difference, right?

    Depends what the firmware is doing before dropping you to EL1.  Something should have set up the EL2 registers for example.

    When you see exception, can you get the ESR_EL1/FAR_EL1/ELR_EL1 register values generated by the fault?  (assuming the exception is taken to EL1)

Children