Последовательность выполнения защищенных инструкций SPM/LPM 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Последовательность выполнения защищенных инструкций SPM/LPM



3. Кодом программы выполняется запись сигнатуры в регистр CCP, что разрешит выполнение защищенной инструкции SPM/LPM.

4. В течение 4 последующих циклов код программы получает возможность выполнить соответствующую инструкцию.

Защищенное изменение отключается сразу после выполнения ЦПУ операции записи в память данных или после выполнения инструкции SLEEP.

Сразу после записи ЦПУ корректной сигнатуры прерывания будут игнорироваться в течение промежутка времени, которое выделено для изменения конфигурации. Все запросы прерывания (в т.ч. немаскируемые прерывания), которые возникают в течение защищенного изменения конфигурации, приводят к установке соответствующего флага прерывания и, поэтому, запрос запоминается, как отправленный. По завершении интервала защищенного изменения все отправленные запросы прерываний будут обработаны в соответствии с их уровнем и приоритетом.

Запросы DMA обрабатываются обычным образом и никак не влияют на период разрешения изменений конфигурации. Сигнатура, записанная посредством DMA, игнорируется.

Fuse-биты для блокировки изменений

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

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

Описание регистров

Регистр защиты от изменения конфигурации CCP

Краткий обзор регистров

Адрес Наимен. Бит 7 Бит 6 Бит 5 Бит 4 Бит 3 Бит 2 Бит 1 Бит 0
+0x00 Резерв - - - - - - - -
+0x01 Резерв - - - - - - - -
+0x02 Резерв - - - - - - - -
+0x03 Резерв - - - - - - - -
+0x04 CCP CCP[7:0]
+0x05 Резерв - - - - - - - -
+0x06 Резерв - - - - - - - -
+0x07 Резерв - - - - - - - -
+0x08 RAMPD RAMPD[7:0]
+0x09 RAMPX RAMPX[7:0]
+0x0A RAMPY RAMPY[7:0]
+0x0B RAMPZ RAMPZ[7:0]
+0x0C EIND EIND[7:0]
+0x0D SPL SPL[7:0]
+0x0E SPH SPH[7:0]
+0x0F SREG I T H S V N Z C

 

Запоминающие устройства

Отличительные особенности

1. Flash-память программ

2. Одно линейное адресное пространство

3. Внутрисистемное программирование

4. Возможность самопрограммирования под управлением программы из загрузочного сектора

5. Сектор прикладной программы для хранения кода программы

6. Сектор таблицы приложения для хранения кода программы или данных

7. Загрузочный сектор для хранения кода программы или программы загрузчика

8. Отдельные lock-биты и защита у каждого сектора

9. Встроенная быстродействующая проверка CRC выбранного сектора flash-памяти программ

10. Память данных

11. Одно линейное адресное пространство

12. Одноцикловый доступ со стороны ЦПУ

13. SRAM

14. EEPROM

15. Побайтный и постраничный доступ

16. Опциональное отображение в памяти для прямого чтения и записи

17. Память ввода-вывода

18. Регистры статуса и конфигурации у всех УВВ и модулей

19. 16 регистров общего назначения с возможностями побитного доступа для хранения глобальных переменных или флагов

20. Поддержка внешней памяти

21. SRAM

22. SDRAM

23. Внешние ИС, подключаемые по типу параллельной памяти

24. Арбитраж шины

25. Безопасная и предсказуемая обработка приоритетов ЦПУ и DMA-контроллера

26. Отдельные шины для доступа к SRAM, EEPROM, памяти ввода-вывода и внешней памяти

27. Одновременный доступ к шине для ЦПУ и DMA-контроллера

28. Сигнатурный код производителя, запрограммированный на фазе производства

29. Идентификационный код для каждого типа МК

30. Неповторяющийся серийный номер у каждого МК

31. Байты калибровки генераторов

32. Калибровочные данные АЦП, ЦАП и датчика температуры

33. Сигнатурный код пользователя

34. По объему равен одной странице flash-памяти

35. Возможность программного чтения и записи

36. Не изменяется после выполнения операции стирания всей памяти (chip erase)

Обзор

В данном разделе будут описаны различные виды памяти микроконтроллеров XMEGA. В архитектуре AVR предусмотрено два основных пространства памяти: память программ и память данных. Исполняемый код может храниться только в памяти программ, а данные могут сберегаться, как в памяти данных, так и в памяти программ. Память данных состоит из статической памяти SRAM и электрически-стираемого и перепрограммируемого постоянного запоминающего устройства (EEPROM), предназначенного для энергонезависимого хранения данных. Все пространства памяти являются линейными и не требуют страничной адресации. Для пространств энергонезависимой памяти (NVM) можно применить блокировку дальнейшей записи или чтения/записи. Этим можно избежать несанкционированного доступа к коду программы.

Конфигурационные Fuse-биты хранятся в отдельном секторе памяти. Они предназначены для настройки важных системных функций и доступны для записи только через каналы подключения внешнего программатора.

Flash-память программ

МК XMEGA интегрируют внутрисистемно-перепрограммируемую Flash-память, предназначенную для хранения кода программы. Чтение и запись Flash-памяти можно выполнить с помощью внешнего программатора через интерфейс PDI, или под управлением исполняемой ЦПУ программы.

Все инструкции AVR являются 16- или 32-битными, а ячейки Flash-памяти - 16-битными. Flash-память МК XMEGA разделена на два основных сектора: сектор прикладной программы и загрузочный сектор (см. рисунок 4.1). Размеры каждого сектора являются фиксированными и зависят от типа МК. У каждого из секторов имеются отдельные lock-биты и предусмотрены различные уровни защиты. Для записи Flash-памяти можно использовать инструкцию записи в память программ (SPM), но при условии ее исполнения в загрузочном секторе. В секторе прикладной программы имеется сектор таблицы приложения с отдельными lock-битами. Его можно использовать для безопасного хранения энергонезависимых данных в памяти программ.

Рисунок 4.1. Секторы Flash-памяти

Сектор прикладной программы

Сектор прикладной программы является сектором Flash-памяти, который используется для хранения исполняемого кода программы. Уровень защиты сектора прикладной программы выбирается битами Boot Lock для этого сектора. В секторе прикладной программы не может храниться программа загрузчика, поскольку выполнение в этом секторе инструкции SPM не поддерживается.

Сектор таблицы приложения

Сектор таблицы приложения является частью сектора прикладной программы Flash-памяти и может использоваться для хранения данных. Его размер идентичен загрузочному сектору. Уровень защиты сектора таблицы приложения выбирается битами Boot Lock этого сектора. Возможность задания разных уровней защиты сектора прикладной программы и сектора таблицы приложения делает хранение параметров в памяти программ более безопасным. В случае отсутствия потребности в хранении данных в этом секторе, его можно использовать для хранения кода программы.

Загрузочный сектор

Если сектор прикладной программы используется для хранения кода программы приложения, то код программы загрузчика должен быть размещен в загрузочном секторе. Это связано с тем, что инструкция SPM будет работать по назначению только при выполнении ее в загрузочном секторе. Инструкция SPM может осуществлять доступ к любой части Flash-памяти, в т.ч. загрузочный сектор, из которого она выполняется. Уровень защиты загрузочного сектора задается его Lock-битами. Если в хранении в данном секторе программы загрузчика нет потребности, то его можно использовать для хранения кода прикладной программы.



Поделиться:


Последнее изменение этой страницы: 2016-12-30; просмотров: 253; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.88.16.192 (0.024 с.)