Эмулятор БК-0010-01, БК-0011 и БК-0011М

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

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

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

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

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

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

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

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

    «стр. с кодом XXXX уже подключали с YYYY»,
    где 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, ЗАГЛ, СТР и Шифт). Чтобы одним махом не напропускать лишнего, тоже делается проверка, если вы нажали клавишу, и на экране ничего не происходит - отпустите её, процесс пойдёт дальше. Это полезно, если на странице сплошняком прут ошибки, на каждом адресе. Клавишу жать надо дважды - сперва чтобы пропустить синхротест, затем, чтобы пропустить тест памяти.

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

После того, как выяснилось, что в логике переключения страниц ОЗУ контроллера присутствует недоработка, был написан данный тест. Тест работает только с потенциально проблемными переключениями 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.

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