arm启动初期堆栈示意图

RAM (DRAM)
 *
 *  0xC200 0000 +------------------------------------+
 *              |   boot loader (size: 1M)           |
 *  0xC1F0 0000 +------------------------------------+
 *              |   heap area (size: 1M)             |
 *  0xC1E0 0000 +------------------------------------+
 *              |   mmu table (size: 16k)            |
 *  0xC1DF C000 +------------------------------------+ -----/
 *              |   linux command line  (size: 16k)  |       |
 *  0xC1DF 8000 +------------------------------------+       |
 *              |   vivi parameter table (size: 16k) |   vivi private data
 *  0xC1DF 4000 +------------------------------------+       |
 *              |   mtd partition table (size: 16k)  |       |
 *  0xC1DF 0000 +------------------------------------+ -----/
 *              |   stack area (size: 32k)           |
 *  0xC1DE 8000 +------------------------------------+
 *              |                                    |
 *              |                                    |
 *              |   free memory                      |
 *              |                                    |
 *              |                                    |
 *  0xC000 0000 +------------------------------------+
 *
 *
 *
 *  ROM (NOR Flash)
 *
 *  0x0200 0000 +-----------------------------+
 *              |  (stored) vivi private data |
 *  0x01fc 0000 +-----------------------------+
 *              |                             |
 *              |   usr (size: 29.5M)         |
 *              |                             |
 *  0x0024 0000 +-----------------------------+
 *              |   root (size: 1289k)        |
 *  0x0010 0000 +-----------------------------+
 *              |   kernel (size: 728k)       |
 *  0x0004 0000 +-----------------------------+
 *              |   boot loader (size: 256k)  |
 *  0x0000 0000 +-----------------------------+
 *
 */
#include "sizes.h"
#define ROM_BASE0  0x00000000      /* base address of rom bank 0 */
#define ROM_BASE1  0x08000000      /* base address of rom bank 1 */
#define DRAM_BASE0  0x30000000      /* base address of dram bank 0 */
#define DRAM_BASE1  0x38000000 /* base address of dram bank 1 */
/* Global definitions */
#define FLASH_BASE  ROM_BASE0
#define FLASH_SIZE  SZ_32M
#define FLASH_UNCACHED_BASE 0x10000000 /* to mapping flash memory */
#define FLASH_BUSWIDTH  4
#define DRAM_BASE  DRAM_BASE0
#define DRAM_SIZE  SZ_64M
#define MTD_PART_SIZE  SZ_16K
#define MTD_PART_OFFSET  0x00000000
#define PARAMETER_TLB_SIZE SZ_16K
#define PARAMETER_TLB_OFFSET 0x00004000
#define LINUX_CMD_SIZE  SZ_16K
#define LINUX_CMD_OFFSET 0x00008000
#define VIVI_PRIV_SIZE  (MTD_PART_SIZE + PARAMETER_TLB_SIZE + LINUX_CMD_SIZE)
/* ROM */
#define VIVI_ROM_BASE  0x00000000
#define VIVI_PRIV_ROM_BASE 0x01FC0000
/* RAM */
#define VIVI_RAM_SIZE  SZ_1M
#define VIVI_RAM_BASE  (DRAM_BASE + DRAM_SIZE - VIVI_RAM_SIZE)
#define HEAP_SIZE  SZ_1M
#define HEAP_BASE  (VIVI_RAM_BASE - HEAP_SIZE)
#define MMU_TABLE_SIZE  SZ_16K
#define MMU_TABLE_BASE  (HEAP_BASE - MMU_TABLE_SIZE)
#define VIVI_PRIV_RAM_BASE (MMU_TABLE_BASE - VIVI_PRIV_SIZE)
#define STACK_SIZE  SZ_32K
#define STACK_BASE  (VIVI_PRIV_RAM_BASE - STACK_SIZE)
#define RAM_SIZE  (STACK_BASE - DRAM_BASE)
#define RAM_BASE  DRAM_BASE
文章出处:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20081117/151689.html)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值