Федеральное агентство по образованию бийский технологический институт (филиал)

Вид материалаДокументы

Содержание


4.5Операции с памятью
4.5.1Тестирование ОЗУ
4.5.2Программа тестирования ПЗУ
Промежуточное значение контрольной суммы 0BH
Итоговое значение контрольной суммы 41H
Контрольные вопросы
Подобный материал:
1   ...   6   7   8   9   10   11   12   13   14

4.5Операции с памятью


В состав микроконтроллерных устройств нередко включают запоминающие устройства (ЗУ). ЗУ характеризуются объёмом хранимой информации, разрядностью, способом подключения (с параллельным или последовательным интерфейсом).

По выполняемой функции ЗУ можно классифицировать на оперативные запоминающие устройства (ОЗУ) и постоянные запоминающие устройства (ПЗУ).

ПЗУ используют для хранения кода программы, констант, таблиц. ОЗУ необходимо для хранения переменных, информации, накапливаемой в процессе измерения и т.д. Так же, как и в ПЗУ, в ОЗУ могут располагаться таблицы и, в редких случаях, код программы.

На рисунке 4.25 приведена схема подключения ОЗУ и ПЗУ к микроконтроллеру.

Для повышения надёжности микропроцессорного устройства предусматривается возможность его самотестирования. Это предполагает выдачу информации о реакции отдельных блоков микропроцессорного устройства на заданное воздействие.

ЗУ также могут быть протестированы. Следует отметить, что существует множество алгоритмов тестирования ЗУ, причём эти алгоритмы различны для ОЗУ и ПЗУ.




4.5.1Тестирование ОЗУ


Один из алгоритмов тестирования ОЗУ предполагает заполнение памяти тестовой информацией (в простейшем случае в ячейку памяти записывается младший байт её адреса, просуммированный с некоторой константой).

Листинг 4.39 содержит текст программы тестирования ОЗУ ёмкостью 8 кБ.



Листинг 4.39 – Программа тестирования ОЗУ




.ORG 0000H

; Адрес начала программы



TEST:



MOV R0, #00H


CALL WRITE


CALL READ



; Загрузка в R0 числа,

; прибавляемого к тестовой

; информации (контрольного

; байта)


; Вызов подпрограммы записи

; тестовой информации в ОЗУ

; Вызов подпрограммы чтения

; тестовой информации из ОЗУ с

; проверкой правильности записи




CJNE A, 00H, STOP


DJNZ R0, TEST


JMP BEGIN

; Проверка результата

; тестирования. При

; обнаружении ошибки останов

; программы

; Иначе переход к следующему

; циклу тестирования

; Переход к основной программе в

; случае успешного тестирования

STOP:

JMP $

; Останов программы при

; обнаружении ошибки ОЗУ

; Основная программа

BEGIN:






; Подпрограмма записи тестовой информации в ОЗУ

WRITE:


NEXTW:




MOV DPTR, #0000H


MOV A, DPL

ADD A, R0


MOVX @DPTR, A


INC DPTR


MOV A, DPH

CJNE A, #20H, NEXTW


RET


; В DPTR заносится адрес, по

; которому необходимо

; сохранить байт

; тестовой информации

; В аккумулятор помещается

; младший байт адреса и

; прибавляется число из

; регистра R0

; Запись тестовой информации в

; ОЗУ

; Инкрементирование адреса


; Проверка предела заполнения

; памяти и переход на начало

; цикла записи, если память

; заполнена не полностью

; Выход из подпрограммы

; Подпрограмма чтения тестовой информации из ОЗУ с проверкой

; правильности записи

READ:


NEXTR:




MOV DPTR, #0000H


MOVX A, @DPTR

CLR C

SUBB A, R0

CJNE A, DPL, ERR


INC DPTR


MOV A, DPH

CJNE A, #20H, NEXTR


MOV A, R0


RET


; В DPTR заносится адрес, с

; которого необходимо

; считать байт

; тестовой информации


; Чтение байта из ОЗУ

; Вычитание из считанного

;значения контрольного байта

; Проверка правильности

; записи данных

; Инкрементирование адреса


; Проверка предела чтения

; памяти и переход на начало

; цикла чтения, если память

; считана не полностью

; Загрузка в аккумулятор байта

; из регистра R0

; Выход из подпрограммы

ERR:


MOV A, R0

CPL A


RET


; Загрузка в аккумулятор байта

; из регистра R0 и

; его инвертирование

; Выход из подпрограммы

4.5.2Программа тестирования ПЗУ


Алгоритм тестирования ПЗУ отличен от алгоритма тестирования ОЗУ, поскольку внутрисистемная запись тестовой информации в постоянное запоминающее устройство, как правило, невозможна.

Для тестирования ПЗУ выполняют подсчёт контрольной суммы и сравнивают полученное значение с известным значением. Контрольная сумма – это сумма содержимого каждой из ячеек памяти без учёта
переполнения. Контрольная сумма может быть однобайтной, двухбайтной и т.д.

Например, если ёмкость восьмиразрядного ПЗУ 4 байта и в нем хранится код 0СH, FFH, 16H, 20H, то однобайтное значение контрольной суммы будет рассчитано следующим образом:

0СH+ FFH=10BH

Промежуточное значение контрольной суммы 0BH

0BH+16H=21H

Промежуточное значение контрольной суммы 21H

21H+20H=41H

Итоговое значение контрольной суммы 41H



Листинг 4.40 содержит текст программы тестирования ПЗУ ёмкостью 2 кБ.



Листинг 4.40 – Текст программы тестирования ПЗУ

CTRL:

SUM:

.EQU 34H

.REG R0

; Известная контрольная сумма

; Регистр контрольной суммы




.ORG 0000H

; Адрес начала программы



NEXTR:

MOV SUM, #00H


MOV DPTR, #0000H


MOV A, #00h

MOVС A, @A+DPTR


ADD A, SUM

MOV SUM, A


INC DPTR


MOV A, DPH

CJNE A, #08H, NEXTR


CJNE SUM, #CTRL, ERR

; Обнуление регистра

; контрольной суммы

; В DPTR заносится адрес, с

; которого необходимо

; начать считать

; контрольную сумму


; Чтение байта из ПЗУ


; Прибавление считанного байта

; к содержимому регистра

; контрольной суммы

; Инкрементирование адреса


; Проверка предела чтения

; памяти и переход на начало

; цикла чтения, если память

; считана не полностью

; Сравнение контрольных сумм

; и останов программы, если

; подсчитанная контрольная

; сумма не совпадает с

; заданной

BEGIN:



; Основная программа

ERR:

JMP $

; Останов при обнаружении

; ошибки

Контрольные вопросы
  1. Какие типы ЗУ применяются в микроконтроллерных устройствах?

Для чего необходимо тестирование ЗУ?

Почему метод тестирования ОЗУ не всегда приемлем для тестирования ПЗУ?

Опишите один из алгоритмов тестирования ОЗУ.