ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
169838
ipruzhinin (23.10.2009 17:39, просмотров: 1387) reZident
LPC2478 SDRAM+IAR5.20 - Проблема. Имею борду с упомянутым камнем + 16Мх16 Самсунг SDRAM. Инициализирую как в многочисленных примерах от ИАРа и кейла. Тест из примера (где используется взятая из линкера константа SDRAM_BASE_ADDR в качестве указателя) отрабатывает нормально по всей памяти. Жопа наступает когда обращаюсь к массиву помещенному в SDRAM или когда размещаю HEAP в SDRAM и пытаюсь работать с динамической памятью. Такое чувство это именно компилятор некорректно работает с переменными размещенными в SDRAM или с указателями (с адресом массива в SDRAM). В линкере прописываю: define symbol __VRAM_size__ = 0x9600; define symbol __SAVE_VRAM_size__ = 4 * __VRAM_size__; define symbol __region_SDRAM_start__ = 0xA0000000; define symbol __region_SDRAM_end__ = 0xA1FFFFFF; define symbol __region_SDRAM_VRAM_start__ = __region_SDRAM_start__; define symbol __region_SDRAM_VRAM_end__ = __region_SDRAM_VRAM_start__+__VRAM_size__ - 1; define symbol __region_SDRAM_SAVE_VRAM_start__ = __region_SDRAM_VRAM_end__ + 1; define symbol __region_SDRAM_SAVE_VRAM_end__ = __region_SDRAM_SAVE_VRAM_start__+__SAVE_VRAM_size__-1; define symbol __region_SDRAM_APPL_start__ = __region_SDRAM_SAVE_VRAM_end__+1; define symbol __region_SDRAM_APPL_end__ = __region_SDRAM_end__; define region vramRgn = mem:[from __region_SDRAM_VRAM_start__ to __region_SDRAM_VRAM_end__]; place at start of vramRgn {section VRAM_RGN_SECTION}; define region vramSaveRgn = mem:[from __region_SDRAM_SAVE_VRAM_start__+__VRAM_size__ to __region_SDRAM_SAVE_VRAM_end__]; place at start of vramSaveRgn {section VRAM_SAVE_RGN_SECTION}; define region externalMemory_region= mem:[from __region_SDRAM_APPL_start__ to __region_SDRAM_APPL_end__]; place at start of externalMemory_region {section EXT_MEMORY_SECTION}; define exported symbol SDRAM_BASE_ADDR = __region_SDRAM_start__; define exported symbol SDRAM_CAPACITY = __region_SDRAM_end__ - __region_SDRAM_start__ + 1; define exported symbol SDRAM_VRAM_ADDR = __region_SDRAM_VRAM_start__; define exported symbol SDRAM_SAVE_VRAM_ADDR = __region_SDRAM_SAVE_VRAM_start__; place in externalMemory_region { block HEAP };