Страница 1 из 1

Program exit reached.

Добавлено: Вс авг 25, 2013 23:15:27
bishop-strip
Добрый вечер! Работаю с платой STM32F4DISCOVERY, по SPI1 подключил плату enc28j60.
Разрабатываю в IAR'е. Прикрепил билиотеку FATFS, вроде всё работает.... однако стали иногда появлятсься такие вот ошибки:
Mon Aug 26, 2013 00:13:28: Program exit reached.
И отладка уходила в бесконечный цикл. Происходило это при выполнении строки:
char *xmlMessage = (char*)malloc(cmdStop + strlen("</Command>") - cmdStart)

посмотрите на рисунке:
http://clip2net.com/s/5D5PwW

Вот какая незадача...:(, что случилось? почему при попытки выделить память, плата уходит в бесконечный цикл?
заранее спасибо!

Re: Program exit reached.

Добавлено: Пн авг 26, 2013 21:58:58
bishop-strip
Товарищи профессионалы и любители, неужели никто с такой проблемой не сталкивался и не знает, что может быть?!?! :o

Re: Program exit reached.

Добавлено: Чт авг 29, 2013 09:23:04
balmer
Обычно в библиотеках уходят в бесконечный цикл, когда происходит непоправимая ошибка. Например в твоем случае возможно память кончилась. Даже стандартный assert - это просто бесконечный цикл внутри.

В твоем же случае скорее всего была вызвана стандартная функция exit для выхода из приложения.

Re: Program exit reached.

Добавлено: Чт сен 05, 2013 22:54:52
bishop-strip
Неужели так памяти мало, что я не могу выделить в стеке 550 байт + 550 для Ethernet, в итоге 1кб? И вылетает ошибка void HardFault_Handler(void);
Я исаользоват FatFS, но так как из-за возможной нехватки памяти возникала ошибка, я сделал на PETIT FS, которая гораздо меньше и всё равно таже ошибка!!:(:(
Вот что я снял в дизассемблере:

До HardFault_Handler:
Изображение
После:
Изображение

Уходит в HardFault_Handler if (fmt) return FR_NO_FILESYSTEM;
Изображение

может конечно этой информации малова-то, но всё же...
Помогите с этой проблемой товарищи! :o

Re: Program exit reached.

Добавлено: Сб сен 07, 2013 22:20:59
bishop-strip
Проблема исчезла, похоже была из-за записи данных за пределы неконтролируемых ( те которые я не выделял в стеке или куче) областей памяти.

Re: Program exit reached.

Добавлено: Пн окт 14, 2013 20:35:32
misyachniy
bishop-strip писал(а):Неужели так памяти мало, что я не могу выделить в стеке 550 байт + 550 для Ethernet, в итоге 1кб? И вылетает


Для malloc стек как бы не очень нужен.
malloc берет память из кучи(heap)