Перейти к содержанию
    

STM32H7 работа с SDRAM. Проблема

Использую такую функцию для он-лайн тестирования ОЗУ

 

/*******************************************************************************
* 	Функции проверки RAM
	Parameter: 
Return: счетчик сбойных слов 32b в RAM

Пример
resTestRAM = sram_test(0x20000000, 0x20000);
*******************************************************************************/
#define PATTERN1							0xAAAAAAAA
#define PATTERN2							0x55555555
#define PATTERN3							0x00000000
#define PATTERN4							0xFFFFFFFF
#pragma push
#pragma O0
#pragma Otime
uint32_t sram_test(uint32_t startaddress, uint32_t sizeRAM)
{
    uint32_t *base_address = (uint32_t *)(startaddress);
    register uint32_t temp_val;
    register uint32_t i = 0, sram_nowrite_count = 0;

    __disable_irq();
    for(i = 0; i < (sizeRAM/4); i++)
    {
        temp_val = *base_address;

        *base_address = PATTERN1;

        if(*base_address != PATTERN1)
        {
            sram_nowrite_count++;
        }

        *base_address = PATTERN2;

        if(*base_address != PATTERN2)
        {
            sram_nowrite_count++;
        }

        *base_address = PATTERN3;

        if(*base_address != PATTERN3)
        {
            sram_nowrite_count++;
        }

        *base_address = PATTERN4;

        if(*base_address != PATTERN4)
        {
            sram_nowrite_count++;
        }

        *base_address = temp_val;

        base_address++;
    }
    __enable_irq();
    return (sram_nowrite_count / 2);
}
#pragma pop

 

Изменено пользователем Михась

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

закоротите любую пару адресов между собой и Ваш тест этого не заметит

Простейший способ обнаружить замыкание адресов - заполнить ВСЮ память паттерном, и затем проверяя ее насовпадение с этим паттерном, после проверки одной ячейки, сразу же менять ее  содержимое на инвертированный паттерн. Есть болеее сложные алгоритмы: бегущая строка, бегущий столбец, крест,  баттерфляй...

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, это простой тест в основном для встроенного ОЗУ. Но может кому пригодится. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, Михась said:

Да, это простой тест в основном для встроенного ОЗУ. Но может кому пригодится. 

 

Точнее примитивный. Без обид. Он не выявит простейшие неисправности монтажа или самого чипа. Обсуждение велось на тему внешней памяти. Кстати один раз сталкивался со сучаем, когда была проблема с внутренней шиной адреcа у ATMEGA8, то есть пишем данные в одну ячейку, и такие же данные пишутся в другую ячейку, с адресом отличающимся в один бит. Только кажется это была не RAM а FLASH. Смена чипа помогла.

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да какие обиды. А возможно создание онлайн-теста озу с сложной диагностикой? В свое время искал, но удобоваримого не нашел. До перехода в __main() то понятно. Внутренний дефект ОЗУ в однокристалках достоверно был один раз - 1816ВЕ51. Больше честно сказать не попадалось, но все равно простой тест озу использую.

Изменено пользователем Михась

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

15 minutes ago, Михась said:

Да какие обиды. А возможно создание онлайн-теста озу с сложной диагностикой? В свое время искал, но удобоваримого не нашел. До перехода в __main() то понятно.

что означает в данном контексте онлайн? не считаю себя экспертом, но мне кажется, в случае если устройство отлажено, достаточно прогнать  вышеописанную процедуру в обоих направлениях, от младших адресов к старшим, и обратно, а паттерн генерировать свой для каждой ячейки, формулой дающей псевдослучайное число  в зависимости от адреса. В обоих случаях значала заполнять весь объем памяти, а при проверке   сразу же инвертировать паттерн ячейки до перехода к следующей.

 

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 minutes ago, Михась said:

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

отказ в работе и так покажет что у вас непорядок с памятью. )) У меня память тестируется всегда только один раз - после включения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тестируйте псевдослучайной последовательностью, но только не rand(), а быстрым алгоритмом. И не меньше суток.

Паттерны типа 00-FF следует чередовать, а не заполнять всю память одним. В последнем случае это даже близко

не напоминает тестирование.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А существуют ли алгоритмы тестирования, которые позволяют понять, какая ножка адреса выпала из таймингов? Т.е псевдослучайная последовательность такой сбой обнаружит, и скорее всего он будет повторяющийся по всему обьему СДРАМ с периодичностью, кратной неправильно разведенному адресу. Вот его и хотелось бы узнать.

Потому что лезть осциллографом на шину и смотреть тайминги без активной пробы МГц на 500- бесполезно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Если честно, я вообще не представляю, как можно развести обычную SDRAM таким образом, чтобы она не работала. Как можно "выпасть из таймингов" при частоте порядка 100MHz?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

   Понимаю, что не тот раздел форума,  но так или иначе, это продолжение той же темы...

 

Попытался отдать вышеупомянутую плату в производство. ТехноСвязь, Екатеринбург. Отвечают:Не имееи технологической возможности производства ПП с глухими отверстиями. Може кто то то может посказать  где в Екб имеют такую возможность? Краем уха слышал, что можно заказать в Китае, но для меня это пока терра инкогнита... Да и 4 слойку первый раз развел, вдруг косяки какие, трудности коммуницирования возникнут... 

 

Кстати еще вопрос, насколько, навскидку,  удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия?

Изменено пользователем nanorobot

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

2 hours ago, nanorobot said:

вскидку,  удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия?

Наличие глухих отверстий отверстий катастрофически сказывается на цене платы.

4-х слойку заказываю на jlcpcb, дешево но доставка довольно неспешная.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 hours ago, nanorobot said:

   Понимаю, что не тот раздел форума,  но так или иначе, это продолжение той же темы...

 

Попытался отдать вышеупомянутую плату в производство. ТехноСвязь, Екатеринбург. Отвечают:Не имееи технологической возможности производства ПП с глухими отверстиями. Може кто то то может посказать  где в Екб имеют такую возможность? Краем уха слышал, что можно заказать в Китае, но для меня это пока терра инкогнита... Да и 4 слойку первый раз развел, вдруг косяки какие, трудности коммуницирования возникнут... 

 

Кстати еще вопрос, насколько, навскидку,  удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия?

 

А почему вы не обратитесь на Резонит? Они умеют попарным прессованием многослойки: будут и глухие переходные. Опять же их представительство считай через дорогу - простота контактов (на родном языке) это важно.

По собственному опыту, они и от физлица не брезгуют заказы выполнять (4х слойку готовлю).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Лучше уж плату переделать. Зачем понадобились глухие отверстия? Тем более на первой в жизни многослойной плате.

Подозреваю, что это далеко не единственная её "странность".

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...