arm9 bootloader 的 MMU配置与使用--section

本文介绍了ARM9 Bootloader中MMU的配置和使用,强调了将虚拟地址转化为物理地址的重要性。在配置MMU时,包括建立一级页表、设置TTB寄存器和启用MMU三个步骤。通过分析代码,解释了一级页表的工作原理,展示了如何根据虚拟地址的高位和TTB来确定物理内存的段地址,结合MMU_SECDESC完成地址映射。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  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   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值