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

 
 
> STM32CubeMX 4.21.0 генерит шмурдяк, FreeRTOS не запускается с LwIP
Dimka78
сообщение Jul 27 2017, 11:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-07-15
Пользователь №: 87 617



Добрый день.

Наша комманда столкнулась проблемой и решила поделиться - мало ли кому может пригодиться.
STM32CubeMX 4.21.0 версия генерит код, который при запуске впадает в ASSERT изза кривых приоритетов прерывания.
Видимо STMicro пропустила Unit testы.

Наша платформа: STM32F7 + FreeRTOS + LwIP.
STM32CubeF7 версии 1.7.0

Вышла 4.22.0 - не пробовали пока.

Также столкнулись с отсутствием поддержки драйверами периферии функций инвалидации и очистки data-кэша. Будьте осторожны.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Jul 28 2017, 16:58
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
SCB_CleanDCache_by_Addr/SCB_InvalidateDCache_by_Addr

Вообще-то правильно делать ПЕРЕД отдачей буфера для обмена по DMA.
ПРи чтении по DMA из периферии:
Если точно буфер выровнен по размеру cache row, то можно SCB_InvalidateDCache_by_Addr. Если еще чьи-то данные могут зависнуть в кэше - то SCB_CleanDCache_by_Addr

При записи из памяти в периферию: SCB_CleanDCache_by_Addr/SCB_CleanInvalidateDCache_by_Addr (в зависимости от обстоятельсв).

Сообщение отредактировал Genadi Zawidowski - Jul 28 2017, 17:00
Go to the top of the page
 
+Quote Post
Dimka78
сообщение Jul 29 2017, 15:13
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 18-07-15
Пользователь №: 87 617



Цитата(Genadi Zawidowski @ Jul 28 2017, 18:58) *
Вообще-то правильно делать ПЕРЕД отдачей буфера для обмена по DMA.
ПРи чтении по DMA из периферии:
Если точно буфер выровнен по размеру cache row, то можно SCB_InvalidateDCache_by_Addr. Если еще чьи-то данные могут зависнуть в кэше - то SCB_CleanDCache_by_Addr

При записи из памяти в периферию: SCB_CleanDCache_by_Addr/SCB_CleanInvalidateDCache_by_Addr (в зависимости от обстоятельсв).

Спасибо. Замечание очень важное.
Да, Ethernet буфера у меня выровнены по размеру cache row.
Есть ещё SCB_CleanInvalidateDCache и SCB_CleanDCache - но занимает много времени.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 17:48
Рейтинг@Mail.ru


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