Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ADuC70xx_K02.docx
Скачиваний:
22
Добавлен:
18.09.2019
Размер:
1.68 Mб
Скачать

Последовательность записи ключа такова:

  1. В регистре FEEPRO сбросить бит, соответствующий защищаемой странице.

  2. Разрешить защиту ключом, для чего установить биты 6 и 3 регистра FEEMOD.(бит 5 должен быть равен 0 )

  3. Записать 32-разрядный две 16-битовые половины ключа в регистры FEEADR,FEEDAT.

  4. Осуществить запись ключа командой 0x0C в регистре FEECON, ожидать подтверждение успешности записи по состоянию регистра FEESTA.

  5. Подать на ИМС сигнал RESET.

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

Только полное стирание снимет защиту, но при этом также стирается весь пользовательский код

Вышеприведенную последовательность действий проиллюстрируем на примере, в котором защищаются от записи страницы с 4 по 7 памяти Flash:

FEEPRO=0xFFFFFFFD; // Очистить биты, защищающие страницы с 4 по 7

FEEMOD=0x48; // Разрешить запись «ключа»

FEEADR=0x1234; //16 бит – первая половина «ключа»

FEEDAT=0x5678; // 16 бит– вторая половина«ключа»

FEECON= 0x0C; // Команда «запись ключа»

Интерфейс управления памятью Flash /ee

При последовательном, параллельном программировании или программировании через интерфейс JTAG используется управляющий интерфейс памяти Flash/EE, в который входят следующие регистры:

  • FEESTA: регистр только для чтения, показывает состояние управляющего интерфейса памяти Flash

  • FEEMOD: устанавливает режим работы управляющего интерфейса памяти Flash

  • FEECON: 8-разрядный регистр команд. Команды описаны в табл. 14

  • FEEDAT: 16-разрядный регистр данных.

  • FEEADR: 16- разрядный регистр адреса.

  • FEESIGN: 24-разрядный регистр сигнатуры (контрольной суммы)

Подробное описание регистров интерфейса управления памятью Flash/ee

Регистр FEESTA– адрес 0xFFFFF800, разрядность 8, доступ Ro регистр состоянияфлэш-контроллера. (В описании ver.D на стр. 48, в табл.32 ошибочно указана разрядность 16.)

Биты

Описание

7:4

Резервированы

3

Бит запроса прерывания от Flash-контроллера, устанавливается автоматически по окончании операции, если разрешено прерывание от Flash (битом FEEMOD:4). Сбрасывается при чтении регистра FEESTA.

2

Бит занятости Flash-контроллера. Единичное состояние указывает на то, что Flash-контроллер выполняет операцию. Сбрасывается автоматически по окончании операции.

1

Флаг неуспешного завершения команды, устанавливается автоматически. Например, это происходит, если установлена защита записи. Сбрасывается при чтении регистра FEESTA.(Это может быть любое чтение, в том числе и запрос чтения от отладчика при пошаговом прохождении программы.)

0

Флаг неуспешного завершения команды, устанавливается автоматически. Сбрасывается при чтении регистра FEESTA. (Это может быть любое чтение, в том числе и запрос чтения от отладчика при пошаговом прохождении программы.)

Регистр FEEMOD– адрес 0xFFFFF804, разрядность 16, доступ R/W регистр режима флэш-контроллера

Биты

Описание

15:9

Резервировано

8

Резервировано. Должно быть всегда 0

7:5

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

4

Устанавливается/сбрасывается пользователем для разрешения/запрета прерывания по окончании операции флэш-контроллера.

3

Устанавливается/сбрасывается пользователем для разрешения/запрета операций стирания и записи.

2:0

Резервировано. Должно при записи быть всегда 0.

Регистр FEECON– адрес 0xFFFFF808, разрядность 8, доступ R/W Регистр команд. При записи одного из значений, приведенных в таблице, запускается соответствующая операция. По окончании операции, в зависимости от успешности,в регистре FEESTA устанавливается бит0 (успешно) либо бит1 (ошибка).

Код

