Usb bsl что это
Программатор на основе загрузочного сектора MSP430 (BSL) позволяет пользователю обращаться к внутренней памяти микроконтроллера MSP430 в процессе макетирования, производства или обслуживания. Для модификации доступны как программная (флеш) память, так и память данных (ОЗУ).
Для связи используется общеизвестный протокол УАПП (UART) с интерфейсом RS232, обеспечивающий гибкое использование как программного, так и аппаратного обеспечения.
Для использования программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого подаётся определённая последовательность команд в соответствии с требуемым режимом. Режим загрузки может быть прерван переходом по определённому пользователем адресу либо осуществлением аппаратного сброса (reset).
Обращение к данным в памяти MSP430 через программатор на основе загрузочного сектора защищёно от несанкционированного доступа пользовательским паролем.
Программатор на основе загрузочного сектора (BSL) представляет возможность программирования флеш-памяти микроконтроллера MSP430 в процессе разработки либо для обновлений. Активизация такого режима может быть осуществлена утилитой, передающей команды по широкоизвестному протоколу УАПП (UART). BSL даёт возможность пользователю контролировать функционирование MSP430 и осуществлять обмен данными с персональным компьютером либо другим устройством, поддерживающим протокол UART.
Для защиты программы BSL от случайного стирания она содержится в специальном, масочно запрограммированном на заводе загрузочном секторе ПЗУ. Программа BSL не может быть стёрта никакими методами. Код загрузчика тщательно оптимизирован под нужды BSL, доступ к нему осуществляется с помощью команд, описанных ниже в данном документе. В целях безопасности было обращено большое внимание на защиту пользовательского кода от несанкционированного считывания. Любая команда BSL, позволяющая непосредственное или опосредованное чтение данных защищена паролем.
Для активизации программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого, передаётся символ синхронизации, сопровождаемый посылкой данных, определяющих выполнение желаемой операции.
2 Стандартная функция сброса (RESET) и активизация BSL
Формирование определённой последовательности сигналов на выводах -RST/NMI и TEST переводит MSP430 в режим выполнения программы с адреса сброса BSL, в отличие от обычного вектора сброса, расположенного по адресу FFFEh.
Если в приборе используется связь с ПК через УАПП (UART), эти 2 вывода могут управляться по линиям –DTR и -RTS последовательного порта (RS232) после соответствующего преобразования уровней. Детальное описание аппаратного обеспечения и сопутствующих вопросов дано в отдельном документе (см. Ссылки, раздел 14). Обычный вектор сброса по адресу FFFEh используется в том случае, когда вывод TEST находится в состоянии лог. «0» в то время, когда вывод RST/NMI переводится из лог. «0» в лог. «1» (стандартный метод, см. Рис 1).
Выполнение программы BSL начинается с того момента, как на вход TEST будет подано как минимум 2 положительных импульса и только в том случае, если вход TEST находился в состоянии лог. «1» во время фронта 0?1 на входе -RST/NMI (метод активизации BSL, см. Рис 2). Такая схема активизации повышает надёжность запуска BSL.
Рис. 1. Стандартная последовательность сигналов сброса (RESET)
Рис.2 Процедура активизации BSL с использованием выводов JTAG, объединённых с портами общего назначения
2.2 Микроконтроллеры с флеш-памятью MSP430 с обособленными выводами JTAG
Устройства с обособленными выводами интерфейса JTAG используют вывод TCK вместо вывода TEST.
Выполнение программы BSL начинается после того, как на входе TCK появятся как минимум два отрицательных перепада 1 ? 0 и, кроме этого, вход TCK находится в состоянии лог. «0» во время перехода 0 ? 1 на входе -RST/NMI (процедура активизации BSL, см. рис. 3). Такая схема активизации повышает надёжность запуска BSL.
Рис.3 Процедура активизации BSL с использованием обособленных выводов JTAG
3 Протокол УАПП (UART)
- Скорость обмена 9600 бод, режим полудуплекс (один передатчик в любой момент времени).
- Стартовый бит, 8 бит данных (первым передаётся МЗР), бит контроля по чётности (even), 1 стоп-бит.
- Успешный приём подтверждается передачей соответствующего символа (acknowledge).
Примечание: Использование скоростей обмена выше, чем 9600 бод может привести к сбоям в связи либо ошибкам записи флеш-памяти из-за несоблюдения временнЫх параметров. Флеш-память в результате этого может быть подвергнута недопустимым нагрузкам, а операции стирания/записи не будут надёжно выполняться.
4 Последовательность синхронизации
Перед передачей любой из команд, следует отослать в BSL символ синхронизации (SYNC), равный 80h. Этот символ необходим для вычисления требуемых внутренних параметров, определяющих временнЫе параметры УАПП и стирания/программирования флеш-памяти. Эта операция формирует опорное системное время BSL.
Далее, BSL отправляет символ подтверждения DATA_ACK = 90h, сообщающий об успешном приёме.
Примечание: Символ синхронизации не входит в последовательность данных Data Frame, описанную ниже.
Существуют два типа команд: требующие и не требующие пароля. Все команды, потенциально допускающие прямой или косвенный доступ к данным защищены паролем.
- Принять пароль
- Полное стирание (стирает всю флеш-память, как основную, так и память данных)
- Считать версию BSL (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Сменить скорость обмена (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Принять блок данных для программирования флеш-памяти, ОЗУ либо периферийных модулей
- Передать блок данных
- Стереть сегмент
- Проверка стирания (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Загрузить программный счётчик и запустить пользовательскую программу
6 Процесс программирования
Процесс записи (команда «Принять блок данных» (RX data block)) во флеш-память, ОЗУ или в периферийные модули выполняется в режиме реального времени. Это означает, что байт либо слово данных обрабатывается непосредственно сразу после их принятия, а процесс записи завершается до того, как полностью принят следующий байт/слово. Таким образом, общее время записи определяется скоростью обмена, никакие способы буферизации не применяются.
Блоки данных, расположенные вне адресной области флеш-памяти, считаются загружаемыми в ОЗУ или периферийные модули, поэтому биты данных контроля флеш-памяти игнорируются.
Примечание: при потере связи по УАПП в результате помех на линии либо нарушении временнЫх требований к передаче блоков данных, единственным способом восстановления обмена является повторная инициализация BSL.
7 Формат посылки
Формат посылки данных, используемый программатором, представляет собой стандартный последовательный протокол (SSP) фирмы TI для MSP430, дополненный предваряющей синхропоследовательностью (SS), как было описано выше. В таблице 1 BSL является приёмником.
Очевидная избыточность некоторых параметров является следствием адаптации под SSP а также служит для экономии объёма ПЗУ загрузчика.
Дополнительная информация по стандартному последовательному протоколу (SSP) содержится в документе «Применение программы начальной загрузки в микроконтроллеры MSP430 с флэш-памятью: программные и аппаратные предложения (версия B)», Application of Bootstrap Loader in MSP430 With Flash Hardware and Software Proposal (SLAA096).
- Первые 8 байт (от HDR до LH), которые являются обязательными (xx означает, что данные не являются значимыми).
- Необязательные байты данных от D1 до Dn.
- Два байта (CKL и CKH) контрольной суммы (являются необходимыми).
Подтверждение от BSL, необходимое для всех команд, кроме передачи блока данных и передачи версии BSL.
7.2 Контрольная сумма
16-битная (2 байта) контрольная сумма вычисляется по всем принятым/переданным байтам B1 … Bn в посылке за исключением собственно байт контрольной суммы путём выполнения операции XOR над операндами-словами (2 байта) и инверсией результата.
CHECKSUM = INV [ (B1 + 256*B2) XOR (B3 + 256*B4) XOR … XOR (Bn–1 + 256*Bn) ]
CKL = INV [ B1 XOR B3 XOR … XOR Bn–1 ] ; CKH = INV [ B2 XOR B4 XOR … XOR Bn ]
Таблица 1. Формат посылки команд BSL
Принятая команда BSL | H D R | C M D | L1 | L2 | AL | AH | LL | LH | D1 | D2..Dn | CKL | CKH | ACK |
Принять блок данных (RX data block) | 80 | 12 | n | n | AL | AH | n-4 | 0 | D1 | D2..Dn-4 | CKL | CKH | ACK |
Принять пароль (RX Password) | 80 | 10 | 24 | 24 | xx | xx | xx | xx | D1 | D2..D20 | CKL | CKH | ACK |
Стереть сегмент (Erase segment) | 80 | 16 | 04 | 04 | AL | AH | 02/04 | A5 | - | - | CKL | CKH | ACK |
Полное стирание (Mass erase) | 80 | 18 | 04 | 04 | xx | xx | xx | xx | - | - | CKL | CKH | ACK |
Проверка стирания (Erase check) | 80 | 1C | 04 | 04 | AL | AH | LL | LH | - | - | CKL | CKH | ACK |
Сменить скорость обмена (Change baud rate) | 80 | 20 | 04 | 04 | D1 | D2 | D3 | xx | - | - | CKL | CKH | ACK |
Передать блок данных (TX data block) | 80 | 14 | 04 | 04 | AL | AH | n | 0 | - | - | CKL | CKH | - |
Ответ BSL | 80 | xx | n | n | D1 | D2.. | … | … | … | …Dn | CKL | CKH | - |
Передать версию BSL (TX BSL version) | 80 | 1E | 04 | 04 | xx | xx | xx | xx | - | - | CKL | CKH | - |
Ответ BSL | 80 | xx | 10 | 10 | D1 | D2.. | … | … | … | …D10 | CKL | CKH |
Примечания: Все цифры в таблице – байты в шестнадцатеричном виде
ACK передаётся обратно от BSL.
Синхропоследовательность не входит в блок посылки.
Команды «Проверка стирания» и « Передать версию BSL» не входят в стандартный набор команд (V1.50 или выше).
Команда « Сменить скорость обмена» не входит в стандартный набор команд (V1.60 или выше либо загружаемый BL_150S_14x.txt).
HDR DATA_FRAME = 80h означает ожидается посылка данных в соответствии со стандартным последовательным протоколом (SSP) фирмы TI для MSP430.
CMD Идентификатор команды
Таблица 4. Версия BSL 1.30 в микроконтроллерах серий F41x, F11x, и F11x1
Таблица 5. Версия BSL 1.40 в микроконтроллерах серий F12x
Таблица 6. Версия BSL 1.60 в микроконтроллерах серий F11x2, F12x2, F43x, F44x, FE42x, FW42x, FG43x
В статье описывается реализация недорогого интерфейса начального загрузчика (BSL) для микроконтроллера MSP430 на основе LaunchPad, использующего протокол UART. Целью этой разработки является внедрение устройств MSP430 Value Line, имеющих менее двух модулей последовательного интерфейса, в качестве моста между программным инструментом начальной загрузки BSL Scripter и устройством MSP430, куда осуществляется загрузка. Дополнительные материалы по проекту и исходный код программы, относящиеся к данной статье, можно загрузить с сайта.
Подключение аппаратного обеспечения
На Рис. 5 показано типовое аппаратное соединение между ПК, на котором работает программа BSL Scripter, платой MSP- EXP430G2 Launchpad и устройством MSP430, куда осуществляется начальная загрузка; в данном случае это MSP430F5438A на плате MSP- TS430PZ5x100.
Рисунок 5. | Типовое аппаратное подключение интерфейса BSL на основе Launchpad. |
Литература
-
wiki-страница BSL (MSP430): BSL (MSP430) wiki. Руководство пользователя по программированию MSP430 с помощью начального загрузчика (SLAU319). Руководство пользователя по семейству MSP430x5xx/MSP430x6xx (SLAU208).
Купить MSP430 на РадиоЛоцман.Цены — от 54,31 до 6 063 ₽
Исполнение: PDIP14. Микроконтроллер: MSP430 16-bit, Flash: 1K, RAM: 128, АЦП: 8 x 10bit Тип корпуса : DIP-14 Архитектура : MSP430 16-bit.
Для комментирования материалов с сайта и получения полного доступа к нашему форуму Вам необходимо зарегистрироваться.
Программатор на основе загрузочного сектора MSP430 (BSL) позволяет пользователю обращаться к внутренней памяти микроконтроллера MSP430 в процессе макетирования, производства или обслуживания. Для модификации доступны как программная (флеш) память, так и память данных (ОЗУ).
Для связи используется общеизвестный протокол УАПП (UART) с интерфейсом RS232, обеспечивающий гибкое использование как программного, так и аппаратного обеспечения.
Для использования программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого подаётся определённая последовательность команд в соответствии с требуемым режимом. Режим загрузки может быть прерван переходом по определённому пользователем адресу либо осуществлением аппаратного сброса (reset).
Обращение к данным в памяти MSP430 через программатор на основе загрузочного сектора защищёно от несанкционированного доступа пользовательским паролем.
Программатор на основе загрузочного сектора (BSL) представляет возможность программирования флеш-памяти микроконтроллера MSP430 в процессе разработки либо для обновлений. Активизация такого режима может быть осуществлена утилитой, передающей команды по широкоизвестному протоколу УАПП (UART). BSL даёт возможность пользователю контролировать функционирование MSP430 и осуществлять обмен данными с персональным компьютером либо другим устройством, поддерживающим протокол UART.
Для защиты программы BSL от случайного стирания она содержится в специальном, масочно запрограммированном на заводе загрузочном секторе ПЗУ. Программа BSL не может быть стёрта никакими методами. Код загрузчика тщательно оптимизирован под нужды BSL, доступ к нему осуществляется с помощью команд, описанных ниже в данном документе. В целях безопасности было обращено большое внимание на защиту пользовательского кода от несанкционированного считывания. Любая команда BSL, позволяющая непосредственное или опосредованное чтение данных защищена паролем.
Для активизации программатора на основе загрузочного сектора следует подать специальную последовательность сигналов BSL на определённые выводы процессора. После этого, передаётся символ синхронизации, сопровождаемый посылкой данных, определяющих выполнение желаемой операции.
2 Стандартная функция сброса (RESET) и активизация BSL
Формирование определённой последовательности сигналов на выводах -RST/NMI и TEST переводит MSP430 в режим выполнения программы с адреса сброса BSL, в отличие от обычного вектора сброса, расположенного по адресу FFFEh.
Если в приборе используется связь с ПК через УАПП (UART), эти 2 вывода могут управляться по линиям –DTR и -RTS последовательного порта (RS232) после соответствующего преобразования уровней. Детальное описание аппаратного обеспечения и сопутствующих вопросов дано в отдельном документе (см. Ссылки, раздел 14). Обычный вектор сброса по адресу FFFEh используется в том случае, когда вывод TEST находится в состоянии лог. «0» в то время, когда вывод RST/NMI переводится из лог. «0» в лог. «1» (стандартный метод, см. Рис 1).
Выполнение программы BSL начинается с того момента, как на вход TEST будет подано как минимум 2 положительных импульса и только в том случае, если вход TEST находился в состоянии лог. «1» во время фронта 0?1 на входе -RST/NMI (метод активизации BSL, см. Рис 2). Такая схема активизации повышает надёжность запуска BSL.
Рис. 1. Стандартная последовательность сигналов сброса (RESET)
Рис.2 Процедура активизации BSL с использованием выводов JTAG, объединённых с портами общего назначения
2.2 Микроконтроллеры с флеш-памятью MSP430 с обособленными выводами JTAG
Устройства с обособленными выводами интерфейса JTAG используют вывод TCK вместо вывода TEST.
Выполнение программы BSL начинается после того, как на входе TCK появятся как минимум два отрицательных перепада 1 ? 0 и, кроме этого, вход TCK находится в состоянии лог. «0» во время перехода 0 ? 1 на входе -RST/NMI (процедура активизации BSL, см. рис. 3). Такая схема активизации повышает надёжность запуска BSL.
Рис.3 Процедура активизации BSL с использованием обособленных выводов JTAG
3 Протокол УАПП (UART)
- Скорость обмена 9600 бод, режим полудуплекс (один передатчик в любой момент времени).
- Стартовый бит, 8 бит данных (первым передаётся МЗР), бит контроля по чётности (even), 1 стоп-бит.
- Успешный приём подтверждается передачей соответствующего символа (acknowledge).
Примечание: Использование скоростей обмена выше, чем 9600 бод может привести к сбоям в связи либо ошибкам записи флеш-памяти из-за несоблюдения временнЫх параметров. Флеш-память в результате этого может быть подвергнута недопустимым нагрузкам, а операции стирания/записи не будут надёжно выполняться.
4 Последовательность синхронизации
Перед передачей любой из команд, следует отослать в BSL символ синхронизации (SYNC), равный 80h. Этот символ необходим для вычисления требуемых внутренних параметров, определяющих временнЫе параметры УАПП и стирания/программирования флеш-памяти. Эта операция формирует опорное системное время BSL.
Далее, BSL отправляет символ подтверждения DATA_ACK = 90h, сообщающий об успешном приёме.
Примечание: Символ синхронизации не входит в последовательность данных Data Frame, описанную ниже.
Существуют два типа команд: требующие и не требующие пароля. Все команды, потенциально допускающие прямой или косвенный доступ к данным защищены паролем.
- Принять пароль
- Полное стирание (стирает всю флеш-память, как основную, так и память данных)
- Считать версию BSL (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Сменить скорость обмена (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Принять блок данных для программирования флеш-памяти, ОЗУ либо периферийных модулей
- Передать блок данных
- Стереть сегмент
- Проверка стирания (команда поддерживается в BSL версии V1.60 или выше, либо в загружаемой версии BL_150S_14x.txt)
- Загрузить программный счётчик и запустить пользовательскую программу
6 Процесс программирования
Процесс записи (команда «Принять блок данных» (RX data block)) во флеш-память, ОЗУ или в периферийные модули выполняется в режиме реального времени. Это означает, что байт либо слово данных обрабатывается непосредственно сразу после их принятия, а процесс записи завершается до того, как полностью принят следующий байт/слово. Таким образом, общее время записи определяется скоростью обмена, никакие способы буферизации не применяются.
Блоки данных, расположенные вне адресной области флеш-памяти, считаются загружаемыми в ОЗУ или периферийные модули, поэтому биты данных контроля флеш-памяти игнорируются.
Примечание: при потере связи по УАПП в результате помех на линии либо нарушении временнЫх требований к передаче блоков данных, единственным способом восстановления обмена является повторная инициализация BSL.
7 Формат посылки
Формат посылки данных, используемый программатором, представляет собой стандартный последовательный протокол (SSP) фирмы TI для MSP430, дополненный предваряющей синхропоследовательностью (SS), как было описано выше. В таблице 1 BSL является приёмником.
Очевидная избыточность некоторых параметров является следствием адаптации под SSP а также служит для экономии объёма ПЗУ загрузчика.
Дополнительная информация по стандартному последовательному протоколу (SSP) содержится в документе «Применение программы начальной загрузки в микроконтроллеры MSP430 с флэш-памятью: программные и аппаратные предложения (версия B)», Application of Bootstrap Loader in MSP430 With Flash Hardware and Software Proposal (SLAA096).
- Первые 8 байт (от HDR до LH), которые являются обязательными (xx означает, что данные не являются значимыми).
- Необязательные байты данных от D1 до Dn.
- Два байта (CKL и CKH) контрольной суммы (являются необходимыми).
Подтверждение от BSL, необходимое для всех команд, кроме передачи блока данных и передачи версии BSL.
7.2 Контрольная сумма
16-битная (2 байта) контрольная сумма вычисляется по всем принятым/переданным байтам B1 … Bn в посылке за исключением собственно байт контрольной суммы путём выполнения операции XOR над операндами-словами (2 байта) и инверсией результата.
CHECKSUM = INV [ (B1 + 256*B2) XOR (B3 + 256*B4) XOR … XOR (Bn–1 + 256*Bn) ]
CKL = INV [ B1 XOR B3 XOR … XOR Bn–1 ] ; CKH = INV [ B2 XOR B4 XOR … XOR Bn ]
Таблица 1. Формат посылки команд BSL
Принятая команда BSL | H D R | C M D | L1 | L2 | AL | AH | LL | LH | D1 | D2..Dn | CKL | CKH | ACK |
Принять блок данных (RX data block) | 80 | 12 | n | n | AL | AH | n-4 | 0 | D1 | D2..Dn-4 | CKL | CKH | ACK |
Принять пароль (RX Password) | 80 | 10 | 24 | 24 | xx | xx | xx | xx | D1 | D2..D20 | CKL | CKH | ACK |
Стереть сегмент (Erase segment) | 80 | 16 | 04 | 04 | AL | AH | 02/04 | A5 | - | - | CKL | CKH | ACK |
Полное стирание (Mass erase) | 80 | 18 | 04 | 04 | xx | xx | xx | xx | - | - | CKL | CKH | ACK |
Проверка стирания (Erase check) | 80 | 1C | 04 | 04 | AL | AH | LL | LH | - | - | CKL | CKH | ACK |
Сменить скорость обмена (Change baud rate) | 80 | 20 | 04 | 04 | D1 | D2 | D3 | xx | - | - | CKL | CKH | ACK |
Передать блок данных (TX data block) | 80 | 14 | 04 | 04 | AL | AH | n | 0 | - | - | CKL | CKH | - |
Ответ BSL | 80 | xx | n | n | D1 | D2.. | … | … | … | …Dn | CKL | CKH | - |
Передать версию BSL (TX BSL version) | 80 | 1E | 04 | 04 | xx | xx | xx | xx | - | - | CKL | CKH | - |
Ответ BSL | 80 | xx | 10 | 10 | D1 | D2.. | … | … | … | …D10 | CKL | CKH |
Примечания: Все цифры в таблице – байты в шестнадцатеричном виде
ACK передаётся обратно от BSL.
Синхропоследовательность не входит в блок посылки.
Команды «Проверка стирания» и « Передать версию BSL» не входят в стандартный набор команд (V1.50 или выше).
Команда « Сменить скорость обмена» не входит в стандартный набор команд (V1.60 или выше либо загружаемый BL_150S_14x.txt).
HDR DATA_FRAME = 80h означает ожидается посылка данных в соответствии со стандартным последовательным протоколом (SSP) фирмы TI для MSP430.
CMD Идентификатор команды
Таблица 4. Версия BSL 1.30 в микроконтроллерах серий F41x, F11x, и F11x1
Таблица 5. Версия BSL 1.40 в микроконтроллерах серий F12x
Таблица 6. Версия BSL 1.60 в микроконтроллерах серий F11x2, F12x2, F43x, F44x, FE42x, FW42x, FG43x
Способы программирования
Разделим условно их на "диагностический"(ПС)* и "инженерный"(ПС)*. В чем-же их различия.
Первое и самое главное в порядке доступа к содержимому Flash-памяти ЭБУ.
"Диагностический" предполагает всегда доступ через сервисный разъем автомобиля посредством программы-загрузчика подгружающей "Loader" в ОЗУ или ПЗУ ЭБУ автомобиля на время сессии чтения-записи. Тут надо сразу оговориться, что не все Флешеры (от слова Flash, так мы будем далее именовать устройства работающие с ЭБУ через диагностический разъем) имеют возможность читать содержимое Flash-Памяти. Некоторые, как например практически все дилерские приборы, умеют только производить запись.
"Инженерные" варианты загрузчиков работают с содержимым памяти ЭБУ через так называемый отладочный интерфейс, который по своему существу и называется "инженерным". В зависимости от семейства процессоров, этот интерфейс на сегодня может быть различным.
Для ЭБУ, оснащенных процессорами Motorola MPC, он носит название BDM (Background Debug Mode).
Для ЭБУ, оснащенных процессорами семейств "Infineon" (С167xx, ST10xx, TC17xx и т.д.), он носит название BSL (Bootstrap Loader)
Для ЭБУ, оснащенных процессорами семейства "Renesas", он носит название JTAG (Joint Test Action Group)
Данные загрузчики используют Loader самого процессора ЭБУ.
Следующим достаточно существенным отличем являются принципы "получения разрешения" загрузчиком от ЭБУ на начало процесса чтения-записи. При работе "дилерским" методом ЭБУ запрашивает ключ доступа (пароль) для разрешения сессии репрограмминга.
При получении правильного ключа, ЭБУ разрешает работу со своим массивом памяти. При не получении ответа, получении неправильного ответа — сессия закрывается. Назовем такой метод полученя разрешения ВИРТУАЛЬНЫМ.
При работе "инженерным" методом разрешение на такую сессию получается путем изменения физического уровня сигналов на соответствующих выводах процессора ЭБУ. Принято называть такие выводы Boot-Pin. Их может быть от одного и до… Зависит от схемотехники и конфигурации конкретного процессора. В ряде случаев необходимо бывает снять физический уровень с одного пина процессора и подать его на другой. Например С167хх ST10хх. Снимем со 105 пина процессора, подаем на 104 пин.
Соответстенно и назовем такой метод получения доступа ФИЗИЧЕСКИМ.
Но… производитель не стоит на месте. С целью затруднить доступ тюнерам к своему ПО, способы защиты постоянно совершенствуются. Повышается ее уровень (TPROT от Protection). Примерно с TPROT9 при открытии BSL-Сессии процессор запрашивает у загрузчика ключ доступа.
Еще одним действием для защиты ПО стало помещение одного из ключей RSA в ОТР (одноразово программируемая) область Flash-Памяти процессора. Например Bosch Kefico ME17.9.хх, что затруднило работу с данным ЭБУ "Диагностическим" методом. Благо сам же производитель закладывает в ПО ряд моментов, которые позволяет тюнерам обходить данные способы защиты. (например флаг конфигурации " Не рассчитывать RSA")
Целью данной статьи является помощь в начале освоения микроконтроллеров MSP430 фирмы Texas Instruments.
Была сделана попытка систематизировать действия, которые позволят минимальными усилиями сделать первые шаги в освоении данного типа микроконтроллеров, не перегружая при этом специфичными и иногда трудными (если не сказать отталкивающими) сведениями. Статья не претендует на полноту обзора указанных микроконтроллеров, а лишь позволяет сделать первые шаги на пути их освоения.
Преимущества MSP430:
1. Очень широкая линейка для практически любых задач.
2. Очень широкий ряд корпусов, от DIP до очень мелких типа pqfp.
Весь доступный ряд можно посмотреть с помощью удобной странички от TI:
Перейдя по ссылкам слева и выбирая нужную серию попадаем в каталог:
Где можно выбрать нужный себе кристалл по объему Flash-памяти, ОЗУ, наличию USART, АЦП, корпуса и т.д. Сразу скажу, что я не использовал корпуса типа DIP. Корпус типа SOIC легко распаивается на самодельную плату изготовленную по технологии ЛУТ. Достаточно стабильно у меня получаются платы и для корпусов типа PW (расстояние между ногами 0,65мм).
3. Сверхнизкое потребление питания (бывает ну крайне важно). На этом остановимся поподробнее ниже с примерами и цифрами.
4. Мне также например нравиться то, что для одного и того же типа корпуса расположение ног для разных серий и типов в пределах серии одинаково. Это дает возможность легко заменить один тип на другой без изменения печатной платы.
5. Немаловажно, что все типы микроконтроллеров можно бесплатно заказать у TI для освоения.
В качестве примера два разных MSP430 в одинаковом корпусе, MSP430f2619 и MSP430f149:
Для начала освоения выберем msp430f1232 или msp430f1222, они отличаются только объемом flash памяти и абсолютно идентичны по расположению ног. Я считаю этот микроконтроллер самым ходовым в радиолюбительской практике. Его плюсом можно также назвать наличие модели его младшего брата msp430f1121 (без usart) в Proteus.
На этой странице есть даташит, а по этой ссылке прочие документы.
Документация от TI имеет особенность (для тех кто уже знаком с микроконтроллерами от, например AVR ATMEL). В даташите указываются специфичные именно для этого камня особенности (количество памяти, наличие USART, электрические характеристики и т.д.). А описание регистров находятся в документе MSP430x1xx Family User's Guide (Rev. F) для серии msp430f1xx. Этот документ общий для всей серии.
Есть также настольные книги "руководство пользователя" и "рекомендации по применению".
А также примеры исходных кодов для семейства msp430f1x по ссылке.
Минимальная обвязка для включения микроконтроллера:
Сперва нам понадобятся макетка и программатор.
Пример моей макетки в файле к статье.
Теперь небольшое отступление на предмет программатора.
Микроконтроллеры msp430 могут быть запрограммированы следующим образом:
4-х проводной JTAG (прошивка и отладка (очень удобно)) бывает LPT и USB.
2-х проводной JTAG, так называемый Spyi-Bi-wire (прошивка и отладка) только USB.
BSL - последовательный интерфейс (только прошивка). COM или USB-COM.
Не все микроконтроллеры могут быть зашиты всеми указанными программаторами. Смотреть надо в даташите на каждый камень. (Так рекомендуемые для начала работы MSP430F1232 можно шить только по 4-х проводному JTAGу или по BSL) .
Где взять программатор? Естественно можно купить. Есть дорого фирменные от TI или от Olimex, а также море китайских клонов.
Например BSL (хотя bsl можно сделать из любого шнурка от сотового в котором есть линии RTS и DTR) можно найти на AliExpress.
JTAG через USB
JTAG через LPT
Также на сайте TI можно почти за даром заказать LaunchPad:
Который в своем составе имеет 2-х проводной JTAG Spy-Bi-Ware USB, но к сожаленью этот Spy-Bi-Wire есть не во всех камнях. Я поигрался. Мне не пригодилось (у меня практически не было камней с поддержкой spy-bi-wire) и я его отдал другу для освоения.
Также программатор можно сделать и самостоятельно. Где взять детали, смотрите в конце статьи.
В архиве программатор bsl.rar схема BSL программатора на переходнике USB-COM
В архиве программатор JTAG LPT-FET.rar схема и печатка для программатора LPT-FET. Необходимо отметить, что это упрощенная мной схема LPT-FET от Olimex
И ей требуется внешнее питание 3.3В от платы микроконтроллера. Плата получилась компактная и умещается в корпус DB-25.
Для BSL программатора корпуса еще нет, но скорее всего это будет кусок кабель-канала нужного сечения.
Выходные сигналы BSL программатора выведены на разъемы типа PLS. И отдельно выведено питание 3.3В (бонусом так сказать)
Оба типа мной собраны и работают.
Программировать через JTAG можно из среды разработки. А для программирования через BSL используется бесплатная и удобная программа от Kurt-а MSPFET. (Приложена в архиве или может быть скачана по ссылке)
Разработка кода может вестись в различных средах
Итак, допустим макетка сделана (нам в первую очередь нужно запаять стабилизатор на 3.3Вольта, светодиод на ножку P1.0 и разъем для LPT-FET. Кварц и прочее можно допаять позже). Программатор LPT-FET тоже.
Устанавливаем и запускаем IAR. Нажимаем create new project:
Даем свое название и вот окно проекта с типовым шаблоном.
Перво наперво правой кнопкой мыши кликаем по: название - debug -> option
Выбираем наш микроконтроллер
Меняем тип отладчика
Задаем, что у нас программатор lpt от olimex на lpt1
В окне сишного кода меняем весь на код из файла demo led.c, нажимаем F7 и видим:
Нажимаем зеленый треугольник и происходит заливка кода в микроконтроллер:
В открывшемся окне нажимаем "GO" старт программы:
В итоге, видим мигающий светодиод на плате.
Если у вас программатор типа BSL, то порядок действий следующий: в IAR выбираем нужный контроллер. Пишем код (например demo led.с).
Правой кнопкой по debug, option и ставим настройки в пункте linker как на рисунке:
Жмем F7. Запускаем MSPFET от Kurta. Открывается окно. Нажимаем Setup. Выбираем программатор BSL.
Ставим настройки для выходных ног, патча бутлодера (есть фишка, но нам сейчас не надо), скорости (тоже пока не надо) и т.д.
Для программатора сделанного из TUSB3410 настройки выглядят так.
В выпадающем списке выбираем нужный микроконтроллер.
Меню, открыть, и идем в каталог где лежит наш тестовый проект. В нем ищем каталог Debug. В нем ищем каталог EXE:
И там выбираем файл прошивки с расширением .a43:
Открываем. Нажимаем кнопку auto. Все процесс пошел. В случае удачных действий получаем картинку
И мигающий светодиод. (Если в настройках msp-fet от Kurta поставить галочку перегружать файл, то в дальнейшем нет необходимости повторять все действия. Изменил прошивку в IAR. Нажал F7. Зашел в MSPFET. Нажал auto.)
Теперь вкратце об особенностях микрконтроллеров msp430.
Супер гибкая система тактирования. В примере мы использовали внутренний генератор на 750кГц. Можно изменять его частоту регистрами настройки DCO (смотри руководство пользователя). Можно на ноги XIN XOUT повесить кварц часовой или высокочастотный (причем для часового кварца конденсаторы уже есть внутри камня и их номинал можно выбирать). В программе можно легко переключаться с одного источника тактирования на другой. В купе с разными режимами спячки можно обеспечить беспрецедентное снижение энергопотребления. Например, затактировать таймер от ACKL настроенный на 32768Гц от часового кварца. Разрешить прерывание от таймера. В прерывании разбудить ядро и настроить тактирование ядра на максимальную частоту, быстро сделать необходимые вычисления и уйти опять в глубокий сон. Подробное описание систем тактирования и режимов питания смотрите в руководстве пользователя.
Вот простой пример для повторения.
Зашьем код из файла norma.c
Включаем через миллиамперметр и видим, что в моменты когда светодиод не горит ток потребления 230мкА.
Зашьем код из файла LPM0.c
Включаем через миллиамперметр и видим, что ток потребления 50мкА. (Данные замеры проводились тестером на пределе 20мА, но в качестве иллюстрации сойдет). Особенно целесообразно применение данных микроконтроллеров в паре с ЖК экранами, где столь малое энергопотребление проявляется в полной мере.
Кстати такое низкое потребление порождает и соответствующие проблемы, связанные с паразитным питанием. Особенно если учесть, что для питания достаточно 1.8В. При довольно насыщенной схеме, контроллер стартует от всего подряд, вплоть до usart. Поэтому будьте внимательны. Часто, микроконтроллер не выходит на связь с JTAG, пока не отключишь внешние схемы (если не приняты меры по исключению паразитного питания и согласования уровней).
Что не очень понравилось в MSP430 0- так это неудобно реализованная работа с Flash памятью для хранения каких либо переменных пользователя. Так называемая память info разбита на сегменты по 128 байт и беда в том, что записать можно в каждую ячейку отдельно, но только один раз. Для изменения ранее записанной ячейки необходимо стереть весь сегмент и заново записать в нужную ячейку. Это приводит к тому, что перед изменением любой ячейки необходимо сначала прочитать в ОЗУ все используемые ячейки, изменить необходимую, стереть весь сегмент и записать из ОЗУ все во info flash.
Итак, первый проект Вы удачно сделали и зашили в контроллер. Что дальше?
Для освоения периферии мне очень помогли примеры использования MSP430 от TI, ранее упомянутые в статье. Много примеров и проектов есть в книге "рекомендации по применению" от КОМПЭЛ.
Если вы решили сами собрать программатор для MSP430, то я рекомендую зарегистрироваться на сайте TI с указанием своего реального номера телефона и может быть даже выдуманным местом работы.
Заказать в качестве бесплатных образцов следующие компоненты:
- MSP430F1222IDW корпус soic
- MSP430F1232IDW корпус soic
- преобразователь COM-usb tusb3410 (для bsl программатора)
- стабилизатор reg104-3.3 в корпусе SOT223-5
Привезут в течении недели, возможно перед этим позвонят и спросят на русском языке зачем Вам это необходимо. Тут уж каждый сам за себя. Придумывайте что хотите. Как привезут, позвонят еще раз из службы доставки. Именно поэтому должен быть правильный телефон и адрес.
Начальный загрузчик MSP430
Начальный загрузчик (BSL) микроконтроллера MSP430 — это программа, которая встроена в устройства MSP430 для считывания и изменения содержимого памяти MSP430, и которую можно использовать для изменения встроенного программного обеспечения. Большинство устройств MSP430 имеют возможность доступа к UART BSL через интерфейс UART. Исключение составляют устройства MSP430 с интерфейсом USB, которые имеют встроенную программу USB BSL [1].
Назначение контактов
Эта реализация системы требует использования всех контактов порта 1 (P1) микроконтроллера MSP430G2231. Помимо шести контактов, показанных на Рисунке 5, в Launchpad есть два других контакта, которые нужны для реализации интерфейса BSL. Один контакт используется для определения типа устройства MSP430, куда осуществляется загрузка, указывая, является ли оно устройством, в котором контакты JTAG объединены с другими контактами, или же устройством со специально выделенными контактами JTAG. Другой контакт, который подключается к кнопочному выключателю на плате, используется в качестве входа для формирования входной последовательности BSL. Изначально программа BSL Scripter использовала контакты DTR и RTS для формирования входной последовательности BSL в устройстве MSP430, куда осуществляется загрузка. Но эти контакты не доступны в UART- соединении комплекта разработчика MSP-EXP430G2 Launchpad, поэтому необходимо использовать другой вход, чтобы заставить MSP430G2231 на плате Launchpad формировать входную последовательность BSL для устройства MSP430, в которое осуществляется загрузка. В Таблице 1 указано назначение контактов ввода/ вывода общего назначения (GPIO) MSP430G2231.
Подключение контакта RST к устройству MSP430, куда осуществляется загрузка, для
формирования входной последовательности BSL
Подключение контакта TEST и TCK к устройству MSP430, куда осуществляется загрузка,
для формирования входной последовательности BSL
Контакт приёма UART от устройства MSP430, куда осуществляется загрузка (подключается
к контакту BSL TX (передача) в устройстве MSP430, куда осуществляется загрузка)
Контакт передачи UART в устройство MSP430, куда осуществляется загрузка (подключается
к контакту BSL RX (приём) в устройстве MSP430, куда осуществляется загрузка)
Введение
UART BSL
Кадры данных протокола UART BSL принципиально различны в случае BSL на основе ПЗУ и BSL на основе flash-памяти. Программа BSL на основе ПЗУ доступна в устройствах 1xx, 2xx, и 4xx, а BSL на основе flash-памяти имеется в устройствах 5xx и 6xx. Подробнее о протоколе BSL обоих типов программного обеспечения BSL в [2].
Аппаратная реализация
Универсальный асинхронный приёмопередатчик (UART)
Универсальный асинхронный приёмопередатчик (UART) — это стандарт последовательной связи, который широко используется во встроенных системах. Поскольку данные передаются последовательно и асинхронно (без всякого тактового сигнала), и приёмная, и передающая стороны вынуждены использовать одинаковые настройки скорости передачи данных (обычно она определяется как скорость передачи в бодах), количества битов данных и использования бита чётности. Стандартный кадр UART показан на Рисунке 3.
Рисунок 3. | Кадр UART. |
По умолчанию линия связи UART находится в состоянии отсутствия передачи, имея логический уровень «ВЫСОКИЙ». Обычно сигналом СТАРТОВОГО бита является первый переход из состояния «ВЫСОКОГО» логического уровня в состояние «НИЗКОГО» логического уровня. После передачи СТАРТОВОГО бита передаются биты данных. В большинстве систем данные отправляются в формате с прямым порядком байтов (первым следует младший байт), а битов данных может быть 7 или 8. Перед СТОПОВЫМ битом может, при необходимости, отправляться бит чётности для проверки кадра. Наконец, СТОПОВЫЙ бит обозначает конец кадра UART, представляя собой переход из состояния «НИЗКОГО» логического уровня в состояние «ВЫСОКОГО» логического уровня.
Блок-схема
Реализация программного обеспечения интерфейса BSL на основе Launchpad показана на Рисунке 6.
Рисунок 6. | Блок-схема реализации программного обеспечения интерфейса BSL на основе Launchpad. |
Технология мостового соединения
Как указано в аннотации, цель данной работы заключается в реализации интерфейса BSL, которые служит мостом между интерфейсом UART ПК, на котором работает программный инструмент BSL Scripter, и устройством MSP430, куда осуществляется загрузка, при этом устройство MSP430 имеет менее двух последовательных интерфейсов.
Поэтому в данном случае не используется механизм передачи с промежуточным накоплением, когда MSP430 на плате Launchpad принимает данные байт за байтом, а затем отправляет их на противоположную сторону. Вместо этого используется механизм прерываний GPIO, когда приёмные контакты настраиваются как входные с прерыванием для управления соответствующими контактами передачи, настроенными как выходные, в соответствии с логическим состоянием входного контакта. Чтобы лучше понять этот механизм, смотрите следующий раздел, где показана блок-схема реализации программного обеспечения.
Реализация
В статье рассматривается микроконтроллер MSP430G2231 на плате MSP-EXP430G2 Launchpad и микроконтроллер MSP430F5438A, версии E, имеющий ошибку SYS10 (время между импульсами на контактах TEST и TCK должно быть менее 15 мкс), в качестве устройства MSP430 в комплекте разработчика MSP-TS430PZ5x100, куда осуществляется загрузка. На Рисунке 4 показана испытательная установка, представляющая собой соединение плат Launchpad и MSP-TS430PZ5x100.
Рисунок 4. | Испытательная установка для интерфейса UART BSL на основе Launchpad. |
Комплект разработчика MSP-EXP430G2 Launchpad
Комплект разработчика MSPEXP430G2, известный под названием «Launchpad» — это недорогой комплект разработчика устройств MSP430G2xxx Value Line. Комплект разработчика имеет встроенный эмулятор интерфейса USB, который также можно использовать в качестве интерфейса UART (COM-ПОРТА) со скоростью передачи данных 9600 бод.
Программное обеспечение
Использование интерфейса BSL на основе Launchpad
При использовании интерфейса BSL на основе Launchpad необходимо учитывать несколько аспектов:
- Для правильной работы необходимо снять перемычки J5, соединяющие контакты P1.0 и P1.6 со встроенными светодиодами платы.
- По умолчанию программный инструмент BSL Scripter использует линии DTR и RTS для формирования входной последовательности BSL. В UART-соединении MSPEXP430G2 эти линии не предусмотрены, поэтому необходимо нажать переключатель S2 перед запуском программы BSL Scripter, чтобы сформировать входную последовательность BSL.
- UART-соединение MSP-EXP430G2 работает только со скоростью передачи данных 9600 бод. Поэтому невозможно запустить BSL Scripter со скоростями передачи данных, отличающимися от 9600 бод.
Читайте также: