mmu地址映射
来源:互联网 发布:discuz源码有多大 编辑:程序博客网 时间:2024/06/06 02:50
sdram 是外接一个内存 是64M的空间。 地址范围0x30000000~~0x33FF FFFF。基地址是0x3000 0000
如果以1M大小为空间,就是64块。0x30000000~ 0x30010000 是第一块地址。0x30010000~ 0x30020000.
3F-00= 3F 十进制就是64M.
physicaladdr & 0xFFF00000 就是1M对齐。
virtuladdr >> 20 除以 2的20次方,就是1M
*(mmu_tlb_base + (virtuladdr >> 20)) 基地址+第几个1M
#define MMU_SECTION_SIZE 0x00100000
unsigned long virtuladdr, physicaladdr;
unsigned long *mmu_tlb_base = (unsigned long *)0x30000000;
/*
* Steppingstone的起始物理地址为0,第一部分程序的起始运行地址也是0,
* 为了在开启MMU后仍能运行第一部分的程序,
* 将0~1M的虚拟地址映射到同样的物理地址
*/
virtuladdr = 0;
physicaladdr = 0;
*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \
MMU_SECDESC_WB;
/*
* 0x56000000是GPIO寄存器的起始物理地址,
* GPBCON和GPBDAT这两个寄存器的物理地址0x56000050、0x56000054,
* 为了在第二部分程序中能以地址0xA0000050、0xA0000054来操作GPFCON、GPFDAT,
* 把从0xA0000000开始的1M虚拟地址空间映射到从0x56000000开始的1M物理地址空间
*/
virtuladdr = 0xA0000000;
physicaladdr = 0x56000000;
*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \
MMU_SECDESC;
/*
* SDRAM的物理地址范围是0x30000000~0x33FFFFFF,
* 将虚拟地址0xB0000000~0xB3FFFFFF映射到物理地址0x30000000~0x33FFFFFF上,
* 总共64M,涉及64个段描述符
*/
virtuladdr = 0xB0000000;
physicaladdr = 0x30000000;
while (virtuladdr < 0xB4000000)
{
*(mmu_tlb_base + (virtuladdr >> 20)) = (physicaladdr & 0xFFF00000) | \
MMU_SECDESC_WB;
virtuladdr += 0x100000;
physicaladdr += 0x100000;
}
}
- MMU地址映射过程
- mmu地址映射
- MMU的使用:地址映射
- arm mmu地址重映射
- MMU的使用:地址映射
- u-boot_smdkv210 分析八:MMU地址映射
- u-boot_smdkv210 分析八:MMU地址映射
- 使用AXD调试MMU地址映射程序手记
- MMU 段映射
- 【ARM学习笔记】实验四:内存管理单元MMU的虚拟地址映射实验
- ARMv6 架构下MMU虚拟地址到物理地址二级映射过程
- mmu 二级页映射分析
- 简述MMU和虚拟地址
- 地址映射
- 地址映射
- 地址映射
- 地址映射
- ARM处理器MMU的映射描述符
- JDBC中大文本类型的处理
- Spark core 核心算子优化
- jsp的9大内置对象
- IntelliJ IDEA 2017激活码
- Java 并发编程实战之 基础构建模块
- mmu地址映射
- C语言 strspn函数实现
- linux命令行下文件名中有空格如何处理
- JavaWeb从0开始学(二)-----JSP基本语法与编译指令
- 数据库
- 数据结构--单链表
- Android图片资源的存放目录(hdpi/xhdp...)
- TcpClient初步测试
- PHP基础知识数组问题