04.ARM-mini2440-内存管理单元(MMU)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u012075395/article/details/78865373

04.ARM-mini2440-内存管理单元(MMU)


图中第1种没有使用MMU
图中第2种使用MMU

Created with Raphaël 2.1.0 MINI2440 CPU核 CPU核 MMU MMU 存储管理器 存储管理器 SDRAM SDRAM 2先给(虚拟地址) 2再给 2在给(物理地址) 发出地址 读写数据 1直接给(物理地址) 1直接给(物理地址)

CPU只关心发出地址,读写数据
写程序,链接地址,无需你地址物理地址,只是cpu看到的

虚拟地址怎么转化成物理地址???
使用表格,即是页表
CPU有两种映射方式:
①段(本次使用为段)
②大页、小页,极小页
映射大小为1M,表格数为4G/1M = 4096(表项)
PA VA
0X56000000 2560
PA2
PA1 0——1M

建立映射:

Created with Raphaël 2.1.0 建立映射 VA VA PA PA 0XA0000050 ==》0X56000050 以前是直接读该地址 现在可以直接访问0XA0000050 看是否达到目的
段单位是1M,0XA0000050/1M = 0XA00,如上表。
因此可以使用MMU步骤为;
①建立表格(建立虚拟地址到物理地址的赢映射)
①表格地址告诉MMU(表格放到内存里面,把内存的首地址告诉MMU)
①启动MMU

程序解析

1.片内RAM

存放内容 对应地址
led.o 2048
init.o head.o 0

2.SDRAM

存放内容(或映射地址) 地址 对应的序号
leds.o 0X30004000 -
0XB0004000(1M) 0X30004000 c
0XA0000050(1M) 0X56000050 c
0-1M 0X30000000 a
目标:用虚拟地址点亮LED
1.创建页表,需要创建以下三个页表。
a.0-4096==》0-4096
b.0XB0004000==》0X30004000
c.0XA0000050==》0X56000050

猜你喜欢

转载自blog.csdn.net/u012075395/article/details/78865373