реклама на сайте
подробности

 
 
> LPC11C24 проблема с большим массивом, Программа выпадает в hardfault при работе с большим массивом
yanvasiij
сообщение Sep 8 2014, 12:57
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Доброго времени суток!

Суть проблемы в следующем. Использую проц lpc11c24 и его встроенный CANopen. Для инициализации этого CANopen его железным API нужно передать многомерную структуру, в которой находится объектный словарь устройства:
Код
typedef struct _CAN_ODENTRY {
  uint16_t index;
  uint8_t  subindex;
  uint8_t  entrytype_len;
  uint8_t  *val;
}CAN_ODENTRY;


Мне потребовался очень большой объектный словарь. Он все рос и рос, пока в один определенный момент все не перестало работать. В этот момент общее число членов многомерной структуры превысило 243.
Что делать, а? Пробовал увеличить стек в startup_LPC11xx.s, но при любых увеличениях значения Stack_Size ничего вообще не стартует, а так рушится при инициализации CANopen. Компилятор keil. RTOS в этом проекте не использую. Спасибо!
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
yanvasiij
сообщение Sep 9 2014, 11:50
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 321
Регистрация: 23-12-11
Из: Уфа
Пользователь №: 69 041



Цитата(demiurg_spb @ Sep 9 2014, 17:30) *
Компилятор вам не сможет дать никаких сообщений если вы явно не резервируете достаточно место под стек (бывает в опциях проекта или makefile)
и фактически место для стека становится недостаточно из-за раздувания секции BSS.
Для локализации проблемы вы можете использовать отладчик и исполнять программу в шаговом режиме, либо написать обработчик прерывания hard_fault и вывести в консоль состояния регистров в момент исключения....

Вот что говорит компилятор до переноса во флеш:
Код
Program Size: Code=16872 RO-data=492 RW-data=2820 ZI-data=4924

А вот, что после (написал const перед многомерной структурой):
Код
Program Size: Code=16872 RO-data=2308 RW-data=1004 ZI-data=4924

Итого порядка 2 кБ.

Место под стек я резервирую в файле startup_LPC11xx.s (если я правильно понимаю). Он при компиляции он "откусит" общей памяти кусочек для стека. Просто, если грешить на стек, то логично попробовать его увеличить, а у меня все рушится при увеличении его в startup_LPC11xx.s.
Что же, последую Вашему совету попробую написать обработчик hard_fault.
Go to the top of the page
 
+Quote Post
adnega
сообщение Sep 10 2014, 04:59
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(yanvasiij @ Sep 9 2014, 15:50) *
Что же, последую Вашему совету попробую написать обработчик hard_fault.

Написали обработчик HardFault?
А что с другими прерываниями? Разрешены/запрещены на момент конфигурирования?
Может возникает прерывание при неполной загрузке структуры? Линия активна, есть другие передающие узлы в сети?
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- yanvasiij   LPC11C24 проблема с большим массивом   Sep 8 2014, 12:57
- - demiurg_spb   Цитата(yanvasiij @ Sep 8 2014, 16:57) А н...   Sep 8 2014, 13:40
|- - Integro   Нужно больше инфы, типовая ошибка при hard_fault э...   Sep 8 2014, 14:05
|- - KRS   Цитата(demiurg_spb @ Sep 8 2014, 17:40) А...   Sep 8 2014, 17:05
- - yanvasiij   Нет во флеше хранить нельзя. Объектный словарь сод...   Sep 9 2014, 04:16
|- - demiurg_spb   Цитата(yanvasiij @ Sep 9 2014, 08:16) Нет...   Sep 9 2014, 07:18
- - yanvasiij   demiurg_spb Справедливое замечание, не подумал об ...   Sep 9 2014, 09:28
|- - demiurg_spb   Цитата(yanvasiij @ Sep 9 2014, 13:28) Нет...   Sep 9 2014, 11:16
- - Dejmos   Keil'ом не пользуюсь, но все таки... какое выр...   Sep 9 2014, 09:57
- - yanvasiij   Цитата(Dejmos @ Sep 9 2014, 15:57) Keil...   Sep 9 2014, 11:21
|- - Dejmos   Цитата(yanvasiij @ Sep 9 2014, 15:21) каж...   Sep 9 2014, 17:54
|- - KRS   Цитата(Dejmos @ Sep 9 2014, 21:54) Я имел...   Sep 9 2014, 20:53
- - yanvasiij   demiurg_spb Освободилось 2072 байт ОЗУ. И это здо...   Sep 9 2014, 11:21
|- - demiurg_spb   Компилятор вам не сможет дать никаких сообщений ес...   Sep 9 2014, 11:30
- - yanvasiij   Вообщем дело было не в бобине... У этого проца огр...   Sep 12 2014, 12:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 09:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01375 секунд с 7
ELECTRONIX ©2004-2016