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

 
 
> STM32F429 Внутренняя RAM и внешняя SDRAM, Работают по разному
MiklPolikov
сообщение Dec 11 2015, 04:10
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Есть процессор STM32F429 c внешней памятью IS42S16400J-7TLI .
Есть библиотека компрессии JPEG , которая тестировалась на ПК, и не заработала на МК.
Оказалось, что одни и те же вычисления во внутренней памяти МК и в SDRAM дают разные результаты.
Какие именно вычисления-понять сложно , т.к. библиотека чужая.
Тесты (чтение/запись, логические операции) SDRAM проходит.
При изменении частоты процессора 45 / 90 / 180 МГц результат кардинально не меняется, хотя какая-то зависимость вроде бы есть.

Вопрос: Какие именно обращения к SDRAM заставляют её работать не правильно ? Где и как искать решение проблемы?

Заранее спасибо !


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов (1 - 12)
501-q
сообщение Dec 11 2015, 04:14
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 24-02-09
Из: Екатеринбург
Пользователь №: 45 296



Hi!

STM32F42xx and STM32F43xx Errata sheet:

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.

Илья
Go to the top of the page
 
+Quote Post
Непомнящий Евген...
сообщение Dec 11 2015, 05:29
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 771
Регистрация: 16-07-07
Из: Волгодонск
Пользователь №: 29 153



Вот это нифига ж себе. Надо читать ерраты sm.gif
Go to the top of the page
 
+Quote Post
gazpar
сообщение Dec 11 2015, 06:52
Сообщение #4


Частый гость
**

Группа: Участник
Сообщений: 147
Регистрация: 9-01-14
Пользователь №: 79 952



Оффтоп.

Когда искал варианты реализации JPEG, самое удобное, что нашёл, stm32-dcmi-jpeg

Проверял на stm32f429zit6, работает отлично.
Нужно только правильно конвертировать своё RGB изображение в YUV, или камеру настроить так, чтобы выдавала картинку сразу в YUV.

А теперь по делу.

У меня была следующая ситуация:
1) Собрал проект с ОСРВ под f429zi, кучу расположил в SDRAM. Всё работало чётко, никаких ошибок.
2) Плата питалась от блока питания, а блок питания включен в пилот. При подаче питания кнопкой пилота SDRAM сгорела.
3) Заменили SDRAM на новую, контроллер стал мазать по адресам в SDRAM и, соответственно, уходить в HardFault.
4) Если SDRAM не использовать, то f429zi работает, вроде бы, как надо.

Результаты разные при операциях в SDRAM и RAM могут быть из-за какой-то неполадки в контроллере, по причине промахов по адресам во внешней памяти.

Вот такой алгоритм:
Код
for(uint32_t i=0; i < 500; i++){
        some_num[i] = 100 + i;
    }

for(uint32_t i=0; i < 50; i++){
    printf("We read from SDRAM: %d\r\n",some_num[i]);
}

Выдаёт такой результат:


Сообщение отредактировал gazpar - Dec 11 2015, 07:21
Эскизы прикрепленных изображений
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
KnightIgor
сообщение Dec 11 2015, 08:28
Сообщение #5


Знающий
****

Группа: Участник
Сообщений: 643
Регистрация: 29-05-09
Из: Германия
Пользователь №: 49 725



Цитата(501-q @ Dec 11 2015, 05:14) *
STM32F42xx and STM32F43xx Errata sheet:

ОТ (SCNR):
Такое заявление в errata равносильно намёку, SDRAM не использовать вообще кроме как для буфера с чтением по DMA, то есть, для видеобуфера. Это же надо так лажануться в дизайне, чтобы обращение к SDRAM по чтению требовало запрета прерываний! Я в шоке... Интересно, -M7 тем же страдает?!

Сообщение отредактировал KnightIgor - Dec 11 2015, 08:28
Go to the top of the page
 
