ARMv8基础模型:交换机和指示灯

时间:2014-09-18 08:14:29

标签: simulator arm64 fast-model

我正在尝试在ARMv8 Foundation Model v2.1中启动我的小型ARMv7内核(使用qemu vexpress模型运行得很好)。该模型在EL3 / 64位启动时,我设法降低到EL1 / 32位,但我遇到了一些问题(换句话说,计时器没有打勾,有些kprintf丢失,但那不是这里的问题)。

要调试我的UART问题,我想使用模型提供的led / switch。我可以很容易地从软件中读取它们的价值,但我无法为它们中的任何一个写出新值。内核似乎挂了。这是一个写入开关寄存器的最小asm代码:

.global Start
Start: 
    # we are in EL3 / 64 bits mode
    # create the 0x1C010000 + 0x4 address of switches
    mov  x0, #4
    movk x0, #0x1c01, lsl #16
    # value to write
    mov  w1, #0xaa
    # actual writing
    strb w1, [x0]

我似乎陷入了strb指令。为了记录,如果我用strb替换ldrb,我可以正确读取并显示该寄存器的值(我使用--switches标志来确保它有效。)

任何人都知道我在做错了什么?

编辑:感谢unixsmurf建议,我现在知道我得到了一个没有级别更改的同步数据中止异常,原因是“同步外部中止”。我不知道如何进一步检查,我想我会试试ARM的论坛。

最佳,

1 个答案:

答案 0 :(得分:0)

ARM社区终于解决了这个问题。可以找到完整的讨论here