1.stm32f103ze,FSMC初始化已经正确,而且单字节读写没有问题。在使用IAR编译器的情况,内存只能设置一个范围,如下图(1)。现在我想使用扩展的512k内存,像使用内部内存一样使用。如定义 变量 int i; 申请内存 int *p=malloc(sizeof int); 这样的动态使用内存。不知道要怎样编辑 *.icf文件才能达到这样效果? IARç¼è¯å¨ä¸é¢è®¾ç½® 2.以下是我IAR icf文件的设置:但是设置没有效果 /*###ICF### Section handled by ICF editor, don't touch! ****/ /*-Editor annotation file-*/ /* IcfEditorFile="$TOOLKIT_DIR$\config\ide\IcfEditor\cortex_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不熟悉一申请就会进入硬错误中断。 想要大家给予帮助的问题:就是在使用IAR的情况下,怎么设置IAR使使用片外内存向使用片内内存一样?可以使用mallo函数进行动态内存管理?官方虽然有一个例程但是他的例程只能使用片外内存,不能同时使用片内内存。 |
太高深,先帮你顶上去: |
研究的很深啊,关注学习。 |
不懂,帮顶 |
看样子这个帖子没人知道,就这样沉了 |
太深,不懂 |
用内存管理就行了 |
顶一下 |