Существует два метода загрузки исполняемого кода во внутреннюю память
микроконтроллера: через  отладочный интерфейс JTAG и посредством
встроенного загрузчика Bootstrap Loader (BSL). Связь с процессором
по интерфейсу JTAG доступна до тех пор, пока не уничтожена аппаратная
перемычка (fuse), после чего связь возможна только через интерфейс BSL.
Насколько я понял, в новой серии микроконтроллеров 5xx аппаратно
пережигаемая перемычка заменена программной блокировкой.

В этой статье мы рассмотрим второй вариант загрузки кода, с помощью
Bootstrap Loader (BSL)как наиболее простой для начала работы. Он
позволяет производить загрузку кода без возможности внутрисхемной
отладки.

Данный загрузчик доступен в контроллерах всех серий, содержащих
встроенную FLASH-память. При этом у процессоров серий 1xx, 2xx и
4xx загрузчик располагается в ROM, а у серии 5xx в защищенной
области FLASH.

Для чтения данных, записанных в памяти, через BSL, необходим пароль,
который может быть извлечен из прошивки или введен из внешнего источника
(например, считан из файла). При его отсутствии, возможно выполнение
только команды полной очистки FLASH-памяти.

Для работы с загрузчиком через компьютерный порт RS232 (COM), необходимы
4 сигнальные линии: TxD, RxD, DTR, RTS. Для преобразования уровней можно
использовать любую микросхему, которая поддерживает питание 3,3 В и
имеет хотя бы 3 входа (для сигналов TxD, DTR, RTS) и 1 выход (для
сигнала RxD). В том числе, микросхемы-преобразователи USB->UART
(например, FT232).

Я использую для этого самодельный переходник USB->UART на основе
микросхемы FTDI FT232BM. У фирмы FTDI также имеется микросхема FT232R,
которая требует минимального количества внешней обвязки и отлично
подходит для решения данной задачи.

На сайте будут представлены несколько схем BSL-программаторов, а также
схема JTAG-адаптера на LPT порт.

Подключение BSL-программатора к целевому микроконтроллеру осуществляется
в соответствии со следующей таблицей:

Сигнал RS232 Контроллеры с ножкой TEST Контроллеры семейства F4xx Остальные контроллеры
TxD RxD (P2.2) RxD (P1.1) RxD (P2.2)
RxD TxD (P1.1) TxD (P1.0) TxD (P1.1)
DTR RST/NMI RST/NMI RST/NMI
RTS TEST TCK TCK
GND GND GND GND

Рассмотрим работу с BSL-программатором на примере программы
msp430-bsl.exe, входящей в состав пакета MSP GCC.

Для получения справочной информации, в консоли (Start->Run -> cmd)
введите:

C:\\ >cd c:\\mspgcc\\bin

C:\\mspgcc\\bin>msp430-bsl.exe –h

| Вывод программы с русским переводом находится под спойлером:
|  [spoiler]

| [text]C:\\mspgcc\\bin>msp430-bsl.exe -h
|  MSP430 Bootstrap Loader Version: 2.0

| Использование: msp430-bsl.exe [options] [file]
|  Версия: 2.0

| Файлы с расширением ".txt" принимаются как файлы в формате TI-Text,
|  а файлы ".a43" и ".hex" как файлы в формате IntelHEX, а все остальные
|  как файлы ELF.

| Основные параметры:
|  -h, --help            Показать эту страницу с помощью.
|  -c, --comport=port    Указать номер используемого COM-порта.
|  (По умолчанию 0)
|  0->COM1 / ttyS0
|  1->COM2 / ttyS1
|  и т.д.
|  -P, --password=file   указывает на файл, содержащий векторы прерываний,
|  которые используются в качестве пароля. Это может
|  быть любой файл, ранее используемый для программирования.
|  (например -P INT\_VECT.TXT).
|  -f, --framesize=num   Максимальное количество байт, передаваемых за один фрейм.
|  (от 16 до 240 с шагом 16) (например -f 240).
|  -m, --erasecycles=num Число циклов полного стирания памяти (по умолчанию = 1).
|  Требуется для некоторых устаревших контроллеров.
|  (например для F149: -m20).
|  -U, --unpatched       Не загружать патч BSL, когда это может быть необходимо.
|  Используется когда нет необходимости программировать FLASH,
|  а программа загружается в RAM для исполнения.
|  -D, --debug           Увеличивает уровень отладочной информации.
|  -I, --intelhex        Формат входного файла IntelHex.
|  -T, --titext          Формат входного файла TI-Text.
|  -N, --notimeout       Не использовать таймаут для последовательного порта.
|  -B, --bsl=bsl.txt     Загрузить новый BSL из файла TI-Text.
|  -S, --speed=baud      Изменение скорости порта (читайте slaa089a.pdf для дополнительной
|  информации). Возможные значения: 9600, 19200, 38400
|  (по умолчанию 9600).
|  -1, --f1x             Указывает семейство контроллера.
|  -4, --f4x             Указывает семейство контроллера.
|  --invert-reset        Инвертирование сигнала на ножке RST.
|  --invert-test         Инвертирование сигнала на ножке TEST/TCK.
|  --swap-reset-test     Взаимозамена управляющих сигналов TEST/TCK и RST.
|  --test-on-tx          Also toggle TX line for the TEST/TCK signal.
|  --ignore-answer       Игнорировать ответы ACKs от BSL (не используйте
|  если не знаете что это)
|  --no-BSL-download     Do not download replacement BSL (disable automatic)
|  --force-BSL-download  Download replacement BSL even if not needed (the one
|  in the device would have the required features)

