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

 
 
> STM32F746 и внешняя SRAM, ошибка при чтении
Sagittarius
сообщение Mar 2 2017, 13:50
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Здравствуйте.

Возникла непонятная ситуация. Проц STM32F746, к нему подключено внешнее статическое ОЗУ, 16 бит данных. Скелет программы сгенерен в CubeMX, кеш на команды и данные отключен.
Тест простой - сначала пишу во внешнюю RAM 12 штук 32-бит слов (используя memcpy) потом читаю в цикле по одному uint32_t. В зависимости от наличия, частоты и длительности прерываний (простой таймер и инкрементом переменной во внутреннем ОЗУ), паузы между записью и чтением, уровнем оптимизации кода при компиляции иногда происходит сбой - циклов записи на внешней шине всегда 12 а вот циклов чтения иногда проскакивает только 11 (отсутствует выдача сигналов CS и OE). Судя по всему аппаратура проца пропускает первый запрос на чтение, при этом результатом самого чтения оказывается значение, которое последним записывалось во внешнюю RAM (продублированные последние записываемые 16 бит). В зависимости от каких то шаманских действий частота сбоев может быть от 1-2 в секунду до 1-го за 7-8 часов. Пробовал собирать проект в IAR и Keil. Может будут у кого какие мысли по этому поводу?

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
scifi
сообщение Mar 2 2017, 14:20
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



В еррате на STM32F42x есть вот такое:
Цитата
Corruption of data read from the FMC

Description

When the FMC is used as stack, heap or variable data, an interrupt occurring during a CPU
read access to the FMC may results in read data corruption or hard fault exception. This
problem does not occur when read accesses are performed by another master or when
FMC accesses are done when the interrupts are disabled.

Workaround

Two workarounds can be applied:
• Do not use the FMC as stack or heap, and make sure CPU read accesses to the FMC
are performed while interrupts are disabled
• Use only DMAs to perform read accesses to the FMC.
This limitation is present only in revision “A” devices. It is fixed in revision “Y”, “1” and “3”.

Теоретически могли по запарке перетащить в новый кристалл старую багу. Ну или новую багу сделали.
Go to the top of the page
 
+Quote Post
Sagittarius
сообщение Mar 2 2017, 14:25
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Цитата(scifi @ Mar 2 2017, 17:20) *
В еррате на STM32F42x есть вот такое:
Теоретически могли по запарке перетащить в новый кристалл старую багу. Ну или новую багу сделали.

О, спасибо! Коллега рядом как раз на подобное наткнулся, когда другая бага переехала из F4xx в F7xx, была в еррате на 4xx но отсутствовала в еррате на 7xx.
Действительно, если прерывания запрещать то все читается нормально.
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 20th August 2025 - 12:52
Рейтинг@Mail.ru


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