+Quote Post
adnega
сообщение Dec 11 2015, 09:05
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(501-q @ Dec 11 2015, 07:14) *
Hi!

STM32F42xx and STM32F43xx Errata sheet:

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.

Илья

Там же: This limitation is present only in revision “A” devices. It is fixed in revision “Y”, “1” and “3”.
Насколько мне известно, у ТС ревизия "1".

Кста, насчет ES я бы внимательно ознакомился с п 2.1.10 PA12 GPIO limitation.
Цитата
When PA12 is used as GPIO or alternate function in input or output mode, the data read
from Flash memory can be corrupted. This behavior is observed only when the following
conditions are met:
• The device operates from a 2.7 to 3.6 V VDD power supply whatever the temperature
range
• Flash memory Bank2 is used or the dual bank feature is enabled.
Impacted products
• STM32F42xxI and STM32F43xxI part numbers
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Dec 11 2015, 16:59
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Отключил PA12 , отключил прерывания.
Провожу эксперимент:

Код
unsigned char  *p_sdram=(unsigned char *)(0xD0000000);

for(i=0; i<1000; i++)
         p_sdram[i]=i;


Вижу неправильное содержание памяти.

Этот же эксперимент с указателем unsigned short int , unsigned int проходит нормально

Вопрос: в чём может быть проблема ? Это может быть связано с настройкой LATENCY и WS во flash контроллере ?
Эскизы прикрепленных изображений
Прикрепленное изображение
 


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Dec 11 2015, 17:49
Сообщение #8


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



DQMx правильно подключены?
Go to the top of the page
 
+Quote Post
Tarbal
сообщение Dec 12 2015, 02:19
Сообщение #9


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

Группа: Свой
Сообщений: 1 351
Регистрация: 21-05-10
Пользователь №: 57 439



А можете ваш цикл когда он пишет неправильно в машинных (ассемблерных) командах показать? Я бы первым делом посмотрел в отладчике по шагам в дизассемблере.
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Dec 12 2015, 03:24
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Проблема решилась. Была непропаяна нога FMC_NBL0
т.к. она иногда всё-таки контачила и работать начинало, безудержное веселье с отладкой продолжалось почти неделю.


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
Ruslan1
сообщение Dec 12 2015, 12:05
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 360
Регистрация: 6-03-06
Из: Кишинев
Пользователь №: 15 025



Цитата(MiklPolikov @ Dec 12 2015, 05:24) *
Проблема решилась. Была непропаяна нога FMC_NBL0
т.к. она иногда всё-таки контачила и работать начинало, безудержное веселье с отладкой продолжалось почти неделю.

Мда, само написание этого поста в пять часов утра говорит о многом sm.gif
Примите поздравления sm.gif

А если разрешить прерывания и так далее- не падает? Интересно, этот кейс из ерраты они действительно закрыли в новых редакциях?
Go to the top of the page
 
+Quote Post
MiklPolikov
сообщение Dec 13 2015, 11:49
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 015
Регистрация: 23-01-07
Из: Москва
Пользователь №: 24 702



Цитата(Ruslan1 @ Dec 12 2015, 15:05) *
А если разрешить прерывания и так далее- не падает? Интересно, этот кейс из ерраты они действительно закрыли в новых редакциях?


Когда всё налажу обязательно проверю. Запрещение прерываний мне сильно мешает, т.к. компрессия jpeg длится ~1c


--------------------
Если у Вас нет практического опыта в данной теме- не вступайте в дискуссию и не пишите никаких теоретических рассуждений! Заранее спасибо !
Go to the top of the page
 
+Quote Post
501-q
сообщение Dec 14 2015, 10:43
Сообщение #13


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 24-02-09
Из: Екатеринбург
Пользователь №: 45 296



Цитата(Ruslan1 @ Dec 12 2015, 17:05) *
Интересно, этот кейс из ерраты они действительно закрыли в новых редакциях?

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

Илья
Go to the top of the page
 
+Quote Post

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

 


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


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