| Программирование:
|  -e, --masserase       Полное стирание (очищает всю FLASH-память)
|  -m, --mainerase       Стирание только основной области памяти(требует --password)
|  --erase=address       Стирание сегмента памяти по заданному адресу
|  (требует --password)
|  --erase=adr1-adr2     Стирание диапазона сегментов памяти по заданнымадресам
|  (требует --password)
|  -E, --erasecheck      Erase Check by file
|  -p, --program         Прошивка файла
|  -v, --verify          Верификация с помощью файла

| The order of the above options matters! The table is ordered by normal
|  execution order. For the options "Epv" a file must be specified.
|  Program flow specifiers default to "pvr" if a file is given.
|  Don't forget to specify "e" or "eE" when programming flash!

| Data retreiving:
|  -u, --upload=addr     Upload a datablock (see also: -s).
|  -s, --size=num        Size of the data block do upload. (Default is2)
|  -x, --hex             Show a hexadecimal display of the uploaded data.
|  (Default)
|  -b, --bin             Get binary uploaded data. This can be used
|  to redirect the output into a file.

| Действия перед выходом:
|  -g, --go=address      Старт программы по заданному адресу.
|  This implies option --wait.
|  -r, --reset           Сброс целевого MSP430.
|  This is a normal device reset and will start
|  the programm that is specified in the reset
|  vector. (see also -g)
|  -w, --wait            Ждать <ENTER> перед закрытием последовательного порта.

| Параметры адреса для --erase, --upload, --size могут быть указаны в формате
|  decimal, hexadecimal или octal.

| Если программа отвечает "NAK received", значит не указан, или указан неверно пароль.
|  Необходимо произвести полное стирание памяти перед программированием.[/text]

Параметры, которые будут нас интересовать в первую очередь:

-c, --comport=port - устанавливает номер COM-порта, используемый для
программирования, причем, "0" соответствуетCOM1, "1" соответствует COM2
и т.д.

--invert-reset – инвертирует логический уровень на ножке RST

--invert-test – инвертирует логический уровень на ножке TEST (TCK)

-e, --masserase – полное стирание FLASH-памяти

-p, --program – загрузка прошивки (программирование)

-v, --verify – верификация (проверка) прошивки

-r, --reset – сброс контроллера по окончании программирования

Инвертирование сигналов полезно в случае, когда используется не родной
программатор, схема и печатная плата которого описана в документе от
Texas Instruments, а самодельный, в котором это не предусмотрено
аппаратно.

Предположим, наш программатор (на основе простейшего преобразователя
уровней) подключен к порту COM3, программируемый контроллер имеет ножку
TEST. Тогда вызов процедуры программирования кристалла будет выглядеть
следующим образом:

C:\\mspgcc\\bin>msp430-bsl.exe -c2 --invert-reset -e -p -v -r leds.a43

| MSP430 Bootstrap Loader Version: 2.0
|  Mass Erase...
|  Transmit default password ...
|  Invoking BSL...
|  Transmit default password ...
|  Current bootstrap loader version: 1.60 (Device ID: 1232)
|  Program ...
|  226 bytes programmed.
|  Verify ...
|  Reset device ...[/text]

Для устройств без ножки TEST, в которых используется TCK, необходимо
добавить параметр  --invert-test.

Приведенный пример запуска программы-загрузчика осуществляет полное
стирание FLASH-памяти, загрузку новой прошивки из файла leds.a43,
проверку новой прошивки и сброс устройства.

Входной файл прошивки может иметь форматы Intel HEX или TI TXT.

Полезные ссылки: