⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 memregions.h

📁 Hermit-at-1.1.3,一款bootloader
💻 H
字号:
/* * Copyright (c) 2006 Atmark Techno, Inc. */#ifndef _HERMIT_A3X0_MEMREGIONS_H_#define _HERMIT_A3X0_MEMREGIONS_H_#ifndef __ASSEMBLER__#define FLASH_MAP_FMT    ("%p:%p FLA %s bf:8K bl:%s\n")#define RAM_MAP_FMT      ("%p:%p RAM %s\n")#define SET_MAP_START(index, _start) (regions[index].start = _start)#define SET_MAP_SIZE(index, _size)   (regions[index].size = _size)#define SET_MAP_NAME(index, _name)   (strcpy(regions[index].name, _name))#define SET_MAP_BLOCK(index, _block) (strcpy(regions[index].block, _block))#define SET_MAP_TYPE(index, _type)   (regions[index].type = _type)#define MAP_START(index) (regions[index].start)#define MAP_END(index)   (regions[index].start + regions[index].size - 1)#define MAP_SIZE(index)  (regions[index].size)#define MAP_NAME(index)  (regions[index].name)#define MAP_BLOCK(index) (regions[index].block)#define PRINT_FLASH_MAP(index) \({                             \  hprintf(FLASH_MAP_FMT,       \          MAP_START(index),    \          MAP_END(index),     \          MAP_NAME(index),     \          MAP_BLOCK(index)     \	  );                   \})#define PRINT_RAM_MAP(index)   \({                             \  hprintf(RAM_MAP_FMT,         \          MAP_START(index),    \          MAP_END(index),     \          MAP_NAME(index)      \	  );                   \})struct region_table {  int		mode;  char		name[64];  int		type;  unsigned long	start;  unsigned long	size;  char		block[48];};#define MAX_REGION_NUM 16extern struct region_table regions[MAX_REGION_NUM];extern void print_map(int index);enum {  MAP_NO_IPL = 0,  MAP_NO_BOOTLOADER,  MAP_NO_KERNEL,  MAP_NO_USERLAND,  MAP_NO_CONFIG,  MAP_NO_5,  MAP_NO_6,  MAP_NO_7,  MAP_NO_8,  MAP_NO_9,  MAP_NO_10,  MAP_NO_11,  MAP_NO_12,  MAP_NO_13,  MAP_NO_14,  MAP_NO_DRAM1 = MAX_REGION_NUM - 1,};enum {  MAP_MODE_UNKNOWN = 0,  MAP_MODE_RESIZABLE,  MAP_MODE_DYNAMIC,  MAP_MODE_STATIC,};enum {  MAP_TYPE_UNKNOWN = 0,  MAP_TYPE_FLASH,  MAP_TYPE_RAM,};/* We have three types of regions *  - static: user is not allow to change any parameters *  - dynamic: all parameters are configurable *  - resizable: index, name and type are configurable, *               any other parameter is fixed */#define STATIC_REGION(_index, _name, _type, _start, _size, _block)    \  [MAP_NO_##_index] = {                                               \	.mode	= MAP_MODE_STATIC,                                    \	.name	= _name,                                              \	.type	= MAP_TYPE_##_type,                                   \	.start	= _start,                                             \	.size	= _size,                                              \	.block	= _block,                                             \  }#define DYNAMIC_REGION(_index, _name, _type, _start, _size, _block)   \  [MAP_NO_##_index] = {                                               \	.mode	= MAP_MODE_DYNAMIC,                                   \	.name	= _name,                                              \	.type	= MAP_TYPE_##_type,                                   \	.start	= _start,                                             \	.size	= _size,                                              \	.block	= _block,                                             \  }#define RESIZABLE_REGION(_index, _name, _type, _start, _size, _block) \  [MAP_NO_##_index] = {                                               \	.mode	= MAP_MODE_RESIZABLE,                                 \	.name	= _name,                                              \	.type	= MAP_TYPE_##_type,                                   \	.start	= _start,                                             \	.size	= _size,                                              \	.block	= _block,                                             \  }#endif#define FLASH_START             (0x50000000)#define FLASH_SIZE		(0x00800000)#define STACK_START		(0x00010000)#define DRAM1_START		(0x00000000)#define DRAM1_SIZE		(0x04000000)#define DRAM1_LINUX		(0xc0000000)#define FLASH_IPL_START		(FLASH_START + 0x00000000)#define FLASH_IPL_SIZE		(0x00002000)#define FLASH_BOOTLOADER_START  (MAP_START(MAP_NO_BOOTLOADER))#define FLASH_BOOTLOADER_SIZE   (MAP_SIZE (MAP_NO_BOOTLOADER))#define FLASH_KERNEL_START      (MAP_START(MAP_NO_KERNEL))#define FLASH_KERNEL_SIZE       (MAP_SIZE (MAP_NO_KERNEL))#define FLASH_USERLAND_START    (MAP_START(MAP_NO_USERLAND))#define FLASH_USERLAND_SIZE     (MAP_SIZE (MAP_NO_USERLAND))#define FLASH_CONFIG_START      (MAP_START(MAP_NO_CONFIG))#define FLASH_CONFIG_SIZE       (MAP_SIZE (MAP_NO_CONFIG))#define FLASH_OPTION_START      (FLASH_START + 0x0000e000)#define FLASH_OPTION_SIZE       (0x00002000)#define LINUX_PARAM_ADDRESS     (DRAM1_START + 0x00000100)#define LINUX_PARAM_SIZE        (0x00000f00)#define LINUX_SRC_ADDRESS       (FLASH_KERNEL_START)#define LINUX_SRC_SIZE          (FLASH_KERNEL_SIZE)#define LINUX_LOAD_ADDRESS      (DRAM1_START + 0x00028000)#define INITRD_SRC_ADDRESS      (FLASH_USERLAND_START)#define INITRD_SRC_SIZE         (FLASH_USERLAND_SIZE)#define INITRD_LOAD_ADDRESS     (DRAM1_START + 0x00800000)#define INITRD_START_ADDRESS	(DRAM1_LINUX + 0x00800000)#define GUNZIP_MEM_SIZE		(0x20000)#define GUNZIP_MEM_BASE		(DRAM1_START + DRAM1_SIZE - \				 GUNZIP_MEM_SIZE - 0x10000)#define SECTOR_IDX_IPL		0#define SECTOR_IDX_BOOTLOADER	1#define SECTOR_IDX_KERNEL	8#define SECTOR_IDX_USERLAND	40#if !defined(__ASSEMBLER__)unsigned int get_flash_sector_size(int sector);#endif#ifndef __ASSEMBLER__#if defined(EXPERIMENTAL)#include <target/command.h>extern const command_t region_command;#endif#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -