Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Iar объявление динамического массива
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
memory
Iar объявление динамического массива
Привет всем участникам форума, проблема в следующем - есть глобальный массив unsigned char DATA[32][16], при компиляции выскакивает ошибка линковщика
Error[e16]: Segment CSTACK (size: 0x100 align: 0) is too long for segment definition.
At least 0xb more bytes needed.
The problem occurred while processing the segment placement command
"-Z(DATA)CSTACK+_..X_CSTACK_SIZE=_..X_SRAM_BASE-_..X_SRAM_END", where at the moment of placement the available memory ranges were "DATA:40b-4ff" Reserved ranges relevant to this placement: DATA:100-304 NEAR_I
DATA:305-3ca NEAR_Z
DATA:3cb-40a RSTACK
DATA:40b-4ff CSTACK
Насколько я понял этот массив передается через стек и не вмещается в нем, как объявить его динамически, то-есть привязать конкретной области памяти флеша.
Палыч
const unsigned char __flash DATA[32][16];

... или вопрос был о другом?
Dog Pawlowa
Цитата(memory @ Apr 23 2012, 20:13) *
Насколько я понял этот массив передается через стек и не вмещается в нем, как объявить его динамически, то-есть привязать конкретной области памяти флеша.

Поняли Вы неправильно. У Вас объем используемой памяти в ОЗУ не оставляет места для стека.
Передача через стек ни при чем.
memory
Спасибо всем откликнувшимся, директива __flash решила проблему на 99% , уже и массив в ОЗУ не располагается, и место на стек хватает. Как сделать так, чтобы массив располагался в конце кода программы, например его первый элемент должен находится в ячейке 500hex. Этот массив будут редактировать люди, не имеющие отношение к программированию, надо сделать так чтобы дамп программы а именно массив хорошо читался в блокноте.
Палыч
Цитата(memory @ Apr 24 2012, 08:21) *
Как сделать так, чтобы массив располагался в конце кода программы, например его первый элемент должен находится в ячейке 500hex.

См.: IAR C/C++ Compiler Reference Guide -> Part 1. Using the compiler -> Efficient coding for embedded applications -> Controlling data and function placement in memory
memory
В принципе все работает , только без __flash компилятор не инициализирует значения массива а так всё нормально

#pragma location=0x1000
__flash const unsigned char DATA[32][16]={//0x00 Ford_Fokus_2
0x00,0x00,0x04,0x20,0x08,0x59,0xEF,0x00,0x5E,0x42,0x10,0x03,0x32,0x00,0x96,0xFF,
//0x01 Ford_Fokus_3
0x00,0x00,0x02,0x18,0x08,0x99,0x22,0x8F,0x00,0x00,0x00,0x00,0x00,0x00,0x14,0xFF,
//0x02 Ford_Mondeo
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.