AlexandrY 3 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба Стоит на плате такая SDRAM. Тип подключения к микроконтроллеру ARM-Cortex M4 - 13-bit row address, 9-bit column address Если всю ее заполнять последовательно случайными числами, а потом заново прочитать то все нормально, и не разу не фиксировалось ошибки за десятки прогонов. Но как только пытаешься заполнять случайными числами по псевдослучайным адресам, то возникают ошибки. Причем если адресное пространство разбить на 8 частей, и каждую тестировать псевдослучайным заполнением отдельно, то будет так: 0x0000 0000 ... 0x0040 0000 good 0x0040 0000 ... 0x0080 0000 bad 0x0080 0000 ... 0x00С0 0000 bad 0x00C0 0000 ... 0x0100 0000 bad 0x0100 0000 ... 0x0140 0000 good 0x0140 0000 ... 0x0180 0000 bad 0x0180 0000 ... 0x01C0 0000 bad 0x01C0 0000 ... 0x0200 0000 bad Что можно напутать чтобы так получилось? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Forger 26 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба . Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба Это я знаю. Схема взята из Dev KIT-а, трассировка и распиновка многократно проверена. Но главное, почему полное заполнение случайными числами не показывает ошибку? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба А характер ошибок какой? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 41 minutes ago, aaarrr said: А характер ошибок какой? Пишу байтами. Типа так: srand(magiс_variable); for (i=0; i < blocks_size; i++) { addr = GetRandAddr(); *((uint8_t *)addr)= rand(); } Когда все заполнено читаю и сравниваю опять с rand Функция rand штатная из C. Если ошибка, то читается совершенно другой байт. Причем появляется уже на втором шаге цикла Но как понял, хотя глубоко не копал, если повторить тест с теми же числами, то и значения ошибочных байт повторятся. Системы я не обнаружил. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 3 hours ago, AlexandrY said: Это я знаю. Схема взята из Dev KIT-а, трассировка и распиновка многократно проверена. Ну не знаю, A0 это всегда SDRAM_A0. Сама память отдаёт по младшему адресу все 16 бит разом. DQM0, DQM1 - это как-раз для управления отдельными байтами. Периферийный блок sdram в ST - самостоятельно рулит адресацию, если его верно настроить. А то что на схеме приклеено - просто не должно работать, внешний чип памяти инициализируется адресными линиями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 45 minutes ago, AVI-crak said: Ну не знаю, A0 это всегда SDRAM_A0. Сама память отдаёт по младшему адресу все 16 бит разом. DQM0, DQM1 - это как-раз для управления отдельными байтами. Периферийный блок sdram в ST - самостоятельно рулит адресацию, если его верно настроить. А то что на схеме приклеено - просто не должно работать, внешний чип памяти инициализируется адресными линиями. Схема рабочая. В том смысле что некоторые тесты SDRAM проходят отлично. Версия по поводу неправильной инициализации Mode Register в SDRAM могла бы быть интересной, но именно в этой SDRAM c адреса A10 и выше можно писать что угодно, там эти биты не используются. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 25 марта, 2021 Опубликовано 25 марта, 2021 (изменено) · Жалоба Неверно, все адресные линии используются для инсталла, но А12 не используется для адресации в mt48lc16 чипе. Эту линию можно посадить на землю, там всегда должен быть ноль. Просто адресные линии чипа ST и адресные линии внешней памяти - это немного разные вещи. Начнём с того что на внешнем чипе А0 - это выборка в строке и столбце, команды подаются раздельно, и на выхлопе всегда данные в полной разрядности чипа. Это свойство позволяет использовать память с выхлопом в два бита данных - просто увеличивая количество микросхем памяти до необходимой ширины шины данных. В настройках sdram указывается ширина выборки страниц, которая физически зависит от объёма памяти делённое на 4096 бит (ширина страницы) и ещё на количество банков. А12 уже отпадает как адрес, и используется в выборе банка. Выборка в пределах страницы настраивается косвенно, по ширине линий данных на чипе ST (указывается). При этом DQM0~3, - это проекция адресных линий A0-A1. Интерфейс sdram может быстро читать блоком - всю страницу разом. Но количество внешних микросхем бывает разным, а сама внешняя память об этом ничего не знает. Есть настройка для чтения потоком, как для ST, так и для внешней памяти. По умолчанию записано и считается что подключена одна внешняя микросхема памяти, в этом случае ничего изобретать не нужно. Для mt48lc16 адрес формируется так: DQM0, DQM1 (А0), быстрое чтение внутри строки (А1-А8), выборка строки (А9-А21), выбор банка (А22-А23). Вот это А0-А23 - это проекция адресного пространства ST на внешнюю память, к нему ещё и смещение добавляется. А то что там из чипа торчит, и как подписано - с реальностью отношения не имеет. И ещё. У меня есть большая подборка журналов схемотехника, большое количество схем из интернетов, а так-же бумажная макулатура от советского наследия (хорошо горит между прочим). Дык вот, каждая вторая схема имеет ошибки!!! Ошибок нет там, где есть обратная связь между шансом появления ошибки - и доходом автора схемы. Например техническая документация на микросхему. А вот публичная схема с участим этой микросхемы - может содержать ошибку, потому как автору глубоко пофиг. Изменено 25 марта, 2021 пользователем AVI-crak Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 17 minutes ago, AVI-crak said: чипа ST Почему ST? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AVI-crak 0 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба А есть варианты? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 25 марта, 2021 Опубликовано 25 марта, 2021 · Жалоба 18 minutes ago, AVI-crak said: А есть варианты? Несомненно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
GenaSPB 11 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 14 hours ago, AlexandrY said: *((uint8_t *)addr)= rand(); Volatile забыто Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
aaarrr 69 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 11 minutes ago, GenaSPB said: Volatile забыто Совершенно не принципиально. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AlexandrY 3 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 10 hours ago, aaarrr said: Несомненно. Да, это не STM, а скажем так, некий чип от Renesas-а. Пока стало ясно, что ошибка не в замыканиях или разрывах дорожек. На 3-х платах повторяется все один в один вплоть до неправильно считанных значений. И ошибки именно в произвольной адресации в банках SDRAM 1,2,3. В банке 0 все тесты проходят успешно. Т.е. имеем картину: если адрес по нарастанию переходит из банка 0 в банк 1 и далее, то все отлично, можно писать и читать любые байты, ничего не портится. Но если попытаться по произвольному адресу прочитать в одном банке, а потом по произвольному адресу в другом, то чтение будет с ошибкой. Прикольно, но если тест в отладчике после записи данных начать идти по шагам на этапе контрольного считывания, то ошибок вообще нет! Из этого следует, что портится не запись, а чтение. На всех чипах на корпусе чипа написано 7ZG12. Т.е. то ли 2017-й то ли 2007-й год , 52 -я неделя, ревизия G (2003 года), countries of diffusion - USA, countries of encapsulation - Singapore Может брак? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 63 26 марта, 2021 Опубликовано 26 марта, 2021 · Жалоба 17 hours ago, AlexandrY said: Схема взята из Dev KIT-а А возьмите этот самый Dev KIT и на нем попробуйте свою программу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться