Эмулятор БК-0010-01, БК-0011
и БК-0011М
ПРОГРАММНОЕ
ОБЕСПЕЧЕНИЕ
ДВК   УК-НЦ   БК0010/11М
archive.pdp-11.org.ru

Описание логики работы теста памяти ДОЗУ для теста v4.77.

Общее замечание. Тест памяти оперирует 16 килобайтными половинками 32 килобайтной страницы памяти контроллера АльтПро. Для этого, он подключает одну страницу дважды в двух режимах: 0160 и 060 для БК0010; и 0120 и 020 для БК0011. Это получается соответственно первая половинка страницы N и вторая половинка страницы N.

Далее, под страницей памяти будем иметь в виду именно такую 16 кб половинку страницы памяти, подключаемую в одном из режимов.

Тест памяти разбит на 3 этапа

  1. Перебор всех 32 кодов подключения страниц, по два кода на страницу, независимо от количества памяти, и заполнение массива ошибок страниц. Если страница была подключена ранее, проверки на ошибки чтения-записи не производятся.

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

  2. Подсчёт доступного количества ОЗУ.

    В начале подсчитывается количество доступного ОЗУ. Повторно подключённая страница не подсчитывается при подсчёте количества ОЗУ, в то время как страница с ошибками чтения-записи и байт-тестом - подсчитывается. Затем, если страницы с ошибками были, выводится их список. Вывод имеет два вида:

    1) если было повторное подключение страницы с другим кодом.

    «XXXX: эту страницу уже подключали с кодом YYYY»

    дальнейшая проверка на ошибки не проводится.

    2) если возникли какие-либо ошибки:

    «XXXX:[write-halt][read-halt][byte-test fail]»

    где XXXX - текущий код подключения страницы вместе с режимом,
    YYYY - предыдущий код, с которым эта страница уже подключалась
    «write-halt» - если произошло прерывание по вектору 4 при записи.
    «read-halt» - если произошло прерывание по вектору 4 при чтении.
    «byte-test fail» - если байт-тест провален.

  3. Проверка на битые ячейки памяти.

    Проверяются все страницы кроме повторно подключаемых.

    Проверка производится в два этапа:

    • Этап 1: методом записи и последующего чтения битовой маски в каждую ячейку страницы.

    • Этап 2: методом заполнения всей страницы маской, и последующего чтения маски со всей страницы.

    Перед первым этапом, между этапами и после второго этапа все страницы памяти заполняются определённым значением. На каждом этапе, перед началом тестирования каждая страница проверяется на целостность заданного определённого значения. Если оно не совпадёт с заданным, то будет выведено сообщение:

    «XXXX - синхро ADDRESS:VALUE:ошибка»,
    что означает следующее: во время изменения данных в одной странице, изменились данные по адресу на этой странице, это свидетельствует о внутренних повреждениях чипа памяти.

    Если во время синхротеста возникнет ошибка чтения/записи, то выведется следующее сообщение:

    «XXXX - BBBBBBBBBBBBBBBB ADDRESS:write-halt» или
    «XXXX - BBBBBBBBBBBBBBBB ADDRESS:read-halt»,

    где BBBBBBBBBBBBBBBB - синхрокод, (число 04260 для v4.6 или 051400 для v4.5) в бинарной системе счисления.

    Во время проверки на экране отображаются: текущий код страницы вместе с режимом, битовая маска, а так же сбойные адреса и сам сбой при его наличии. И отображается адрес на котором произошла ошибка чтения и/или записи, информацию о которой можно было видеть при подсчёте количества ОЗУ:

    «XXXX - BBBBBBBBBBBBBBBB ADDRESS:EEEEEEEEEEEEEEEE» или
    «XXXX - BBBBBBBBBBBBBBBB ADDRESS:write-halt» или
    «XXXX - BBBBBBBBBBBBBBBB ADDRESS:read-halt»,

    где XXXX - текущий код подключения страницы вместе с режимом,
    BBBBBBBBBBBBBBBB - текущая битовая маска,
    ADDRESS - адрес, где произошёл сбой,
    EEEEEEEEEEEEEEEE - сбойное значение,
    write-halt - означает, что произошло прерывание по вектору 4 при записи,
    read-halt - означает, что произошло прерывание по вектору 4 при чтении.

    Проверку страницы можно пропустить, нажав почти любую клавишу (кроме СТОП, СУ, АР2, ЗАГЛ, СТР и Шифт). Чтобы одним махом не напропускать лишнего, тоже делается проверка, если вы нажали клавишу, и на экране ничего не происходит - отпустите её, процесс пойдёт дальше. Это полезно, если на странице сплошняком прут ошибки, на каждом адресе. Клавишу жать надо дважды - сперва чтобы пропустить синхротест, затем, чтобы пропустить тест памяти.

Описание результатов вывода на экран теста режимов работы

Проверяются все 8 режимов работы, и в каждом режиме все 8 сегментов памяти. Соответственно таблице режимов контроллера.

А для контроллера СМК сегмент 7 проверяется дважды: в диапазоне 170000-176777 и в диапазоне 177000-177777. Тоже соответственно таблице режимов СМК.

Если ни в одном сегменте ошибок не было, просто выводится слово "ОК".

Если в каком-либо сегменте возникла ошибка, то она выводится в следующем виде:

<Номер сегмента>-<Код ошибки>(<Ожидаемый код>)

где <Номер сегмента> - номер сегмента памяти, в  котором возникла ошибка: 0..7

Номер Диапазон адресов
0 100000-107777
1 110000-117777
2 120000-127777
3 130000-137777
4 140000-147777
5 150000-157777
6 160000-167777
7 170000-177777

<Код ошибки> - код возникшей ошибки.

<Ожидаемый код> - код, который должен быть в этом сегменте.

Поскольку для СМК, последний сегмент проверяется дважды, чтобы как-то различать, в каком диапазоне появилась ошибка, для диапазона 177000-177777 вывод ошибки выглядит так:

<Номер сегмента>h<Код ошибки>(<Ожидаемый код>)

За номером сегмента вместо дефиса выводится буква "h".

Описание кодов ошибок:

Код Название Описание
0 ПЗУ чтение есть, не равно; записи нет
1 ОЗУ поверх ПЗУ чтение есть, не равно; запись есть, результат не меняется
2 ОЗУ БК чтение есть, не равно; запись есть, результат меняется
4 ОЗУзз ОЗУ с защитой от записи: чтение есть, равно; записи нет
5 ОЗУзз поверх ОЗУ БК чтение есть, равно; запись есть, результат не меняется, выдаётся RPLY
6 ОЗУ чтение есть, равно; запись есть, равно
10 пусто чтения нет; записи нет
11 ОЗУзч ОЗУ с защитой от чтения: чтения нет; запись есть, результат не определён

Примечание: здесь, "не равно" означает - результат чтения не равен заранее записанному значению.

Описание логики работы теста режимов переключения страниц.

После того, как выяснилось, что в логике переключения страниц ОЗУ контроллера присутствует недоработка, был написан данный тест. Тест работает только с потенциально проблемными переключениями 120->20, 20->120, 120->100, 100->20, 20->100, 100->0, 0->20, 20->0.

Тест 100->0 и 20->0 пропускается, т.к. в режиме HLT11 по нужным адресам не ОЗУ СМК, но без аппаратной доработки оно всё равно портится, порченный сегмент просто не подключается в этом режиме.

С новой прошивкой и аппаратной доработкой ошибки должны проявляться только в 100->20 и 0->20, т.к. таковы режимы работы контроллера.

С новой прошивкой и без аппаратной доработки ошибки должны проявляться в 100->20, 20->100 и 0->20. В режиме 120->100 ошибка появляется, но не отлавливается, т.к. в этих режимах расположение сегментов памяти одинаковое. Тест эту ошибку просто не может увидеть, и исправить это просто невозможно, т.к. для этого надо переключиться в режим 20, а это даст наведённую ошибку на контроллере без аппаратной доработки. Поэтому результат будет недостоверен. То же самое для переключения 100->120 для контроллера со старой прошивкой без аппаратной доработки.

Со старой прошивкой и аппаратной доработкой ошибки должны проявляться в 120->20, 100->20 и 0->20.

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