Команда

Описание

0x001)

Пустая

(??? Проверить действие)

0x011)

Одиночное чтение

Загружает в регистр FEEDAT содержимое адреса, на который указывает FEEADR.

0x021)

Одиночная запись

Записывает содержимое регистра FEEDAT по адресу, на который указывает FEEADR.

0x031)

Стирание/ Запись

Стирает страницу, определяемую содержимым FEEDAT, а затем записывает содержимое FEEDAT по адресу FEEADR. Эта операция выполняется около 24 мс.

0x041)

Одиночная проверка

Сравнивает содержимое памяти по адресу FEEADR с содержимым FEEDAT. При несовпадении устанавливается бит FEESTA:1

0x051)

Стирание страницы

Стирает страницу, включающую адрес FEEADR.

0x061)

Общее стирание

Стирает пользовательскую часть Flash-памяти (62 кБ). Операция выполняется около 2,48 с. Команда может быть инициирована только использованием ключевой командной последовательности.

0x07

Резервировано

Резервировано

0x08

Резервировано

Резервировано

0x09

Резервировано

Резервировано

0x0A

Резервировано

Резервировано

0x0B

Сигнатура

Возвращает 24-битовую «сигнатуру» содержимого Flash-памяти в регистр FEESIGN. Эта операция выполняется в течение 32778 тактов.

0x0C

Защита

Запись ключа защиты. Эта команда может быть выполнена лишь единожды. Содержимое FEEPRO сохраняется и может быть изменено лишь общим стиранием (0x06), либо с использованием установленного ключа защиты.

0x0D

Резервировано

Резервировано

0x0E

Резервировано

Резервировано

0x0F

Ping

Генерирует запрос прерывания от Flash-контроллера (для тестирования)

1)После выполнения любой из отмеченных команд чтение этого регистра всегда возвращает 0x07.

Регистр FEEDAT– адрес 0xFFFFF80C, разрядность 16, доступ R/W Регистр данных интерфейса флэш-памяти.При выполнении операции записи содержимое этого регистра используется как источник данных, т.е. записывается в полуслово флэш-памяти, на которое указывает регистр FEEADR.

Регистр FEEADR– адрес 0xFFFFF810, разрядность 16, доступ R/W Регистр адреса флэш-памяти. Этот регистр: ‑ для операций одиночной записи и одиночного чтения

Регистр FEESIGN– адрес 0xFFFFF818, разрядность 24, доступ Ro В этот регистр возвращается «сигнатура» содержимого флэш-памяти.Сигнатура это 24 битовая величина, рассчитываемая по значениям всего содержимого всей Flash-памяти. Алгоритм вычисления сигнатуры построен таким образом, что малое количество изменений содержимого обязательно приводит к изменению значения сигнатуры. Сравнение сигнатур позволяет выявить искажения отдельных битов содержимого памяти.

Регистр FEEPRO – адрес 0xFFFFF81C, разрядность 32, доступ R/W Регистр энергонезависимой защиты, позволяет указать вид защиты (по чтению или по записи), а также указать области флэш-памяти, защищаемые по записи (см. табл). ???

Регистр FEEHIDE – адрес 0xFFFFF820, разрядность 32, доступ R/W Регистр энергонезависимой защиты, позволяет указать вид защиты (по чтению или по записи), а также указать области флэш-памяти, защищаемые по записи (см. табл). ???

Формат регистров FEEPRO и FEEHIDE.

Биты

Описание

31

Защита всей флэш-памяти по чтению. Для установки защиты это бит следует сбросить.

30:0

Защита 2К-областей Flash-памяти по записи. Сброс бита 0 защищает страницы 0...3, сброс бита 1 – страницы 4...7,..., сброс бита 30 защищает страницы 120...123. Для защиты соответствующие биты следует сбросить.

Последовательность команд для полного стирания

FEEDAT=0x3CFF;

FEEADR = 0xFFC3;

FEEMOD= FEEMOD|0x8; //ключ стирания

FEECON=0x06; // Полноестирание

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]