jcxz 242 4 октября, 2014 Опубликовано 4 октября, 2014 · Жалоба Это какой именно prefetch отключили? Интересно. И действительно все fault-ы после этого прекратились? PS: У Вас кстати LwIP плохо портирован (или вообще не портирован) на Cortex. Видно по куску кода в самом первом посте (SWAP_BYTES_IN_WORD). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sidy 1 4 октября, 2014 Опубликовано 4 октября, 2014 · Жалоба Скорее всего отключили буфер предварительной выборки Prefetch buffer: FLASH_ACR_PRFTEN. Сам сталкивался с тем что при включенном буфере программа попадает в HardFault, из произвольного места. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 4 октября, 2014 Опубликовано 4 октября, 2014 · Жалоба Это какой именно prefetch отключили? Интересно. И действительно все fault-ы после этого прекратились? PS: У Вас кстати LwIP плохо портирован (или вообще не портирован) на Cortex. Видно по куску кода в самом первом посте (SWAP_BYTES_IN_WORD). Отключил FLASH_ACR_PRFTEN. После этого, пока не было ни одного Hard_Fault. Я как-то и падения производительности не заметил. Сейчас 5 фильтров IIR использующих FPU крутятся и 50 частот обрабатывается алгоритмом Герцеля + Speex. Хватает еще и на сеть вполне. По поводу оптимизации LwIP, это тот который в STM32Cube идет. То есть, я его ни как не правил, наверное его ни кто не оптимизировал под Cortex. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AHTOXA 18 4 октября, 2014 Опубликовано 4 октября, 2014 · Жалоба Отключил 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 ; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба Я использовал вот такой код, чтобы включать префетч только в ревизии Z: А зачем его включать, если и без него всё работает? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 26 января, 2016 Опубликовано 26 января, 2016 · Жалоба А зачем его включать, если и без него всё работает? Чтобы работало быстрее? Без кешей тоже все работает и без любых других оптимизаций. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SapegoAL 0 27 января, 2016 Опубликовано 27 января, 2016 · Жалоба Переразвел немного железку, увеличил стеки, перетащил работу FPU в один поток. Все равно продолжились вылеты. То NOCP, то Undefened Instruction. Отключил префтеч. буфер, HardFault'ы как рукой сняло. У меня FreeRTOS, LwIP, десяток задач, stm32f407. FPU в полный рост причём в очень многих задачах. Математики очень много. Всё работает ничего не вылетает. Так что ничего не надо переносить. Гарантированные размеры стека настраиваются легко. Выберите режим, чтобы он заполнялся. дайте поработать да и посмотрите докуда доходит. FreeRTOS это позволяет сделать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
scifi 1 27 января, 2016 Опубликовано 27 января, 2016 · Жалоба Чтобы работало быстрее? Без кешей тоже все работает и без любых других оптимизаций. В моей практике если "уже работает", ни разу не было "лучше бы быстрее". Даже наоборот - станешь ускорять, что-нибудь напутаешь и что-нибудь сломаешь. Это же не компьютерная игра, а embedded. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ataradov 0 27 января, 2016 Опубликовано 27 января, 2016 · Жалоба Даже наоборот - станешь ускорять, что-нибудь напутаешь и что-нибудь сломаешь. Я не путаю и не ломаю. А чем дальше в лес, тем сложнее без наворотов. Cortex-M7 на 300 МГц без ускорений сильно тормозится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Quasar 20 2 февраля, 2016 Опубликовано 2 февраля, 2016 · Жалоба У меня FreeRTOS, LwIP, десяток задач, stm32f407. FPU в полный рост причём в очень многих задачах. Математики очень много. Всё работает ничего не вылетает. Так что ничего не надо переносить. Гарантированные размеры стека настраиваются легко. Выберите режим, чтобы он заполнялся. дайте поработать да и посмотрите докуда доходит. FreeRTOS это позволяет сделать. У меня тоже все работает и ничего не вылетает, проблема была в префтече на ревизии А, собственно выше я так и написал. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться