
- •Модуль 10: Программирование Flash C28x
- •Последовательность запуска BIOS из
- •Карта Flash памяти TMS320F2812
- •Ускорение исполнения кода из Flash:
- •Остальные регистры конфигурации
- •Основы программирования Flash
- •Утилиты программирования Flash
- •Подключаемый модуль Flash для Code Composer Studio
- •Модуль защиты кода (CSM)
- •Регистры CSM
- •Блокировка и разблокирование CSM
- •CSM предостережения
- •Диаграмма сравнения пароля CSM
- •C программа - пример для CSM
- •Лабораторная работа 11: Загрузка

Модуль 10: Программирование Flash C28x
Цифровой сигнальный контроллер TMS320F2812
Texas Instruments Incorporated

Последовательность запуска BIOS из
Flash памяти
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
C – процедура запуска |
|||
0x3D 8000 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FLASH (128K) |
|
|
|
|
_c_int00 |
|
Boot.asm |
|||||||||||||||||||||
|
|
|
4 |
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
LB |
|
|
|
|
rts2800_ml.lib” |
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||
0x3F 7FF6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
_c_int00 |
|
|
|
|
|
... |
|
||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
пароль (8) |
5 |
|
|||||||||||||||||||||
0x3F 8000 |
|
|
H0 SARAM (8K) |
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Секция кода |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
“пользователя” |
|||||||||||||||||||||||
0x3F F000 |
Загруз. ПЗУ (4K) |
|
|
|
|
|
|
|
|||||||||||||||||||||||
Загрузочный код |
|
|
|
|
|
|
|
main ( ) |
|||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
0x3F FC00 |
|
|
|
|
|
{ |
|
|||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||
{Сканирование GPIO} |
2 |
... |
|
||||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return; |
|
|||||
|
|
ПЗУ вектор (32) |
|
|
|
||||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||
|
|
|
|
|
|
|
} |
||||||||||||||||||||||||
0x3F FFC0 |
|
|
|
|
0x3F FC00 |
|
|
|
|
|
|
||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
СБРОС |
10 - 2 |
|

Карта Flash памяти TMS320F2812
Диапазон адресов |
|
|
Пространство данных & программ |
|||||
0x3D |
8000 |
– 0x3D 9FFF |
|
|
Секция J ; 8K x 16 |
|
|
|
|
|
|
|
|
|
|
|
|
0x3D A000 |
– 0x3D BFFF |
|
|
Секция I ; 8K x 16 |
|
|||
|
|
|
|
|
|
|
|
|
0x3D C000 |
– 0x3D FFFF |
|
|
Секция H : 16K x 16 |
|
|||
|
|
|
|
|
|
|
|
|
0x3E |
0000 |
– 0x3E 3FFF |
|
Секция G ; 16K x 16 |
|
|||
|
|
|
|
|
|
|
|
|
0x3E |
4000 |
– 0x3E 7FFF |
|
|
Секция F ; 16K x 16 |
|
||
|
|
|
|
|
|
|
||
0x3E 8000 – 0x3E BFFF |
|
Секция E ; 16K x 16 |
|
|||||
|
|
|
|
|
|
|
|
|
0x3E C000 |
– 0x3E FFFF |
|
Секция D; 16K x 16 |
|
||||
|
|
|
|
|
|
|
|
|
0x3F |
0000 |
– 0x3F 3FFF |
|
Секция C ; 16K x 16 |
|
|||
|
|
|
|
|
|
|
||
0x3F |
4000 |
– 0x3F 5FFF |
|
Секция B ; 8K x16 |
|
|||
|
|
|
|
|
|
|
||
0x3F |
6000 |
– 0x3F 7F7F |
|
Секция A ; (8K-128) x16 |
|
|||
|
|
|
|
|
|
|
||
0x3F |
7F80 |
– 0x3F 7FF5 |
|
Программирование 0x0000 |
|
|||
|
когда применяется режим защиты кода! |
|||||||
|
|
|
|
! |
||||
|
|
|
|
|||||
0x3F 7FF6 – 0x3F 7FF7 |
Точка входа Flash; 2 x 16 |
|
||||||
|
|
|
|
|
||||
0x3F 7FF8 – 0x3F 7FFF |
|
Пароль; 8 x 16 |
10 - 3

|
Основная работа с Flash |
|
Flash упорядочена в станицы по 128 адресов |
|
Дополнительные такты для последовательного |
|
доступа внутри |
|
страницы и произвольного доступа по страницам |
|
OTP - только произвольный доступ |
|
Необходимость определения числа дополнительных |
|
тактов |
|
сигнала SYSCLKOUT |
|
Операция «сброс» устанавливает максимальное |
|
значение! |
|
Код настройки Flash не должен запускаться из Flash |
|
памяти ! |
*** из руководства пользователя F281x ***
Для 150 МГц, PAGEWAIT = 5, RANDWAIT = 5, OTPWAIT = 8 Для 135 МГц, PAGEWAIT = 4, RANDWAIT = 4, OTPWAIT = 8

