Привет всем.
Понадобился мне для Aeon'a тест памяти.
Мне нужно реализовать 2 вещи:
* проверить общий объём памяти (она может быть от 8 до 64 Мб)
* проверить её работоспособность
Может кто поможет информацией или алгоритмом?
Вид для печати
Привет всем.
Понадобился мне для Aeon'a тест памяти.
Мне нужно реализовать 2 вещи:
* проверить общий объём памяти (она может быть от 8 до 64 Мб)
* проверить её работоспособность
Может кто поможет информацией или алгоритмом?
Спасибо!
Но может есть инфа по программным методам?
Я уже немного накопал в инете, но всё же, может кто делал.
Попробую сваять чего нибудь.
В Z80 я полный ноль, я не знаю как там распределяется адресное пространство и сколько максимально можно адресовать за раз, но относительно x86 могу сказать так: 1) для определения общего кол-ва памяти: записываем паттерн 55AAh в начало каждого 16Кб блока. Считываем из начала блока значение. Если значение не равно 55AAh - все, память кончилась. Иначе - прибавляем к адресу 16Кб и ушли на цикл.
2) для тестирования памяти алгоритм примерно тот же, только я тестирую 1Кб блоками. 4 хороших паттерна есть - 55h (10101010 bin), AAh (01010101 bin), FFh (11111111 bin) и 00 (00000000 bin). Заполняем первый килобайт поочередно этими паттернами, потом считываем из первого килобайта и сверяем с паттерном. Если где-то не сошлось - значит ошибка. Дальше берем второй килобайт и по новой.
ILoveSpeccy, есть исходники ТЕСТ-ПЗУ Андрея Хахонова для Спектрум 128К. Там реализован три алгоритма: бегущий 0, бегущая 1, псевдослучайная последовательность. Работает только в регистрах Z80, тестирует блоками по 16КБ. При ошибке выводит адрес и бит(ы). Исходник для iS-DOS-асма или GENS.
У SDRAM 4 банки всегда и 1024 столбца если не ошибаюсь, достаточно перебрать старшие 3 бита номера строки (из расчета что стоит 64мб), от максимального к минимальному и писать туда значение этого счетчика к примеру в колонку 0, потом читаем с самого старшей строки байт и получаем количество (на единицу меньше) памяти кратное 8мб
Ну переиграть вариант на столбцы и строки, первый этапом посчитать сколько столбцов, вторым определить кво строк, тож по принципу из расчета максимального количества, ну я думаю смысл ясен, неиспользуемые биты sdram игнорирует и адреса закольцовываются
---------- Post added at 14:14 ---------- Previous post was at 14:07 ----------
Для универсального контролера памяти всеравно геометрия матрицы надо будет, то бы мультиплексоры переключить для использования всей матрицы, к тому же если будет принята стратегия оптимизации конвеера то нужно будет как то отлавливать когда строки переключать и может быть адреса раскидать так что бы строки реже клоцать, как никак дороговатая операция
ILoveSpeccy, мы делали так:
при старте проверка контрольной суммы пзу
потом тест озу:
1. пишем 0, читаем (сверка) 0
2. пишем #ff, читаем #ff
3. пишем #aa, читаем #aa
4. пишем #55, читаем #55
есть же http://www.memtest.org/
там открытые исходники