首先需要分析,开发板需要使用哪些地址,哪些需要映射,以及是否需要使用cache和write buffer如下:
1、程序一开始从0地址开始运行,为了保证使能mmu之后,前后地址一致,所以0地址需要映射
即虚拟地址0映射到物理地址0,可以使用cache和buffer11
2、栈,如果是nor启动,需要用到栈0x40000000,
即虚拟地址0x40000000映射到物理地址0x40000000,可以使用cache和buffer11
3、中断的跳转地址,于是映射整个sdram,大小为0x30000000到0x34000000共64M,那么就应该映射到0x33f00000
即虚拟地址0x40000000映射到物理地址0x40000000,可以使用cache和buffer11
4、映射寄存器,查看手册,确定寄存器的范围0x48000000到0x5b00001c,则最后一个条目的地址是0x5b000000
即虚拟地址0x48000000映射到物理地址0x40000000,不可以使用cache和buffer00
5、framebuffer 0x33c00000
即虚拟地址0x33c00000映射到物理地址0x33c00000,不可以使用cache和buffer00
为了演示虚拟地址起作用,修改链接地址,由0x30000000改为0xb0000000
6、映射0xb0000000到物理地址0x3000000,可以使用cache和buffer 11
以上只是确定了待会儿要干什么,具体怎么做?