1.
STM32f103ze,FSMC初始化已经正确,而且单字节读写没有问题。在使用IAR编译器的情况,内存只能设置一个范围,如下图(1)。现在我想使用扩展的512k内存,像使用内部内存一样使用。如定义 变量 int i; 申请内存 int *p=malloc(sizeof int); 这样的动态使用内存。不知道要怎样编辑 *.icf文件才能达到这样效果?
(1)
2.以下是我IAR icf文件的设置:但是设置没有效果
/*###ICF### Sec
tion handled by ICF editor, don't touch! ****/
/*-Editor annotation file-*/
/* IcfEditorFile="$TOOLKIT_DIR$configideIcfEditorcortex_v1_0.xml" */
/*-Specials-*/
define symbol __ICFEDIT_intvec_start__ = 0x08000000;
/*-Memory Regions-*/
define symbol __ICFEDIT_region_ROM_start__ = 0x08000000 ;
define symbol __ICFEDIT_region_ROM_end__ = 0x0807FFFF;
define symbol __ICFEDIT_region_RAM_start__ = 0x20000000;
define symbol __ICFEDIT_region_RAM_end__ = 0x2000FFFF;
define symbol __ICFEDIT_region_EXRAM_start__ = 0x68000000;
define symbol __ICFEDIT_region_EXRAM_end__ = 0x68080000;
/*-Sizes-*/
define symbol __ICFEDIT_size_cstack__ = 0x400;
define symbol __ICFEDIT_size_heap__ = 0x200;
/**** End of ICF editor section. ###ICF###*/
define memory mem with size = 4G;
define region ROM_region = mem:[from __ICFEDIT_region_ROM_start__ to __ICFEDIT_region_ROM_end__];
define region RAM_region = mem:[from __ICFEDIT_region_RAM_start__ to __ICFEDIT_region_RAM_end__]|mem:[from __ICFEDIT_region_EXRAM_start__ to __ICFEDIT_region_EXRAM_end__];
define block CSTACK with alignment = 8, size = __ICFEDIT_size_cstack__ { };
define block HEAP with alignment = 8, size = __ICFEDIT_size_heap__ { };
initialize by copy { readwrite };
do not initialize { section .noinit };
place at address mem:__ICFEDIT_intvec_start__ { readonly section .intvec };
place at address mem:__ICFEDIT_region_EXRAM_start__ { readonly section .bss};
place in ROM_region { readonly };
place in RAM_region { readwrite,
block CSTACK, block HEAP };
3.我在IAR定义已指针,地址是外部内存的首地址0x68000000,使用malloc函数维aMemory1申请内存时会进入硬错误中断。使用数组形式,如:aMemory1[5]={1,2,3,4,5}不会,但是读出来的数据都是错的。
#pragma location = 0x68000000
#pragma pack(8)
__no_init uint8_t *aMemory1;
#pragma pack()
4.keil是可以设置片内和片外内存空间的,如下图(2),但是IAR只能设置一个内存空间。所目前问题是不知道IAR要怎么设置才能达到使用内部外部内存时向使用内存一样的效果?比如说使用malloc申请内存。keil编译器是可以这样去申请。但是IAR不熟悉一申请就会进入硬错误中断。
(2)
想要大家给予帮助的问题:就是在使用IAR的情况下,怎么设置IAR使使用片外内存向使用片内内存一样?可以使用mallo函数进行动态内存管理?官方虽然有一个例程但是他的例程只能使用片外内存,不能同时使用片内内存。
一周热门 更多>