31238

Запуск МК 1986ВЕ9х и 1901ВЦ1Т

Дата последнего изменения: 06.09.2021 11:46:35

На рисунке 1 приведена диаграмма запуска МК серии 1986ВЕ9х и МК 1901ВЦ1Т

Рисунок 1 - Диаграмма запуска МК серии 1986ВЕ9х и МК 1901ВЦ1Т

Примечание - Для МК 1901ВЦ1Т режим UART-загрузчика доступен только при MODE[2:0] = 110.

Загрузочная программа расположена в области BOOT ROM (масочное ПЗУ), начиная с адреса 0x0000_0000, и не может быть изменена.

Включение питания

После включения питания МК начинает выполнять загрузочную программу, которая по состоянию выводов MODE[2:0] (PF[6:4]) определяет, в каком из режимов будет функционировать МК. Перед опросом состояния этих выводов, для них включается внутренняя подтяжка к шине «Общий» (встроенные резисторы подтяжки к шине «Общий» имеют сопротивление ~50 кОм). Состояние этих выводов опрашивается загрузочной программой только один раз после подачи питания. В дальнейшем выводы MODE[2:0] (PF[6:4]) могут использоваться в пользовательской программе.

Считанное с выводов MODE[2:0] значение режима работы МК записывается в регистр MDR_BKP->REG_0E, поле MODE[2:0]. В данном регистре также устанавливается бит FPOR, указывающий на то, что произошёл запуск по включению питания. Бит FPOR сбрасывается только по сбросу при включении основного и батарейного питания. Далее на основании значения MODE[2:0] осуществляется переход в выбранный режим работы.

Сброс МК

После аппаратного сброса (вывод RESET) или сброса от сторожевого таймера МК начинает выполнять загрузочную программу. Так как бит FPOR регистра MDR_BKP->REG_0E уже был установлен ранее при запуске по включению питания, то загрузочная программа не опрашивает выводы MODE[2:0] (PF[6:4]), а считывает значение поля MODE[2:0] из регистра MDR_BKP->REG_0E. На основании значения MODE[2:0] осуществляется переход в выбранный режим работы. 

Режимы работы

Таблица 1– Режимы первоначального запуска микроконтроллера

MODE[2:0]

Режим

Стартовый адрес/таблица векторов прерываний

Описание

000

Микроконтроллер в режиме отладки

0х0800_0000

Процессор начинает выполняет программу из внутренней FLASH памяти программ. При этом установлен отладочный интерфейс JTAG_B

001

Микроконтроллер в режиме отладки

0х0800_0000

Процессор начинает выполняет программу из внутренней FLASH памяти программ. При этом разрешается работа отладочного интерфейса JTAG_А

010-011

Микропроцессор в режиме отладки

0х1000_0000

Процессор конфигурирует внешнюю системную шину в режим работы ROM с Wait_States = 0xF и начинает выполняет программу из внешней памяти, установленной на внешней системной шине. При этом разрешается работа отладочного интерфейса JTAG_B

100

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

-

-

101*

UART загрузчик без отладки

Определяется пользователем

Микроконтроллер через интерфейс UART2 на выводах PD[1:0] получает код программы в ОЗУ для исполнения. При этом отладочный интерфейс JTAG/SW заблокирован

110*

UART загрузчик без отладки

Определяется пользователем

Микроконтроллер через интерфейс UART2 на выводах PF[1:0] получает код программы в ОЗУ для исполнения. При этом отладочный интерфейс JTAG/SW заблокирован

110**

UART загрузчик без отладки

Определяется пользователем

Микроконтроллер через интерфейс UART3 на выводах PF[1:0] получает код программы в ОЗУ для исполнения. При этом отладочный интерфейс JTAG/SW заблокирован

111

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

-

-

* - режим доступен только для 1986ВЕ9x;
** - режим доступен только для 1901ВЦ1Т.

Режим «Микроконтроллер в режиме отладки», MODE[2:0] = 000, 001

После определения данного режима работы загрузочная программа выполняет следующие действия:

- при MODE[2:0] = 000 разрешает работу интерфейса JTAG_B в регистре MDR_BKP->REG_0E;

