|
STM32F417 вылетает в Hard Fault, NOCP |
|
|
|
Oct 4 2014, 13:16
|

Местный
  
Группа: Свой
Сообщений: 257
Регистрация: 2-12-06
Из: Default City
Пользователь №: 23 021

|
Цитата(jcxz @ Oct 4 2014, 12:32)  Это какой именно prefetch отключили? Интересно. И действительно все fault-ы после этого прекратились?
PS: У Вас кстати LwIP плохо портирован (или вообще не портирован) на Cortex. Видно по куску кода в самом первом посте (SWAP_BYTES_IN_WORD). Отключил FLASH_ACR_PRFTEN. После этого, пока не было ни одного Hard_Fault. Я как-то и падения производительности не заметил. Сейчас 5 фильтров IIR использующих FPU крутятся и 50 частот обрабатывается алгоритмом Герцеля + Speex. Хватает еще и на сеть вполне. По поводу оптимизации LwIP, это тот который в STM32Cube идет. То есть, я его ни как не правил, наверное его ни кто не оптимизировал под Cortex.
|
|
|
|
|
Oct 4 2014, 20:01
|

фанат дивана
     
Группа: Свой
Сообщений: 3 387
Регистрация: 9-08-07
Из: Уфа
Пользователь №: 29 684

|
Цитата(Quasar @ Oct 4 2014, 19:16)  Отключил FLASH_ACR_PRFTEN. У вас наверное ревизия A. Там не работает префетч, это описано в еррате. В ревизии Z это исправили. Я использовал вот такой код, чтобы включать префетч только в ревизии Z: Код static const uint32_t REVISION_Z = 0x10010000; FLASH->ACR = 0 | ((DBGMCU->IDCODE & DBGMCU_IDCODE_REV_ID) == REVISION_Z ? FLASH_ACR_PRFTEN : 0) | FLASH_ACR_ICEN | FLASH_ACR_DCEN | FLASH_ACR_LATENCY_5WS ;
--------------------
Если бы я знал, что такое электричество...
|
|
|
|
|
Jan 27 2016, 06:16
|
Гуру
     
Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521

|
Цитата(Quasar @ Oct 4 2014, 10:02)  Переразвел немного железку, увеличил стеки, перетащил работу FPU в один поток. Все равно продолжились вылеты. То NOCP, то Undefened Instruction. Отключил префтеч. буфер, HardFault'ы как рукой сняло. У меня FreeRTOS, LwIP, десяток задач, stm32f407. FPU в полный рост причём в очень многих задачах. Математики очень много. Всё работает ничего не вылетает. Так что ничего не надо переносить. Гарантированные размеры стека настраиваются легко. Выберите режим, чтобы он заполнялся. дайте поработать да и посмотрите докуда доходит. FreeRTOS это позволяет сделать.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|