您好,
由于设备的 RAM 使用率几乎已满,且具有256KB (261983字节的读写数据存储器(绝对值+ 50 337 788))
我想使用 SRAM 区域,这是否可以通过编辑链接器脚本实现?
我可以使用现有的 SRAM 区域吗? 如果是的话——我需要一些关于如何处理这个问题的指示。
链接器文件如下所示:
//SOC -*-ASM-*-
//************************************************************
//_________ _________ _________________ _________ _________ _________________ _________ **
//(_______________________)(_______)_______**
//|(\/|(\/)(|()||()|)(|()|**
//|(_______) ||||| ||||||(_____)|||||(_____)|**
//(_____ )||||||| ||||_________) |||__|**
//)|||||||| |||(||||()|**
////>)|(________________)____|(____|(____)|)||||)(|**
//_________________ )(_________________ /_________________ /(______________ )|/)_(|/\|**
//**
//(c) 2010 SCIOPTA Systems AG/ Schweiz **
//**
//************************************************************
// ID:S102BS1 **
//$Revision:1.1.2.2 $**
//美元日期:20 12年10月04日 07:30:56美元**
// TMS570的内核脚本(IAR5版)**
//************************************************************
//EOC
/*-特别计划-*/
定义符号__ICFEDIT_intvec_start__= 0x00000000;
定义符号__ICFEDIT_appintvec_start__= 0x00040000;
/*-内存区域-*/
定义符号_region_rom_start__= 0x00040040;
定义符号_region_rom_end__= 0x002FFFFFF7;/*
。对于旧 CPU */
定义符号_region_RAM_START__= 0x08000000;
为旧 CPU *定义符号_region_RAM_end__= 0x0803ffff;/* 0x08027fff
定义符号_region_EXT_MRAM_START__= 0x60000000;
定义符号_region_EXT_MRAM_END_= 0x6007FFFF;
定义符号_region_EXT_SRAM_START__= 0x64000000;
定义符号_region_EXT_SRAM_END_= 0x6407FFFF;
/*是 resethook 所需要的*/
导出符号_region_RAM_end_;
/*定义一些块以将某些段保持在一起*/
/*Define block debug with alignment =4, maximum size =512K { section .debug*};*/
定义对齐=4的块内核,最大大小=512K { section .text_krn*};
/*定义带对齐=4的块 INTVEC,最大尺寸=0x1000 {部分.intvec };*/
定义带对齐=4的块 NO_cache,最大大小=0x1000 {节.NO_Cache_SRAM };
定义对齐=4的块堆,大小=0x24900 {};
定义对齐=4的块 CSTACK,大小=0xFF0 {};
定义对齐=4,大小=0x10 {};的块 IRQ_STACK
定义对齐=4,大小=0x10 {};
定义块 und_stack,对齐=4,大小=0x10 {};
定义大小为4G 的内存内存内存内存;
定义区域 ROM_region = mem:[从_region_ROM/start__到_region_ROM/end__];
定义区域 RAM_region = mem:[从_region_RAM_START__到_region_RAM_END_];
定义地区代码覆盖率=百万分:[从_region_EXT_MRAM_START_到_region_EXT_MRAM_END_];
定义区域 RAM_EXT_REARY = mem:[从_region_EXT_SRAM_START__到_region_EXT_SRAM_END___;
/*定义引导加载程序版本的区域*/
定义符号_region_ROM_APPVERSION_ADDR_START__= 0x002FFFFFF8;
定义符号_region_ROM_APPVERSION_ADDR_END_= 0x002FFFFFFB;
定义区域 APPVERSION_ROM_REARION = mem:[从_region_ROM_APPVERSION_ADDR_START_到_region_ROM_APPVERSION_ADDR_END_];
/*定义内存映射1的区域*/
定义符号_region_MEMAP_ADDR_START__= 0x00018000;
定义符号_region_MEMAP_ADDR_END_= 0x0001FFFF;
定义区域 MEM_region = mem:[从_region_MEMAP_ADDR_START_到_region_MEMAP_ADDR_END_];
/*定义语言区域*/
定义符号_region_languages _ADDR_START__= 0x00280000;
定义符号_region_languages_ADDR_End__= 0x002FFF00;
定义地区语言区域= mem:[从_region_languages _ADDR_START__到_region_languages _ADDR_END_];
通过副本初始化{ readwrite };
请勿初始化{.noinit 部分,.no_cache_SRAM 部分,.CODECOVERAGE 部分};
放置在地址 mm:__ICFEDIT_intvec_start__{ readonly section .intvec };
放置在地址 mm:__ICFEDIT_appintvec_start__{ readonly section .appintvec };
/*确保无电视电视频道是第一! *
/*在 ROM_region 的位置{阻止 INTVEC };*/
放置在 ROM_region {只读,块内核}中;
放置在 RAM_REARIENAR { readwrite };
放置在 RAM_region {块 NO_cache,块堆,块 IRQ_stack,块 FIQ_stack,块 und_stack,块 und_stack, 阻止 CSTACK };
放置在 MEMORYMAP_region { section .MEMAP }中;
置于代码覆盖范围{.CODECOVERAGE 部分};
放置在 RAM_EXT_REARY { section .EXTRAM }中;
放置在 APPVERSION_ROM_REARION {章节.MBVERSION }中;
在 Languages_region 中放置{ LANGREF 部分};