Muxamor 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба МК используется STM32F103 компилятор IAR. Задача. Накапливать за секунду массив данных размером 16 Кбайт (u8 array[16384] )затем отправлять его к другому устройству. Массив объявляется глобально. Столкнулся с такой проблемой, что при объявлении массива размером в 16 Кбайт перестают работать прерывания, при инициализации массива меньшего размера порядка 300 Байт ( u8 array[300] ) все работает как и задумано. При компиляции IAR никаких ошибок не выдает. Как правильно объявлять большой массив данных? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Как обычно - u8 array[16384] Отладчик есть? Гляньте, что не работает. Вероятно при работе с большим массивом у вас проявляется какой-то косяк в вашей логике... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muxamor 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Отладчиком ничего не увидел. В main бегает по циклу опроса флагов. Вышибает если просто в массив перезаписать один элемент в начале main и дальше этот массив нигде не трогать тоесть: u8 array[16384]; main{ array[0]=1; . . . . while(1){ опрос флагов. } } Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Johnny81 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Отладчиком ничего не увидел. В main бегает по циклу опроса флагов. Ну а теперь смотрите регистры прерываний, которые у вас должны срабатывать, NVIC и т.п. ЗЫ массив, надеюсь, не на стеке? ЗЫЫ Еще гляньте в map-файл, все ли у вас там хорошо? Может быть из-за ошибок в скрипте линкера этот массив накладывается на кучу или стек? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Muxamor 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Ну если я правильно понимаю если глобально то не на стеке ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 123 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Вероятно не хватет места на стеке. Не обязательно этому массиву самому на стек налезать, достаточно, чтобы из-за резервирования места под массив остальные переменные сдвинулись и налезли на стек. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
kolobok0 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба ...Как правильно объявлять большой массив данных? начните с того, что уберите лишний код. и создадите болванку которую заархивировав выложить тут. Иначе это всё гадание на кофейной гуще. Имхо - методом отсекания Вы вычислите гораздо быстрее, чем гадать на форумах. (круглый) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
zltigo 1 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Вероятно не хватет места на стеке. Не обязательно этому массиву самому на стек налезать, достаточно, чтобы из-за резервирования места под массив остальные переменные сдвинулись и налезли на стек. Может и вообще памяти не хватает в принципе. Линкеру-то можно указать любое количество памяти. начните с того, что уберите лишний код. и создадите болванку которую заархивировав выложить тут. Иначе это всё гадание на кофейной гуще. Имхо - методом отсекания Вы вычислите гораздо быстрее, чем гадать на форумах. (круглый) Начинать с рассмотрения MAP фала а не с суматошных созданий блованок и распросов на форумах Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MrYuran 17 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Это ещё повезло, что сразу все заткнулось. У меня был случай недавно, буквально на пару байт наползало и портило одну-две переменные. Вот чудес насмотрелся! После этого решил всегда контролировать границу стека. (как те вороны, что решили улететь :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
silverio 0 12 февраля, 2016 Опубликовано 12 февраля, 2016 · Жалоба Здесь автор столкнулся с похожей проблемой: http://catethysis.ru/memory_corrupting_error_finding/ Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться