Миландр

Ключевым подразделением нашей компании является Центр Проектирования интегральных микросхем
Текущее время: 2018-ноя-14 19:29

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: 1986ВЕ1Т + GCC (+LwIP)
СообщениеДобавлено: 2018-ноя-07 14:12 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 10
Доброго времени суток.

Возникла необходимость в использовании библиотеки LwIP.
Как пример был использован проект от R Max.

Если собрать пример в keil, то прошивка работает. Контроллер получает ip адрес с помощью dhcp и отвечает на icmp запрос. Собирается без CMSIS Driver.

Если же собрать аналогичный проект с помощью GCC(используется ubuntu и eclipse), то этого не происходит. Во время отладки при вызове функции net_init() происходит hard fault. Функция net_init в свою очередь вызывает функцию lwip_init(), в которой происходит вызов библиотечных функций инициализации памяти (похожая проблема также была при попытке использовать FreeRTOS).

Оба проекта во вложении. Файлы с исходным кодом должны быть одинаковы в обоих проектах, за исключением startup-файлов и атрибута aligned в файле ethernetif.c.
Используется плата от LDM.

Хотел бы попросить помощи чтобы разобраться в чем может быть причина.

Кстати, при работе на частоте 144 МГц корпус контроллера ощутимо нагревается. Так и должно быть?


Вложения:
MDR1986BE1T.7z [1.55 МБ]
Скачиваний: 5
LwIP_rmax.7z [1.26 МБ]
Скачиваний: 5
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1986ВЕ1Т + GCC (+LwIP)
СообщениеДобавлено: 2018-ноя-08 09:42 
Не в сети

Зарегистрирован: 2017-апр-26 14:51
Сообщения: 175
Откуда: ПКК "Миландр"
Попробуйте по стеку посмотреть откуда был выход в HardFault и в этом месте сравните ассемблерный код сгенерированный компиляторами.
Возможно происходит какой-нибудь невыровненный доступ по адресу, например вследствие оптимизации или разных ключей компиляции.

немного, про раскручивание стека - https://startmilandr.ru/doku.php/prog:debug:stack

Можно попробовать собрать рабочий проект под компилятор ARM v6 (выбирается в настройках проекта Keil, Target). В нем заявлена совместимость с GCC и если выход в HardFault произойдет, то проще будет отследить разницу в ассемблерных инструкциях из одной среды.

_________________
Отдел технической поддержки support@milandr.ru


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: 1986ВЕ1Т + GCC (+LwIP)
СообщениеДобавлено: 2018-ноя-08 11:21 
Не в сети

Зарегистрирован: 2018-сен-14 15:48
Сообщения: 10
Vasiliy писал(а):
Попробуйте по стеку посмотреть откуда был выход в HardFault и в этом месте сравните ассемблерный код сгенерированный компиляторами.
Возможно происходит какой-нибудь невыровненный доступ по адресу, например вследствие оптимизации или разных ключей компиляции.

немного, про раскручивание стека - https://startmilandr.ru/doku.php/prog:debug:stack

Можно попробовать собрать рабочий проект под компилятор ARM v6 (выбирается в настройках проекта Keil, Target). В нем заявлена совместимость с GCC и если выход в HardFault произойдет, то проще будет отследить разницу в ассемблерных инструкциях из одной среды.


Проблема оказалась в том, что при обработке прерываний от таймера использовался обработчик по умолчанию. При отладке он отображался как HardFault_Handler.

В стартап - файле для keil обработчик назван TIMER4_IRQHandler(как и в проекте), для gcc - Timer4_IRQHandler.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: brutal_codemaker и гости: 7


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB