更新一下修复方案:
问题发生在u-boot-2018/common/board_f.c文件的reserve_board()函数的memset()进行写内存时;
原512M内存的代码在U-Boot运行会出现错误,是由于opensbi的PMP设置中,0xbfxxxxxx地址没有访问权限,故触发异常错误
支持D1 2G内存的主要patch在opensbi的sunxi_platform.c文件sunxi_pmp_region_info()函数中的PMP设置;
正常运行的opensbi:
MIDELEG : 0x0000000000000222 MEDELEG : 0x000000000000b1ff PMP0 : 0x0000000040000000-0x000000004001ffff (A) PMP1 : 0x0000000040000000-0x000000007fffffff (A,R,W,X) PMP2 : 0x0000000080000000-0x00000000bfffffff (A,R,W,X) PMP3 : 0x0000000000020000-0x0000000000027fff (A,异常:
MIDELEG : 0x0000000000000222 MEDELEG : 0x000000000000b1ff PMP0 : 0x0000000040000000-0x000000004001ffff (A) PMP1 : 0x0000000040000000-0x000000007fffffff (A,R,W,X) PMP2 : 0x0000000000000000-0x0000000007ffffff (A,R,W) PMP3 : 0x0000000009000000-0x000000000901ffff (