Ускорение исполнения кода из Flash:
Конвейерный режим работы Flash (для выборки кода
только)
|
|
|
|
|
|
|
|
|
|
|
16 или |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64 |
|
|
|
32 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
64 |
|
|
|
|
|
|
|
|
битная |
|
|
|
Модуль |
|
||||
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
отправка |
|
|
декодера |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ядра C28x |
|
||
|
|
Выборка |
|
2-х |
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
выровненная |
уровневы |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
по 64 бита |
й буферРазрешение конвейерного |
|||||||||||||||
|
|
|
|
|
|
выборки |
|
|
режима Flash |
|||||||||
|
|
|
|
|
|
|
|
0 = запрещено (по умолчанию) |
||||||||||
|
|
|
|
|
|
|
|
|
|
|
1 = разрешено |
|||||||
FOPT @ 0x00 0A80 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
15 |
|
|
|
|
|
|
|
1 |
|
0 |
|
|
||||||
|
|
зарезервировано |
|
|
|
|
ENPIPE |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 - 5

Остальные регистры конфигурации |
||||
Адрес |
Имя |
Flash |
Описание |
|
0x00 |
0A80 FOPT |
Регистр опций Flash |
||
0x00 |
0A82 FPWR |
Регистр режима питания Flash |
||
0x00 |
0A83 FSTATUS |
Регистр статуса Flash |
||
0x00 |
0A84 FSTDBYWAIT |
Регистр ожидания перевода Flash из спящего |
||
0x00 |
0A85 FACTIVEWAIT |
в режим ожидания |
|
|
Регистр ожидания перевода Flash из режима |
||||
0x00 |
0A86 FBANKWAIT |
ожидания в спящий |
||
Регистр ожидания доступа при циклах чтения Fla |
||||
0x00 |
0A87 FOTPWAIT |
Регистр ожидания доступа при циклах чтения OTP |
FPWR: Для сохранения электроэнергии – перевод Flash/OTP в
спящий или режим ожидания; Flash автоматически вернется в активный режим при последующем доступе в Flash/OTP
FSTATUS: различные биты статуса (например режим
энергосбережения)
FSTDBYWAIT: определяет число циклов ожидания при
пробуждении из спящего или режима ожидания
FACTIVEWAIT: определяет число циклов ожидания при
пробуждении из режима ожидания в активный
Значение этих регистров часто существенны – смотрите “TMS320F28x DSP
System Control and Interrupts Reference Guide,” SPRU078, для получения большей 10 - 6
информации

|
Основы программирования Flash |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ЦП сам выполняет операцию программирования flash |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
ЦП исполняет код утилит Flash из ОЗУ, который читает |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
данные и записывает из/во Flash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||||||||||||||
|
Необходимо иметь код утилиты Flash и данные для |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Flash в ОЗУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
Код |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FLASH |
|
|
|
|
|
|
|
|
|
ЦП |
|
|
||||||||||||||||||||
|
утилиты |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||||||||||
|
Flash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Эмулятор |
|
|
|
|
|
|
JTAG |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ОЗУ |
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
Данные |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
RS232 |
|
|
|
|
|
SCI |
|
|
|
|
|
|
|
|
|
ПЗУ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||||||||||||||||||||||||||||||
|
для |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SPI |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
Flash |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
из |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GPIO |
|
|
|
|
|
|
|
|
|
|
|
Загрузчик |
|
|
|
|
|
|
|
F28x DSP |
10 - 7 |
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|

Основы программирования Flash
Последовательность шагов для программирования Flash:
|
|
|
|
|
Алгоритм |
Функции |
|
1. |
Стирание |
Установка всех бит в ноль, затем в единиц |
|
2. |
ПрограммированиеПрограммирование выбранных бит в ноль |
||
3. |
Верификация |
Верификация содержимого flash |
|
|
|
|
|
Минимальный стираемый размер данных
-сектор (4К слова / 8K слов / 16K слов)
Минимальный размер программируемых данных – один бит!
Важным является не потерять электропитание во время выполнения шага стирания: если CSM пароль будет равен нулю,
CSM заблокируется навсегда!
Вероятность происхождения данной ситуации очень мала!
(Стирание выполняется сектор за сектором)
10 - 8

Утилиты программирования Flash
Code Composer Studio дополнительные модули (используя JTAG) *
Последовательный загрузчик Flash от TI (использует загрузку через SCI) *
Комплект программирования (использует
загрузку через GPIO)
Программирование программы загрузкиПрограммирование данных ввода/вывода
Построение своей собственной утилиты
Использование другого метода загрузки из ПЗУ
чем SCI
Встраивание кода программирования flash в
приложение
API алгоритмы* Доступнопрограммированияна сайте TII:: www..tiiFlash..com 10 - 9
предлагаются TI

Подключаемый модуль Flash для Code Composer Studio
10 - 10