- при MODE[2:0] = 001 разрешает работу интерфейса JTAG_A в регистре MDR_BKP->REG_0E;

- устанавливает адрес таблицы векторов в значение 0x0800_0000 (VTOR);

- устанавливает адрес указателя стека в значение, считанное из ячейки с адресом 0x0800_0000 (SP);

- осуществляет безусловный переход по адресу, считанному из ячейки 0x0800_0004 (вектор RESET_HANDLER).

Режим «Микропроцессор в режиме отладки», MODE[2:0] = 010, 011

После определения данного режима работы загрузочная программа выполняет следующие действия:

- при MODE[2:0] = 010 разрешает работу интерфейса JTAG_B в регистре MDR_BKP->REG_0E;

- настраивает в контроллере портов ввода-вывода набор выводов МК для работы с внешней памятью:

  • шина данных D[31:0] ( {PB[15:0], PA[15:0]} );
  • шина адреса A[31:0] ( {PE[15:0], PF[15:0]} );
  • сигнал чтения данных OE ( PC[1] );
  • сигнал записи данных WE ( PC[2] );
  • сигналы выборки байтов BE[3:0] ( PC[6:3] );
  • сигнал синхронизации CLOCK ( PC[7] );
- настраивает в контроллере внешней системной шины режим работы с памятью ROM, устанавливает WAIT_STATE[3:0] = 0xF и положительную полярность сигнала CLOCK;

- устанавливает адрес таблицы векторов в значение 0x1000_0000 (VTOR);

- устанавливает адрес указателя стека в значение, считанное из ячейки с адресом 0x1000_0000 (SP);

- осуществляет безусловный переход по адресу, считанному из ячейки 0x1000_0004 (вектор RESET_HANDLER).

Режим «UART загрузчик без отладки», MODE[2:0] = 101, 110 (только для 1986ВЕ9x)

После определения данного режима работы загрузочная программа выполняет следующие действия:

- запрещает работу интерфейса JTAG_A и JTAG_B в регистре MDR_BKP->REG_0E;

- при MODE[2:0] = 101 в контроллере портов ввода-вывода настраивает выводы для работы UART2: TX – PD[1] и RX – PD[0];

- при MODE[2:0] = 110 в контроллере портов ввода-вывода настраивает выводы для работы UART2: TX – PF[1] и RX – PF[0];

- настраивает контроллер UART2 со следующими параметрами:

  • начальная скорость – 9600 Бод;
  • количество бит данных – 8;
  • четность – нет;
  • количество Stop бит – 1;
  • загрузчик не использует FIFO UART2;
  • загрузчик всегда выступает в качестве Slave, а внешнее устройство, подающее команды, – в качестве Master;
  • данные передаются младшим битом вперед;
- ожидает принятия по интерфейсу UART команды.

Режим «UART загрузчик без отладки», MODE[2:0] = 110 (только для 1901ВЦ1Т)

После определения данного режима работы загрузочная программа выполняет следующие действия:

- запрещает работу интерфейса JTAG_A и JTAG_B в регистре MDR_BKP->REG_0E;

- в контроллере портов ввода-вывода настраивает выводы для работы UART3: TX – PF[1] и RX – PF[0];

- настраивает контроллер UART3 со следующими параметрами:

  • начальная скорость – 13363 Бод;
  • количество бит данных – 8;
  • четность – нет;
  • количество Stop бит – 1;
  • загрузчик не использует FIFO UART3;
  • загрузчик всегда выступает в качестве Slave, а внешнее устройство, подающее команды, – в качестве Master;
  • данные передаются младшим битом вперед;
- ожидает принятия по интерфейсу UART команды.
Подробная информация о работе UART загрузчика и доступных командах приводится в спецификации, для МК 1986ВЕ9х - пункт «8.1 UART загрузчик», для МК 1901ВЦ1Т – пункт «5.5 UART загрузчик». В статье «Тестируем Bootloader в режиме UART» приводится подробное описание тестирования МК в режиме «UART загрузчик».

Сохранить статью в PDF

Документация

Теги

Была ли статья полезной?