使用 lpddr2 引导 sama5d2

Booting sama5d2 with lpddr2

我有一个 SAMA5D26C 和一个 LPDDR2 EDB1332BDBH-1。 CPU 成功启动 ROMBOOT 并且能够从 QSPI 内存加载 at91bootstrap。我从 at91bootstrap 获得调试输出,但我无法加载 linux.

进一步调查显示 RAM 初始化工作正常,但 CPU 在尝试将设备树从闪存加载到 RAM 时挂起。

所以我添加了这个循环:

volatile char * ptr = (char *)0x20000000;
while(1) {
    dbg_info("ptr: %x value: %c\n", ptr, *ptr);
    ptr += 1;
}

这给了我预期的输出:

ptr: 0x20000000 value: U
ptr: 0x20000001 value: U
...

直到:

...
ptr: 0x203ffffe value: U
ptr: 0x203fffff value:
ptr: 0x203fffff value:
ptr: 0x203fffff value:
ptr: 0x203fffff value:
ptr: 0x203fffff value:
ptr: 0x203fffff value:

似乎我无法访问超过 4MB 的内存,即使我的 RAM 大小是 128 MB。我已经验证我可以从 RAM 写入和读取低于 4MB 的值。

为什么不是所有的物理内存都可以访问,为什么在 0x203ffffff 之后 ptr 没有增加?

原来是 TrustZone 被禁用了。