1 #define GPBCON (volatile unsigned long*)0xA0000010
2 #define GPBDAT (volatile unsigned long*)0xA0000014
3
4 /*
5 * 用于段描述符的一些宏定义
6 */
7 #define MMU_FULL_ACCESS (3 << 10) /* 访问权限 */
8 #define MMU_DOMAIN (0 << 5) /* 属于哪个域*/
9 #define MMU_SPECIAL (1 << 4) /* 必须是1*/
10 #define MMU_CACHEABLE (1 << 3) /* cacheable */
11 #define MMU_BUFFERABLE (1 << 2) /* bufferable */
12 #define MMU_SECTION (2 << 0) /* 段描述符 */
13 #define MMU_SECDESC (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | MMU_SECTION)
14 #define MMU_SECDESC_WB (MMU_FULL_ACCESS | MMU_DOMAIN | MMU_SPECIAL | MMU_CACHEABLE | MMU_BUFFERABLE | MMU_SECTION)
15
16
17 void create_page_table(void)
18 {
19 unsigned long *ttb = (unsigned long *)0x30000000;
20 unsigned long vaddr, paddr;
21
22 vaddr = 0xA0000000;
23 paddr = 0x56000000;
24
arm9 bootloader 的 MMU配置与使用--section
最新推荐文章于 2025-04-04 14:40:40 发布
本文介绍了ARM9 Bootloader中MMU的配置和使用,强调了将虚拟地址转化为物理地址的重要性。在配置MMU时,包括建立一级页表、设置TTB寄存器和启用MMU三个步骤。通过分析代码,解释了一级页表的工作原理,展示了如何根据虚拟地址的高位和TTB来确定物理内存的段地址,结合MMU_SECDESC完成地址映射。

最低0.47元/天 解锁文章
2578

被折叠的 条评论
为什么被折叠?



