📄 mmu.h
字号:
#ifndef _MMU_H#define _MMU_H#include "s3c2410.h"#define SDRAM_BASE 0x30000000#define SDRAM_LIMIT 0x34000000#define SFR_BASE 0x48000000#define SFR_LIMIT 0x60000000#define EXCEPTION_VECTOR_BASE 0xffff0000#define EXCEPTION_VECTOR_LIMIT 0xffffffff#define DSP_BASE 0x08000000#define DSP_LIMIT 0x10000000#define SMALL_PAGE_SIZE 4096/* * */#define PAGE_TABLE_ENTRIES 256#define PAGE_TABLE_ENTRY_SIZE 4#define PAGE_TABLE_SIZE (PAGE_TABLE_ENTRIES)*(PAGE_TABLE_ENTRY_SIZE)/* * DIRECTORY: 页目录表,该表总共有4096个目录项 * 所处地址范围: 0x30000000~0x30003fff */#define DIRECTORY_ENTRIES 4096#define DIRECTORY_ENTRY_SIZE 4#define DIRECTORY_BASE 0x30000000#define DIRECTORY_SIZE (DIRECTORY_ENTRIES)*(DIRECTORY_ENTRY_SIZE)/* * RAM_PAGE_TABLE_BASE: SDRAM的页表,总共有64个页表 * 每个页表有256个页表项 * 所处地址范围: 0x30004000~0x30013fff */#define RAM_PAGE_TABLE_BASE (DIRECTORY_BASE)+(DIRECTORY_SIZE)#define RAM_PAGE_TABLES ((SDRAM_LIMIT)-(SDRAM_BASE))>>20#define RAM_PAGE_TABLE_SIZE (RAM_PAGE_TABLES)*(PAGE_TABLE_SIZE)/* * SFR_PAGE_TABLE_BASE: SFR的页表,总共有384个页表 * 每个页表有256个页表项 * 所处地址范围: 0x30014000~0x30073fff */#define SFR_PAGE_TABLE_BASE (RAM_PAGE_TABLE_BASE)+(RAM_PAGE_TABLE_SIZE)#define SFR_PAGE_TABLES ((SFR_LIMIT)-(SFR_BASE))>>20#define SFR_PAGE_TABLE_SIZE (SFR_PAGE_TABLES)*(PAGE_TABLE_SIZE)/* * VECTOR_PAGE_TABLE_BASE:中断向量表所使用的页表,只需要1个页表 * 该表有256个页表项 * 所处地址范围: 0x30074000~0x300743ff */#define VECTOR_PAGE_TABLE_BASE (SFR_PAGE_TABLE_BASE)+(SFR_PAGE_TABLE_SIZE)#define VECTOR_PAGE_TABLES 1#define VECTOR_PAGE_TABLE_SIZE (VECTOR_PAGE_TABLES)*(PAGE_TABLE_SIZE)/* * DSP_PAGE_TABLE_BASE:DSP地址使用的页表,只需要128个页表 * 每个页表有256个页表项 * 所处地址范围: 0x30075000~0x30094fff */#define DSP_PAGE_TABLE_BASE 0x30075000#define DSP_PAGE_TABLES ((DSP_LIMIT)-(DSP_BASE))>>20#define DSP_PAGE_TABLE_SIZE (DSP_PAGE_TABLES)*(PAGE_TABLE_SIZE)/* * 内核的起始地址,必须是4KB的边界,所以从我决定从0x30095000开始 */#define KERNEL_BASE 0x30095000//Level One Descriptor Attribute#define COARSE_PAGE (1) /* indicates that this is a Coarse page descriptor */#define SPECIAL (1<<4) /* must be 1 */#define CLIENT (0<<5)#define MANAGER (1<<5)#define COARSE_PAGE_DESC (COARSE_PAGE|SPECIAL)//Level Two Descriptor Attribute#define SMALL_PAGE (2<<0)#define BUFFERABLE (1<<2) /* bufferable */#define CACHEABLE (1<<3) /* cacheable *//* * Supervisor模式下的代码对该页的访问具有read/write权限 * User模式下的代码对该页的访问具有read权限 */#define AP0 (2<<4)#define AP1 (2<<6)#define AP2 (2<<8)#define AP3 (2<<10)#define SMALL_PAGE_DESC (SMALL_PAGE|AP0|AP1|AP2|AP3)#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -