В HTML      В PDF
микроэлектроника, микросхема, транзистор, диод, микроконтроллер, память, msp430, Atmel, Maxim, LCD, hd44780, t6963, sed1335, avr, mega128
Предприятия Компоненты Документация Применения Статьи Новости

 
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации





Главная страница > Компоненты > Микроконтроллеры > MSP430
Пересюхтюмя


13-я Международная выставка электронных компонентов и комплектующих для электронной промышленности





Выставка Передовые Технологии Автоматизации


Часто задаваемые вопросы.

Версия 1.3


1) Какая фирма выпускает контроллеры MSP430 и где найти основную информацию о них?
2) Что нужно для того, чтобы начать работать с msp430Fxxx?
3) А где описана ситема команд? В даташите ее нет!
4) Где взять кристаллы MSP430F1хх/F4xx?
5) "Самопальный" программатор не видит кристалл. В чем причина?
6) Новый кристалл не находится эмулятором, старый читается и пишется без проблем.
7) Единственный имеющийся кристалл (или единственный запаянный) нормально работал и вдруг перестал находиться эмулятором. Последняя программа в нем при этом работает.
8) Как отличить инженерные образцы от серийных?
9) Куда подключать незадействованные ножки кристаллов?
10) Какая емкость должна быть у конденсаторов "обвески" кварцевого резонатора и нужны ли они?
11) Чем же все-таки определяется направление ножки порта при взведенном бите Px.xSEL - битом Px.xDIR или режимом подключенного к этой ножки внутреннего модуля?
12) Не получается организовать Multiprocessor mode в работе UART. Бит RXWake всегда читается как '0'.
13) Как-то странно работает UART - после окончания передачи пакета сбрасываю бит UTXIFG, чтобы прекрать вызов обработчика прерывания, а он не сбрасывается.
14) Как при написании программы разместить начальные данные в сегменте информационной памяти Flash?
15) Попытка запрограммировать флеш-память данных из тела программы, расположенной в флеш-памяти кода приводит к "повисанию" процессора. Запись не происходит.
16) Чем отличается Information Memory от Code Memory?
17) При подключении к проекту своей процедуры µC_STARTUP линкер начинает ругаться "Error[e6]: Program module CSTARTUP redeclared in file" (Компилятор IAR).
18) После запуска внешнего XT кварца (бит XTS или XT2ON) и конфигурирования процессора на работу от него процессор продолжает работать от внутреннего DCO (digitally controlled oscillator).
19) Как сделать ассемблерную вставку в программе на IAR С?
20) Можно ли использовать выводы VeRef+ и VRef-/VeRef- как дополнительные входы АЦП?
21) Чем можно запрограммировать микропроцессоры серии MSP430?
22) Чем можно пережечь fuse защиты кода от считывания?
23) Если я пережгу fuse, останется ли возможность программирования через bootstrap loader?
24) В описании bootstrap loader сказано, что 256-битный ключ для чтения программы хранится по адресам 0xFFE0-0xFFFF. Но там же должны быть вектора прерываний?
25) Какой супервизор использовать с процессором MSP430 - большинство супервизоров потребляют в разы больше, чем процессор?
26) Где можно получить консультацию по возникающим вопросам?


1)
Q: Какая фирма выпускает контроллеры MSP430 и где найти основную информацию о них?
A: Контроллеры MSP430 выпускает фирма Texas Instruments, соответственно информация доступна на их сайте www.ti.com в разделе Microcontrollers->MSP430 MCUs. Далее все ссылки на сайте TI я буду приводить относительно этого раздела.

2)
Q: Что нужно для того, чтобы начать работать с msp430Fxxx?
A: Возможны несколько вариантов. Первый - приобрести у дистрибьютеров Texas Instruments стартовый набор. Их несколько вариантов, в зависимости от того, с каким из кристаллов вы хотите работать:

  • MSP-FET430x110 для кристаллов серии MSP430F11x1 (стоимость около $60)
  • MSP-FET430P120 (около $110) для кристаллов серий MSP430F12x.
  • MSP-FET430P140 (около $110) для кристаллов серий MSP430F14x/F13x.
  • MSP-FET430P410 (около $110) для кристаллов серий MSP430F41x.
  • MSP-FET430P440 (около $110) для кристаллов серий MSP430F44x.

В комплект поставки этих наборов входит отладочная плата с панелькой для контроллера, 2 контроллера соответствующего типа, программное обеспечение (ПО), комплект документации. ПО состоит из компилятора С/C++, ассемблера, линкера, симулятора, внутрисхемного JTAG-эмулятора (он же программатор). Поставляемая с набором версия ПО имеет ограничение на размер кода в 4К (ассемблер - без ограничений), в прилагаемых библиотеках отсутствуют функции для чисел с плавающей точкой - exp(), fabs(), sin() и т.д. Сложение, вычитание, умножение и деление чисел с плавающей точкой работает.

Программатор-эмулятор подключается к LPT порту. ПО рассчитано на работу под Windows 95/98/ME/NT/2000/XP. Поддержка других ОС TI не планируется.

Питание на ваше устройство надо подавать со 2-й ноги разъема, если устройство питается от ФЕТа, и с 4-й - если у устройства есть свой источник питания.

Далее для краткости будем называть этот преобразователь LPT-JTAG (или его самодельный аналог) "эмулятором".

Примеры программ надо отдельно скачивать с сайта из раздела Design resources->Code examples - там их гораздо больше, чем в комплекте MSP-FET.

Второй вариант - программное обеспечение и документация от набора свободно доступны на сайте Texas Instruments (раздел Design resources->Development tools, далее Software tools). Размер файла около 20Мб. На сайте IAR Systems (www.iar.com) можно взять демо-версию пакета с ограничением 30 дней (26Мб), библиотеки более полные, но симулятор поддерживает только ядро. Можно поставить обе версии (от TI и IAR Systems) и скопировав библиотеки от IAR в соответствующие каталоги пакета от TI получить более-менее полную версию.

Схемы эмуляторов и отладочных плат приводятся в файле документации (MSP-FET430 User's guide.pdf). Самая простая схема эмулятора (MSP-FET430x110) состоит из одной микросхемы 74AHC244, стабилизатора 3.3в, нескольких диодов, конденсаторов и резисторов.

Тем не менее она позволяет работать со всеми флешевыми процессорами серии MSP430. Собрать ее самому не составляет труда. Если отказаться от возможности отлаживаться при различных напряжениях питания или ограничиться поддержкой только больших кристаллов (у которых выводы JTAG не совмещены с портами), то схему можно упростить (минимум - 74AHC244 и резисторы на ее входах).

Сопротивление R6 штатной схемы от кикстарта первых выпусков нужно уменьшить до 100 ом (рекомендация TI) - будет нормально работать с интегрированными портами.

Остается приобрести собственно микроконтроллер и - вперед!

Вариант третий - среда разработки IDE430 (http://www.ide430.com/) - результат эволюции некогда бесплатного компилятора MC430. Среда имеет поддержку эмулятора, однако качество кода, генерируемого компилятором С несколько хуже, чем у компилятора от IAR, но есть возможность генерации ассемблерного кода (это собственно и есть выход компилятора) и цена ($99) существенно ниже цены за полную версию пакета от IAR.

Существует также портированный и поддерживаемый Дмитрием Диким GNU - компилятор.

Вот данное им краткое описание (цитирую с согласия автора): Найти его можно на http://mspgcc.sourceforge.net - там лежат все патчи, а так же есть ссылка на уже собраную версию компилятора для Windows (gcc-3.3.3, binutils-2.14, gdb-6.0, jtag, etc)

В настоящий момент из GNU tools портированы:

  1. Binutils, включающие ассемблер, дизассемблер, линкер, библиотекарь и другие, включен в офицальный дистрибут бинутилсов 2.14 и может быть взят, например, с www.gnu.org
  2. Компилятор с языка С. С99 совместимый. Стабильная версия - gcc-3.2.3, в процессе -- gcc-3.4, она работает и работает хорошо, но пока что остается неколько непонятных вещей (пользователю не заметно).
    С++ тоже работает, но не поддерживает исключений.
  3. Отладчик с эмулятором gdb-5.1.1, gdb-6.0. Позволяет исполнять программу, ставить брейкпоинты, ватчпоинты. Так же есть gdb proxy для внутрисхемной отладки через JTAG (win32, linux, freebsd)
  4. Библиотека стандартных функций включающая sprintf(), uprintf(), setjump(), longjump() и др. Оптимизированная библиотека для работы с плавающей точкий (32 bit IEEE-754) и библиотека математических функций.
  5. Stand-alone симулятор, написаный на языке python
  6. BSL загрузчик для всех кристаллов.
  7. JTAG загрузчик и отладчик (прокси для gdb)
  8. Масса примеров

Документация находится по адресу http://mspgcc.sourceforge.net Так же там есть ссылки на почтовые рассылки по этой теме и ссылки на, например, ОСи реального времени, написаные для mspgcc.

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

Компилятором пользуется, естетственно, автор и несколько очень уважаемых организаций.

Недостатки -- нет красивого ГУИ, необходимо понимать, что такое 'make' и 'Makefile', нет возможности программной эмуляции переферии, код не совместим ни с каким известным коммерческим компилятором.

Четвертый вариант - московская фирма Фитон (www.phyton.ru) совместно с фирмой МикроКОСМ выпускают комплекс аппаратно-программных средств, включающих интегрированную среду разработки, макроассемблер, компилятор С, симулятор и JTAG отладчик. Более подробную информацию можно найти на их сайте.

Ссылки на других производителей компиляторов и отладочных модулей можно найти на сайте TI в разделе Design resources -> Third party network.

3)
Q: А где описана ситема команд? В даташите ее нет!
A: Да, у тех, кто познакомился с документацией Микрочипа вызывает недоумение столь кратенький даташит. В нем описаны только электрические параметры, цоколевка, карта памяти, расположение регистров специального назначения (SFR), векторов прерываний в памяти, и в общем виде реализация некоторых модулей (генератора, таймеров, АЦП, компаратора). Общее же для всего семейства подробное описание всех модулей, ядра, система команд и их коды приведены в документах (раздел сайта Technical documents->User guides->View by products):

  • на семейство MSP430x1xx - SLAU049 "MSP430x1xx family User's Guide"
  • на семейство MSP430x3xx - SLAU012 "MSP430x3xx family User's Guide"
  • на семейство MSP430x4xx - SLAU056 "MSP430x4xx family User's Guide"

Кроме того, на сайте в разделе Technical documents->Application notes имеется множество примеров применения, с описанием схем, программ и используемых при проектировании устройств на MSP430 схемотехнических и программных приемов. На семейство однократных кристаллов MSP430x3xx была выпущена книжка "MSP430 Application Report Book". В этом разделе она представлена как MSP430 Family Mixed-Signal Microcontroller Application Reports (SLAA024). Большинство описанных в ней приемов применимы и к флешовым кристаллам. На последних дисках от TI и дистрибьюторов имееся документ ar_1xx.pdf "MSP430x1xx Family Mixed Signal Microcontroller Application Reports". Она написана как дополнение к вышеупомянутой SLAA024 с упором на новшества, появившиеся в серии 1xx.

4)
Q: Где взять кристаллы MSP430F1хх/F4xx?
A: На данный момент этими процессорами торгуют фирмы "СКАН"(www.texas.ru), "СКАНТИ-Рус" (www.scanti.ru), Компэл (www.compel.ru). У них на складе имеется довольно большой выбор кристаллов и совершенно спокойно можно купить 1-2 штуки.

"Компэл" имеет представительства в Санкт-Петербурге, Минске, Киеве, Днепропетровске, Екатеринбурге, Нижний Новгород, Чебоксарах, Новосибирске, Самаре, Томске, Донецке. Если вы делаете серьезный проект, то через дистрибьютеров его можно зарегистрировать у Texas Instruments и получить существенные скидки.

5)
Q: "Самопальный" программатор не видит кристалл. В чем причина?
A: Будем считать, что замыканий и ошибок в схеме нет :). Наиболее часто встречающаяся причина - длинный кабель между эмулятором и кристаллом. Длина кабеля между компьютером и эмулятором существенной роли не играет (у меня 2 метра), а шнурок между эмулятором и кристаллом длиной 20см уже вызывает сбои (То появляется ошибка "Could not find target (or target not supported)", то "Unable to read target memory", то "Unable to set breakpoint"). 10см шлейф работает нормально.

6)
Q: Новый кристалл не находится эмулятором, старый читается и пишется без проблем.
A: Если все необходимые сигналы (питание, TMS, TDI, TDO, TCK, TEST, RST) присутствуют, а ПО все-же не видит кристалл, возможно, в опциях эмулятора отключено программирование кристалла после запуска эмулятора (Project-> Options-> C-Spy-> Flash Emulation Tool -> Suppress download). Почему-то превый старт нового кристалла происходит только с программированием. Судя по всему эмулятор при первом запуске должен прописать в кристалл какой-то код, по которому в дальнейшем, при последующих запусках, будет определять наличие кристалла. В случае же, если включено программирование при запуске, эта проверка осуществляется после программирования, т.е. когда код уже прописан. Вывод: или на время первого запуска отключать опцию suppress download или запускать эмулятор с уже хотя бы один раз запрограммированным кристаллом, а после того как эмулятор его найдет - менять кристалл на новый и выполнять Init new device из меню C-SPY.

7)
Q: Единственный имеющийся кристалл (или единственный запаянный) нормально работал и вдруг перестал находиться эмулятором. Последняя программа в нем при этом работает.
A: К сожалению, такое хоть и редко, но встречается, и пользователи, с которыми я общаюсь, так и не нашли объяснения этому явлению. Видимо, JTAG-машина кристалла попадает в какое-то дивное состояние, вышибить из которого ее непросто. Помогают "танцы с бубном" - отключение на несколько секунд полностью всех питаний с платы (паразитных в том числе), разрядка емкостей по питанию замыканием пинцетом, подключение эмулятора к плате, находящейся под питанием (знаю, что неправильно, а что делать? - иногда помогает!), запуск C-SPY с выключенной опцией "Suppress download", перегрузка компьютера, перекур :-).

8)
Q: Как отличить инженерные образцы от серийных?
A: Инженерные образцы называются PMS430Fxxxx и имеют маркировку на корпусах P430Fxxxx, в то время как серийные называются MSP430Fxxxx и маркируются M430Fxxxx или MSP430xxxx. Обращаю внимание на то, что у серийных кристаллов MSP430F11x1 по сравнению с PMS430F11x1 _первых_партий_ изменен адрес начала сегмента Flash Data (INFO) 0xEF00 на 0x1000, а адрес сегмента BootRom с 0x0800 на 0x0C00. Адреса этих сегментов в кристаллах MSP430F11x1 совпадают с адресами этих же сегментов в F14x, F13x, F4xx. Эти партии были выпущены в конце 90-х годов, поэтому сейчас их найти практически невозможно.

9)
Q: Куда подключать незадействованные ножки кристаллов?
A: Это описано в разделе Principles for Low-Power Applications в User's Guide на соответствующее семейство. Также для снижения энергопотребления (исключения сквозных токов во входных буферах) рекомендуется в регистре CAPD отключать входную цифровую логику от ножек порта 2 у MSP430x11xx или порта 1 у MSP430x4xx, если на эти выводы подаются аналоговые сигналы, и отключать в регистре P6SEL входную цифровую логику от тех входов, на которые подаются аналоговые сигналы для АЦП.

10)
Q: Какая емкость должна быть у конденсаторов "обвески" кварцевого резонатора и нужны ли они?
A: Эти конденсаторы являются нагрузкой кварца. Поэтому их емкость зависит от конкретного типа кварца. Точно эту емкость может сказать только производитель кварца и обычно она приводится в спецификации на кварц. Внутри процессора встроены 2 конденсатора по 12пФ, которые подключаются последовательно друг другу и параллельно кварцу в режиме LF и представляют собой нагрузку для типичного часового кварца, требующего 6пФ. Таким образом, если ваш часовой кварц рассчитан на нагрузку 6пФ, то внешние конденсаторы не нужны. Для высокочастотного резонатора требуются внешние конденсаторы.

11)
Q: Чем же все-таки определяется направление ножки порта при взведенном бите Px.xSEL - битом Px.xDIR или режимом подключенного к этой ножки внутреннего модуля?
A: Для разных модулей по-разному. Например, к ножке P3.4 кристалла MSP430F149 подключен выход передачи UART0. Логично, что при включеном UART этот вывод должен быть настроен на вывод. Поэтому направление определяется однозначно как "выход" при взведенном бите P3.4SEL. В то же время ножка P1.1 может быть как выходом модуля CCP0 в режиме Compare так и входом в режиме Capture. Но модуль CCP0 имеет возможность в режиме Compare защелкивать состояние этого входа (используя это очень легко построить довольно высокоскоростной программный UART, см. SLAA078A). Таким образом, если вы хотите защелкивать состояние входа, вы настраиваете его на ввод битом P1.1DIR, а если хотите снимать с него сигнал OUT модуля CCP0 - то на вывод тем же битом P1.1DIR. Конкретно узнать, чем определяется направление порта можно по таблицам, расположенным в разделе описания электрических характеристик портов даташита. Если в графе Direction control from module стоит Px.xDIR - то этим битом, если нет - режимом модуля.

Обращу внимание, что для модуля встроенного компаратора подключение входов компаратра к ножкам порта определяется битами P2CA1 и P2CA0 регистра CACTL2 и не зависит от битов регистра P2DIR и P2SEL, которые у MSP430x1xxx служат для подключения другой периферии (Таймера А).

Также замечу, что при взведении бита Px.xSEL в портах P1 и P2 отключается логика управления флагом прерывания Px.xIFG на этой ножке. Однако ничто не мешает при необходимости взводить бит Px.xIFG программно, получая таким образом программные прерывания.

12)
Q: Не получается организовать Multiprocessor mode в работе UART. Бит RXWake всегда читается как '0'.
A: Проблема оказалась в программе - сначала читался байт из буфера приема, а потом анализировался регистр URCTL. При чтении буфера статусные биты регистра URCTL сбрасываются в исходное состояние. Регистр URCTL нужно анализировать перед чтением байта из буфера.

13)
Q: Как-то странно работает UART - после окончания передачи пакета сбрасываю бит UTXIFG, чтобы прекрать вызов обработчика прерывания, а он не сбрасывается.
A: Ошибка методическая, видимо влияние длительной работы с MCS-51 :-). Прекращать вызов обработчика нужно не сбросом бита UTXIFG, а сбросом бита разрешения прерывания UTXIE. А разрешать, соответственно, взведением бита UTXIE. Бит UTXIFG показывает состояние буфера передатчика и управляется аппаратно.

14)
Q: Как при написании программы разместить начальные данные в сегменте информационной памяти Flash?
A: Для компилятора IAR в управляющем файле линкера MSP430xxxxxx.xcl определен сегмент INFO. Поместить в него данные можно при помощи команды компилятору #pragma memory = constseg(INFO) и атрибута const. Например:

    #pragma memory = constseg(INFO)
    const char * HelloString="Hello";
    const float One = 1.0;
    #pragma memory = default;
    

Эти данные попадут в сегмент INFO при программировании кристалла.

Для компилятора GCC это можно сделать двумя способами.

В gcc есть атрибуты, назначение которых описано в документации. То, что там написано, примерно выглядит так: Атрибут section(".infomem") функции или глобальной переменной указывает на то, что функция или переменная должна располагаться в сегменте информационной памяти. Отлинкованная программа, в которой встречается переменная с таким атрибутом будет загружена в память процессора (программатором) и информационная память тожет будет прописана. Атрибут section(".infomrmnobits") означает, что память для переменной/функции будет распределена в инфо области, но при программировании процессора эти переменные/функции не будут пописаны там. Этот метод удобен, если сегмент инфо памяти нужно программировать на лету.

15)
Q: Попытка запрограммировать флеш-память данных из тела программы, расположенной в флеш-памяти кода приводит к "повисанию" процессора. Запись не происходит.
A: Такое действительно происходило в первых инженерных образцах кристаллов PMS430F11x1. Это связано с ошибками в кристалле и устранено в серийных процессорах. Проверьте ваш кристалл по errata на сайте тексаса. Lot Trace Code написан на вашем кристалле под названием (что-то типа 98A5L6T). Запрограммировать флеш данных в кристаллах с этой ошибкой можно, копируя процедуру записи и проверки окончания записи в ОЗУ и выполняя эти команды оттуда, после чего передавать управление обратно на код во флеш. Хотя в настоящее время процессор с такой ошибкой вы навряд ли найдете.

16)
Q: Чем отличается Information Memory от Code Memory?
A: Физически - ничем. Это различные области одной и той же флеш памяти. Единственное отличие - это размер сегмента. Information -128 байт, Code - 512 байт. В кристаллах с 60К флеш памяти есть еще один сегмент размером 256 байт. Таким образом, при необходимости часть сегментов Code Memory можно использовать для хранения редко меняющихся данных, а при нехватке памяти для кода разместить его в Information Memory. Для этого нужно только подправить файл управления линкером.

17)
Q:При подключении к проекту своей процедуры µC_STARTUP линкер начинает ругаться "Error[e6]: Program module CSTARTUP redeclared in file" (Компилятор IAR).
A: В .xcl надо вписать ключ -C. Почему они при компиляции библиотек скомпилили ?C_STARTUP как program а не как module - загадка. Есть предположение, что таким образом они пытались организовать подключение модуля ?C_STARTUP к программам на C/C++ по умолчанию.

18)
Q: После запуска внешнего XT кварца (бит XTS или XT2ON) и конфигурирования процессора на работу от него процессор продолжает работать от внутреннего DCO (digitally controlled oscillator).
A: Это связано с системой защиты от сбоев кварцевого резонатора. Если выполнить переключение до стабилизации колебаний кварца, система автоматически переключит тактирование процессора обратно на DCO. После включения кварца битом XTS или XT2ON необходимо выждать некоторое время (около 50мкс), после чего можно переключаться на тактирование от него. Определить момент стабилизации колебаний можно периодически сбрасывая и проверяя бит OFIF.

Следует отметить еще одну тонкость - в случае, если процессор тактировался от внешнего кварца и произошел сбой кварца, произойдет переключение на DCO, однако биты SELM.1 и SELM.0 останутся взведенными, т.е. в состоянии "тактирование от XT". Для того, чтобы восстановить работу процессора от XT необходимо сначала переключить эти биты в состояние "тактирование от DCO", а затем обратно в "тактирование от XT".

19)
Q: Как сделать ассемблерную вставку в программе на IAR С?
A: Начиная с версии 2.20 компилятора поддерживается intrinsic - функция asm(" команда"); В более ранних версиях компилятора есть функции _OPC(). Можно подключить к проекту функцию, написанную полностью на ассемблере. Как это сделать, как передавать в нее параметры и как из нее передать результат в вызывающую функцию подробно описано в документе "Mixing C and Assembler With the MSP430" (slaa140).

20)
Q: Можно ли использовать выводы VeRef+ и VRef-/VeRef- как дополнительные входы АЦП?
A: Да, можно. Это штатный режим работы, если не нужно внешнее опорное напряжение. Таким образом получается 10-входовое АЦП.

21)
Q: Чем можно запрограммировать микропроцессоры серии MSP430?
A: Вопрос навстречу: какой кристалл имено? Если интересуют однократные или отладочные (EEPROM-версии, с окошком), то ввиду закрытости алгоритма их программирования через JTAG, только фирменными программаторами от Texas Instruments.

Texas Instruments выпускал программатор MSP-430PRG, описание работы с ним и его схема находится в файле SLAU026.PDF "MSP430 family programing adapter manual". Программное обеспечение последней (3.02) версии можно найти на старых дисках у дистрибъютеров. С сайта они уже убраны как устаревшие. Программатор подключается через параллельный порт PC и не работает под Windows NT/2000/XP.

Если есть желание запрограммировать кристаллы с флеш-памятью, то ПО JTAG-программатора для них встроено в С-SPY пакета от китов MSP-FET430, есть соответствующая утилита в пакетах GCC и IDE430, по адресу http://www.geocities.com/hellos_emb/ можно скачать утилитку для программирования при помощи dll, входящих в пакет IAR но без GUI. Весь этот софт рассчитан на "эмулятор" FET, упомянутый в п.2. И кроме того имеется AN "Programming a Flash-based MSP430 Using the JTAG Interface" (slaa149), при помощи которого можно создать свой программатор.

С августа 2000г. TI выпускает программатор MSP-PRGS430 (описание в файле SLAU048). Он поддерживает все выпускаемые в данный момент процессоры серии MSP430. Программатор содержит внутри себя процессор MSP430P337 с фирменной прошивкой, поэтому клонированию не поддается... Программное обеспечение состоит из оболочки и драйвера. Форматы вызовов API-функций драйвера описаны, что позволяет написать свою оболочку. Программатор подключается к последовательному порту. Стоимость его порядка $200.

Таким образом, кроме программирования "эмулятор" FET позволяет внутрисхемно отлаживать программу, но не позволяет пережечь fuse, а программатор MSP-PRGS430 позволяет прожечь fuse, но не позволяет внутрисхемно отлаживать программу.

И, напоследок, в кристаллах серии 430Fxxxx имеется встроенный bootstraploader, описанный в документах "Features of the MSP430 Bootstrap Loader" (slaa089) и "Application of Bootstrap Loader in MSP430 w/Flash Hardware, Software Proposal" (slaa096), который позволяет при помощи несложной схемки (74AHC14, стабилизатор 3В, ОУ) и прилагаемого к slaa096 примера программы для РС (Visual C++, консольное приложение, проверено многими людьми - работает) программировать кристаллы из командной строки.

22)
Q: Чем можно пережечь fuse защиты кода от считывания?
A: Из известных мне средств - только программаторами от TI (MSP-430PRG для однократных, MSP-PRGS430 - для всех). Или создать свой программатор, используя AN "Programming a Flash-based MSP430 Using the JTAG Interface" (slaa149).

23)
Q: Если я пережгу fuse, останется ли возможность программирования через bootstrap loader?
A: Да, останется. Fuse всего-лишь отключает от ядра JTAG. А bootstrap loader - обычная программа внутри кристалла, только расположенная в нестираемой части памяти.

24)
Q: В описании bootstrap loader сказано, что 256-битный ключ для чтения программы хранится по адресам 0xFFE0-0xFFFF. Но там же должны быть вектора прерываний?
A: Совершенно верно. Именно содержимое векторов прерываний и является ключом. Чистый кристалл содержит 0xFF в этих ячейках, т.е. ключ нам известен. Именно с этим ключем (все '1') и проводится запись в чистый кристалл.

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

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

25)
Q: Какой супервизор использовать с процессором MSP430 - большинство супервизоров потребляют в разы больше, чем процессор?
A: В схемах, где важно низкое потребление наиболее подходящим является супервизор серии TPS3836.

26)
Q: Где можно получить консультацию по возникающим вопросам?
A: Есть такие места! Это эхо-конференция ФИДО ru.embedded (доступна, например, через www.talk.ru), конференция "Микроконтроллеры и их применение" на сайте фирмы "Телесистемы" (www.telesys.ru), отдельная конференция по MSP430 есть на сайте www.caxapa.ru, если владеете английским - можно писать в эхо-конференцию comp.arch.embedded или прямо в службу поддержки TI (epic@ti.com), ответ оттуда приходит примерно через неделю (мне приходили довольно невразумительные - не повезло мне с вопросами :-). Можно писать и мне (sborshch@intron.ru)- буду рад помочь.

Выражаю благодарность за помощь в составлении данного FAQ Дмитрию Дикому, Александру Кратько, Владимиру Полетаеву.

С уважением, Сергей Борщ