Михась 2 12 октября, 2018 Опубликовано 12 октября, 2018 (изменено) · Жалоба Использую такую функцию для он-лайн тестирования ОЗУ /******************************************************************************* * Функции проверки 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 Изменено 12 октября, 2018 пользователем Михась Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 12 октября, 2018 Опубликовано 12 октября, 2018 (изменено) · Жалоба закоротите любую пару адресов между собой и Ваш тест этого не заметит Простейший способ обнаружить замыкание адресов - заполнить ВСЮ память паттерном, и затем проверяя ее насовпадение с этим паттерном, после проверки одной ячейки, сразу же менять ее содержимое на инвертированный паттерн. Есть болеее сложные алгоритмы: бегущая строка, бегущий столбец, крест, баттерфляй... Изменено 12 октября, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 2 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба Да, это простой тест в основном для встроенного ОЗУ. Но может кому пригодится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 12 октября, 2018 Опубликовано 12 октября, 2018 (изменено) · Жалоба 15 minutes ago, Михась said: Да, это простой тест в основном для встроенного ОЗУ. Но может кому пригодится. Точнее примитивный. Без обид. Он не выявит простейшие неисправности монтажа или самого чипа. Обсуждение велось на тему внешней памяти. Кстати один раз сталкивался со сучаем, когда была проблема с внутренней шиной адреcа у ATMEGA8, то есть пишем данные в одну ячейку, и такие же данные пишутся в другую ячейку, с адресом отличающимся в один бит. Только кажется это была не RAM а FLASH. Смена чипа помогла. Изменено 12 октября, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 2 12 октября, 2018 Опубликовано 12 октября, 2018 (изменено) · Жалоба Да какие обиды. А возможно создание онлайн-теста озу с сложной диагностикой? В свое время искал, но удобоваримого не нашел. До перехода в __main() то понятно. Внутренний дефект ОЗУ в однокристалках достоверно был один раз - 1816ВЕ51. Больше честно сказать не попадалось, но все равно простой тест озу использую. Изменено 12 октября, 2018 пользователем Михась Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 12 октября, 2018 Опубликовано 12 октября, 2018 (изменено) · Жалоба 15 minutes ago, Михась said: Да какие обиды. А возможно создание онлайн-теста озу с сложной диагностикой? В свое время искал, но удобоваримого не нашел. До перехода в __main() то понятно. что означает в данном контексте онлайн? не считаю себя экспертом, но мне кажется, в случае если устройство отлажено, достаточно прогнать вышеописанную процедуру в обоих направлениях, от младших адресов к старшим, и обратно, а паттерн генерировать свой для каждой ячейки, формулой дающей псевдослучайное число в зависимости от адреса. В обоих случаях значала заполнять весь объем памяти, а при проверке сразу же инвертировать паттерн ячейки до перехода к следующей. Изменено 12 октября, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Михась 2 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба Онлайн - в процессе работы изделия, например раз в минуту. По идее если прибор год без отключения работает, тестировать только после включения - маловато будет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба 3 minutes ago, Михась said: Онлайн - в процессе работы изделия, например раз в минуту. По идее если прибор год без отключения работает, тестировать только после включения - маловато будет. отказ в работе и так покажет что у вас непорядок с памятью. )) У меня память тестируется всегда только один раз - после включения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба Тестируйте псевдослучайной последовательностью, но только не rand(), а быстрым алгоритмом. И не меньше суток. Паттерны типа 00-FF следует чередовать, а не заполнять всю память одним. В последнем случае это даже близко не напоминает тестирование. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
khach 33 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба А существуют ли алгоритмы тестирования, которые позволяют понять, какая ножка адреса выпала из таймингов? Т.е псевдослучайная последовательность такой сбой обнаружит, и скорее всего он будет повторяющийся по всему обьему СДРАМ с периодичностью, кратной неправильно разведенному адресу. Вот его и хотелось бы узнать. Потому что лезть осциллографом на шину и смотреть тайминги без активной пробы МГц на 500- бесполезно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 12 октября, 2018 Опубликовано 12 октября, 2018 · Жалоба Если честно, я вообще не представляю, как можно развести обычную SDRAM таким образом, чтобы она не работала. Как можно "выпасть из таймингов" при частоте порядка 100MHz? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nanorobot 3 16 октября, 2018 Опубликовано 16 октября, 2018 (изменено) · Жалоба Понимаю, что не тот раздел форума, но так или иначе, это продолжение той же темы... Попытался отдать вышеупомянутую плату в производство. ТехноСвязь, Екатеринбург. Отвечают:Не имееи технологической возможности производства ПП с глухими отверстиями. Може кто то то может посказать где в Екб имеют такую возможность? Краем уха слышал, что можно заказать в Китае, но для меня это пока терра инкогнита... Да и 4 слойку первый раз развел, вдруг косяки какие, трудности коммуницирования возникнут... Кстати еще вопрос, насколько, навскидку, удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия? Изменено 16 октября, 2018 пользователем nanorobot Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sergvks 0 16 октября, 2018 Опубликовано 16 октября, 2018 · Жалоба 2 hours ago, nanorobot said: вскидку, удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия? Наличие глухих отверстий отверстий катастрофически сказывается на цене платы. 4-х слойку заказываю на jlcpcb, дешево но доставка довольно неспешная. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Obam 30 16 октября, 2018 Опубликовано 16 октября, 2018 · Жалоба 5 hours ago, nanorobot said: Понимаю, что не тот раздел форума, но так или иначе, это продолжение той же темы... Попытался отдать вышеупомянутую плату в производство. ТехноСвязь, Екатеринбург. Отвечают:Не имееи технологической возможности производства ПП с глухими отверстиями. Може кто то то может посказать где в Екб имеют такую возможность? Краем уха слышал, что можно заказать в Китае, но для меня это пока терра инкогнита... Да и 4 слойку первый раз развел, вдруг косяки какие, трудности коммуницирования возникнут... Кстати еще вопрос, насколько, навскидку, удорожается производство от наличия несквозных отверстий. Имеет ли значение их количество, или просто факт их наличия? А почему вы не обратитесь на Резонит? Они умеют попарным прессованием многослойки: будут и глухие переходные. Опять же их представительство считай через дорогу - простота контактов (на родном языке) это важно. По собственному опыту, они и от физлица не брезгуют заказы выполнять (4х слойку готовлю). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 63 16 октября, 2018 Опубликовано 16 октября, 2018 · Жалоба Лучше уж плату переделать. Зачем понадобились глухие отверстия? Тем более на первой в жизни многослойной плате. Подозреваю, что это далеко не единственная её "странность". Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться