您的位置:首页 > 其它

SylixOS的BSP开发实例之S3C2416 【第二篇】内存映射与初始布局

2015-07-24 15:16 531 查看
在SylixOS的S3C2416的BSP包中有“SylixOS/bsp/bspMap.h”文件,此文件是操作系统内存布局设置与初始映射配置,在文件的开始有内存分配的描述,描述如下图。



  其中 MMU 页面标识可以在
SylixOS 的 BASE 工程中 “SylixOS/kernel/vmm/pageTable.h” 中获取到,具体参数描述如下图。



/*********************************************************************************************************
physical memory zone
*********************************************************************************************************/
#ifdef __BSPINIT_MAIN_FILE
LW_VMM_ZONE_DESC _G_zonedescGlobal[] = {
{0x31800000, 0x01400000, LW_ZONE_ATTR_DMA}, /* 均可被 DMA 使用 */
{0x32C00000, 0x01400000, LW_ZONE_ATTR_DMA},
};
/*********************************************************************************************************
初始化内存类型与布局 (VMM 管理区的内存不需要在全局初始化表中初始化)
*********************************************************************************************************/
LW_MMU_GLOBAL_DESC _G_globaldescMap[] = {
#ifdef __BOOT_INRAM
/*
* ARM except table
*/
{ /* 中断向量表 */
0x00000000, /* ARM except table */
0x30000000, /* RAM except table */
LW_CFG_VMM_PAGE_SIZE, /* one page size */
(LW_VMM_FLAG_EXEC) /* 文字池类型 */
},
/*
* IROM area
*/
{
(0x00000000 + LW_CFG_VMM_PAGE_SIZE), /* flash 剩下的空间直接映射 */
(0x00000000 + LW_CFG_VMM_PAGE_SIZE),
((8 * LW_CFG_KB_SIZE) - LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_EXEC) /* 文字池类型 */
},
#else /* __DEBUG_IN_FLASH */
/*
* IROM area
*/
{
(0x00000000), /* flash 直接映射 */
(0x00000000),
(8 * LW_CFG_KB_SIZE),
(LW_VMM_FLAG_EXEC) /* 文字池类型 */
},
#endif /* __DEBUG_IN_RAM */
/*
* kernel space
*/
{ /* nSCS0 - SDRAM 6MByte */
(0x30000000),
(0x30000000),
(6 * 1024 * 1024), /* SylixOS Kernel Text */
(LW_VMM_FLAG_EXEC | LW_VMM_FLAG_RDWR) /* 此段可修改, 方便调试 */
},
{ /* nSCS0 - SDRAM 18MByte */
(0x30600000),
(0x30600000),
(18 * 1024 * 1024), /* SylixOS Kernel Memory */
(LW_VMM_FLAG_RDWR) /* 状态属性 CB */
},
{ /* IRAM - SRAM 8KB */
0x40000000,
0x40000000,
(8 * LW_CFG_KB_SIZE),
(LW_VMM_FLAG_EXEC | LW_VMM_FLAG_RDWR)
},
{ /* SDRAM */
0x48000000,
0x48000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* SDRAM */
0x48800000,
0x48800000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* USB Host Controller */
0x49000000,
0x49000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* USB Device Controller */
0x49800000,
0x49800000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* Interrupt Controller */
0x4A000000,
0x4A000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* HS-MMC1 Controller */
0x4A800000,
0x4A800000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* HS-MMC0 Controller */
0x4AC00000,
0x4AC00000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* DMA 0 - 5 Controller */
0x4B000000,
0x4B000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{
4000
/* System Controller */
0x4C000000,
0x4C000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* LCD Controller */
0x4C800000,
0x4C800000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* 2D Controller */
0x4D408000,
0x4D408000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* NAND Flash Controller */
0x4E000000,
0x4E000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* MATRIX & EBI */
0x4E800000,
0x4E800000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* Memory Controllers ( SSMC ) */
0x4F000000,
0x4F000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* UART0 Controller */
0x50000000,
0x50000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* UART1 Controller */
0x50004000,
0x50004000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* UART2 Controller */
0x50008000,
0x50008000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* UART3 Controller */
0x5000C000,
0x5000C000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* PWM Timer Controller */
0x51000000,
0x51000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* HSSPI(SPI Channel 0) */
0x52000000,
0x52000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* Watchdog Timer Controller */
0x53000000,
0x53000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* IIC Controller */
0x54000000,
0x54000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* IIS Multi Audio Interface */
0x55000000,
0x55000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* I/O Port Controller */
0x56000000,
0x56000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* RTC Controller */
0x57000000,
0x57000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* A/D Converter */
0x58000000,
0x58000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* AC97 Audio-CODEC Interface */
0x5B000000,
0x5B000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* PCM Audio Interface */
0x5C000000,
0x5C000000,
(LW_CFG_VMM_PAGE_SIZE),
(LW_VMM_FLAG_DMA) /* 状态属性 NCNB */
},
{ /* 结束 */
0,
0,
0,
0
}
};
#endif /* __BSPINIT_MAIN_FILE */

SylixOS技术讨论群(32537017) SylixOS开发者联盟群(216907470)

系统常用链接:

【1】系统主页  www.sylixos.com

【2】系统百科 
wiki.sylixos.com/index.php/%E9%A6%96%E9%A1%B5

【3】系统下载  git.sylixos.com/cgit/

【4】系统论坛 
bbs.sylixos.com/forum.php

【5】社区新闻 
bbs.sylixos.com/forum.php

【6】清华镜像站点 coop.tuna.tsinghua.edu.cn/git  coop.tuna.tsinghua.edu.cn/git (改版中)

【7】北邮镜像站点(建设中)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息