8-900-374-94-44
[email protected]
Slide Image
Меню

Программирование msp430 – MSP430, учимся программировать и отлаживать железо / Habr

учебный курс. / MSP430 / Сообщество EasyElectronics.ru

Добрый день всем!

Позвольте представить вам учебный курс по микроконтроллерам MSP430.

Хочу сразу предупредить — данный тип МК несколько тяжеловат для рядового пользователя. Его используют в основном профессиональные разработчики, но… Я хочу сделать его доступным для всех. Так, что смотрим и не боимся.
Да, и ещё — традиционно я тяготею к ассемблерным типам языков, так что начнём с них. Потом будет и С.

Как уже говорил глубокоуважаемый _YS_, данный тип контроллеров построен по Фон-Неймановской архитектуре, т.е. имеет одну адресную ось. Деления на память программ и данных нет, просто они располагаются по разным адресам. Чуть позже приведу разбивку.
Мануалы пока читать не будем, просто покажу основное.
Контроллер 16-ти разрядный, в составе ядра есть 16 регистров, четыре из которых специального назначения (R0 или PC — счетчик команд, R1 или SP — указатель стека, R2 или SR — регистр состояния, R3 или CG — генератор констант). Остальные (R4-R15) доступны как регистры общего назначения. Есть одна отличная вещь — любой регистр может быть указателем.

Пока сведений достаточно.

С чего начать? Со среды программирования, ибо первые шаги можно делать не имея аппаратуры.

Внимание! Кто захочет начать с аппаратуры — запомните! Контроллер питается от напряжения 3,3 вольта, 5 вольт для него смертельны! Будьте осторожны.

Итак, среда разработки. Во всём мире профессионалы пользуются программами фирмы IAR Systems — www.iar.com.
Не будем изобретать велосипед, последуем их рекомендациям. С официального сайта можно скачать 30-дневную бесплатную версию. Заморочка в том, что прийдётся заполнить длинную форму личных данных. Кто не боится — вперёд!

После установки и запуска мы видим (у меня 4-я версия, текущая на официальном сайте — 5-я, но отличий немного):

Посмотреть на Яндекс.Фотках

Жмём кнопку «Создать новый проект в текущем рабочем пространстве» («Create new project in current workspace»).
Смотрим на окошко и выбираем «asm/asm».

Посмотреть на Яндекс.Фотках

Нажимаем «Ok» сохраняем файл проекта в нужное нам место. Рекомендую, каждый проект сохранять в отдельный каталог.

Получаем следующее:

Посмотреть на Яндекс.Фотках

Комментирую полученный код.


#include "msp430.h"

Ну тут всё ясно, подключаем заголовочный файл.

        NAME    main                    ; module name

        PUBLIC  main                    ; make the main label vissible
                                        ; outside this module

Это стандартное объявление имени модуля и его видимости из других модулей.
ORG 0FFFEh DC16 init ; set reset vector to 'init' label

Тут мы объявляем вектор перехода по сигналу «Reset». Я делаю это несколько иначе, чуть ниже покажу как.
У MSP430 вектора прерываний располагаются в конце памяти — от адреса FFFFh и вниз. Для серии F1xxx и F1xx их 16 штук. Да, и ещё существенное отличие — в вектор заносится адрес, а не команда перехода! Т.е., в данном случае, адрес метки «init».

        RSEG    CSTACK                  ; pre-declaration of segment
        RSEG    CODE                    ; place program in 'CODE' segment

Тут объявляем сегмент стека и кода.
Вот собственно с этого и начинается программа.

init:   MOV     #SFE(CSTACK), SP        ; set up stack

Вот она метка «init», её адрес компилятор потом подставит в вектор сброса.
Первая команда — инициализация стека. Директива SFE вычисляет конец сегмента. А
#
нужен, чтобы подставлять вычисленное значение, а не рассматривать его как адрес. К примеру:

mov   #1, R1 - поместить 1 в R1,
а
mov   1, R1 - поместить значение из ячейки памяти с адресом 1 в R1

Вот такие хитрости.
Идём далее.
Команда «nop» у нас просто для задержки.
А вот это важная вещь:

        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer

Дело в том, что по умолчанию у MSP430 включен сторожевой таймер. Чтобы не было неожиданностей, выключаем его данной командой.
Да, и обратите внимание: все команды пишутся немного не так как у AVR, x51 или x86 — источник сначала, затем приёмник.

        JMP $                           ; jump to current location '$'
                                        ; (endless loop)

Это прыжок «сам на себя». Просто, чтобы создать замкнутый цикл.

Ну и не забываем «END» в конце программы, также как и у PIC в MPLAB. После этого волшебного слова программа заканчивается.

Что сейчас делает наша программа? Почти ничего. Давайте наполним её смыслом. А в качестве примера сделаем сортировку случайных чисел.
Задача следующая:
1. Имеем данные в ПЗУ (набор из 16 случайных чисел).
2. Переместим данные из ПЗУ в ОЗУ.
3. Отсортируем данные в ОЗУ.

Для начала настроим проект.
Выберем тип контроллера. Открываем меню «Projects->Options»:

Посмотреть на Яндекс.Фотках

Появится вот такое окошко, где мы и выберем тип контроллера.

Посмотреть на Яндекс.Фотках

Далее выберем тип отладчика:

Посмотреть на Яндекс.Фотках
Счастливые владельцы аппаратного эмулятора могут выбрать «FET Debugger», ну а нам пока сойдет и «Simulator».

Для начала настроек достаточно. Жмём «Ok».

Далее, вставляем вместо всего в окошке текста следующий код (пока без самой сортировки):


#include "msp430.h"                     ; подключаем заголовочный файл

        NAME    main                    ; имя модуля
        PUBLIC  main                    ; установить видимость модуля из других
                                        
; Определение констант
ArrLn	EQU	16                      ; длина массива

        ; Вектора прерываний
        RSEG	INTVEC
        ORG     RESET_VECTOR           ; вектор сброса
        DC16    init 

        RSEG    CSTACK                  ; объявление сегмента стека

        RSEG    CODE                    ; объявление сегмента кода

init:   MOV     #SFE(CSTACK), SP        ; инициализация регистра стека

main:                                   ; начало основной части
        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; запрет сторожевого таймера
        
SortMain:
        ; Переписать из ПЗУ в ОЗУ массив данных
        mov	#ArrLn, R4              ; инициализируем счётчик количества данных
	mov	#RamArr, R5             ; установим R5 как указатель на данные в ОЗУ
	mov	#RomArr, R6             ; установим R6 как указатель на данные в ПЗУ
	
MoveRomToRam:
	mov	@R6+, 0(R5)             ; копирование слова
	add	#2, R5                  ; продвинем указатель
	dec	R4                      ; уменьшим счётчик
	jnz	MoveRomToRam            ; если не ноль, то повторим
   
BasicCycle:
	JMP $                           ; jump to current location '$'

	
;	определение данных в ОЗУ
	RSEG	DATA16_N
RamArr:
	DS16	ArrLn

;	определение данных в ПЗУ
	RSEG	DATA16_C
RomArr:
	DC16	101, 11, 25, 657, 567, 217, 5732, 896, 123, 5467, 12, 65, 2345, 23, 98, 2398


        END

Разберём по частям. Но для начала научимся запускать программу на выполнение.
Скомпилируем проект — пункт меню «Project -> Make» или значок на панели инструментов:

Появится окошко «Messages», в котором отражен процесс компиляции. В случае успеха (а данный текст должен нормально скомпилироваться) появится сообщение об этом.

Далее жмем «Project -> Debug» или кнопку:

Должен запуститься собственно отладчик. IAR поддерживает два набора окон — раздельно для редактирования и отладки.
Закроем лишнее. Структура проекта при отладке не нужна, окно «Disassembly» используется редко, да и «Messages» не нужно.
А вот регистры и память хотелось бы видеть. Жмём «View -> Registers» и два раза «View -> Memory». Перетаскиваем окошки в нужные углы и получаем картинку (на мой вкус, можете сделать по своему):


Посмотреть на Яндекс.Фотках
В окошках «Memory» выбираем типы памяти «RAM» и «Flash», так будет удобнее просматривать. Также, в каждом окшке памяти щёлкаем правой кнопкой и выбираем из контекстного меню «2x Units» (для просмотра 16-ти разрядных данных) и «Data Coverage -> Enable» (будет показано обращение к текущим ячейкам — удобно).
К отладке готовы!

С помошью кнопки F10 (не входить в подпрограммы) или F11 (входить в подпрограммы) проходим по шагам и любуемся результатом. Техника нам подвласна!

На сегодня всё, а завтра продолжим разбор программы.

Просьба — прокомментируйте. Понравилось, не понравилось, не слишком ли тяжело для понимания, что хотелось бы ещё в этом уроке, а также что хочется на будущие. Жду откликов.
Спасибо за внимание.

we.easyelectronics.ru

Язык Си для микроконтроллеров MSP430 — Мир науки,техники,медицины и образования © первая научно-техническая коммерческая социальная сеть

Методические указания по созданию проектов

для МК MSP430F5xxx (MSP430F5438A) на языке Си и ассемблере

Содержание :

1-Краткая техническая характеристика MSP430F5438A

2- Архитектура МК , устройство памяти

3- Таблица регистров МК MSP430F5438A

4- Система команд МК MSP430F

5438A

5- Язык Си для MSP430 и отладчика Code Composer V4

6 – Твой первый проект « Hello Word »

7- Программирование синусоиды и ПИД регулятора

  1. Краткая техническая характеристика MSP430F5438A

Для начала определим термины —

Глоссарий :


ACLK - Вспомогательные часы
ADC — аналого-цифровой преобразователь
BORBrownOut Reset, см. системный сброс, прерывания и режимы работы
BSL — загрузчик, см. www.ti.com/msp430 отчет о применении
CPU — Центральный процессор См. RISC-процессор 16-бит
DAC — цифро-аналоговый преобразователь
DCO — цифровой генератор, управляемый, см. FLL + модуль
DST - назначения; см. RISC-процессор 16-бит
FLL — модуль автоподстройки частоты, см. FLL + модуль
GIE — режим разрешения основного прерывания, см. системный сброс Прерываний и

управления
INT(N / 2) целая часть от N / 2
I / O — порты ввода / вывода, см. цифровой ввод / вывод
ISR — обслуживание прерываний Рутинное
LSB — наименьший значащий разряд
LSD — наименьшая значимая цифра
LPM - энергосберегающий режим, см. система сброса прерывания и режимы

работы; также название PM для Режима питания

MAB — адресная шина памяти
MCLK - Основные часы
MDB — шина данных памяти
MSB — наибольший значащий разряд
MSD — Наименьший значащий разряд
NMI — (Non)-маскируемые прерывания, см. системный сброс , прерывания и режимы

работы; также разделение на UNMI и SNMI
PC - программный счетчик; см. RISC-процессор 16-бит
PM – см. режим питания ; система сброса прерываний и режимы работы
POR - сброса при включении питания; см. Сброс системы прерываний и режимы работы

PUC — очистка при включении питания, см. Сброс системы прерываний и режимы работы
RAM — оперативная память
SCG - системный тактовый генератор, см. система сбрасывает прерываний и режимы

работы
SFR – Регистр специального назначения ; см. система сброса, прерываний и режимы работы
SMCLK – подситстема основных часов
SNMI — системы NMI, см. система сброса, прерываний и режимы работы
SP - Указатель стека, см. RISC-процессор 16-бит
SR - регистра статуса, см. RISC-процессор 16-бит
SRC — Источник, см. RISC-процессор 16-бит
TOS — вершину стека, см. RISC 16-разрядных процессоров
UNMI — Пользовательские NMI, см. система сброса, прерываний и режимы работы
WDT — сторожевой таймер; см. сторожевой таймер
Z16 — 16-битное адресное пространство .

Возможное состояние ключевых битов :

RW чтение / запись
R только для чтения
r0 чтение как 0
R1 Чтение как 1
W Запись только
w0 запись как 0
W1 запись как 1
(W) не зарегистрировать немного реализованы; письменном 1 результатов в

импульсе. Регистрация бит всегда читается как 0.
h0 сбрасывается аппаратно
h2 Устанавливается аппаратно
-0, -1 Состояние после PUC
- (0), - (1) Состояние после POR
[0] [1] Состояние после BOR
{0}, {1} Состояние после Brownout

  1. Программирование на языке Си для MSP430 и отладка программы с помощью Code Composer V4

Задача программы любого МК:

— читать числа из регистров и памяти МК,

— делать что-то с числами, данными и

— записывать числа в регистры и память.

Только так программа может общаться с МК !!!.

Минимальная программа на Си может быть такой :

Эта программа не делает ни чего полезного — но это уже программа и она показывает что в программе на языке Си - должна быть главная функция main - обязательно !

Реальные программы на Си конечно больше.

Как это делать на языке Си ?

Регистры МК ( регистры — это ячейки-байты в памяти МК MSP430 ) в программе на Си имеют названия как и в Дата шите ( инструкции пользователя на микроконтроллер на сайте производителя ) и так как числа в большинстве из них можно менять — для программы регистры являются по сути переменными.

Переменная - это набор ячеек в памяти в которых можно хранить число или числа и менять их. Переменная имеет адрес и имя.

Константа - это как переменная но менять содержимое нельзя.

Начиная этот урок мы изначально предполагаем , что читатель знаком с система исчисления – двоичной , восьмеричной , десятеричной и шестнадцатеричной .

Подробней о переменных и константах написано ниже.

Мы покажем вам, что Си это довольно ПРОСТО

Начнём знакомство с использованием языка Си применительно к программированию микроконтроллеров MSP 430 , с выяснения общих вопросов, которым в существующих руководствах уделяется на удивление мало внимания.

§

> Общие вопросы. Переменные объявляемые пользователем.

Итак, язык Си — типичный представитель абстрактных языков программирования, а это значит, что его совершенно не интересует, какого рода информацию мы будем обрабатывать, будь то содержимое компьютерного файла или внутренние управляющие регистры микроконтроллера.

Основной объект программирования для классического Сипеременная. Это может быть одиночная или группа особым образом связанных переменных, например, массив или структура. По сути переменная представляет из себя некое хранилище для числа, имеющее своё уникальное имя и допустимый диапазон значений, выходить за пределы которого крайне нежелательно. И первое, что мы должны сделать, перед тем как начать использовать имя переменной в тексте программы это познакомить программу с её свойствами. В языке Си этот процесс называется объявлением переменной.

Зачем нужно объявлять переменные?

Хоть язык Си и абстрактный, используемый разработчиком микроконтроллер, как правило, вполне конкретный и имеет своё адресное пространство памяти с заданными свойствам, где и будет храниться объявляемая переменная. Объявление, помимо присвоения переменной имени, заставляет компилятор разместить её по конкретному адресу в памяти микроконтроллера (по какому именно нас в большинстве случаев совершенно не интересует).

Как нужно объявлять переменные?

Правило для объявления можно формулировать так: до того как мы впервые употребим имя переменной в тексте нашей программы, необходимо разместить её объявление в следующем формате:

type name; // Переменная с именем «name» и типом «type».

здесь: type — так называемый идентификатор типа переменной из определённого набора стандартных типов;

name — произвольное имя переменной, лишь бы оно не начиналось с цифры, состояло только из латинских символов, и не совпадало со служебными словами языка Си (список которых не так велик, чтобы столкнуться с такой ситуацией нужно на самом деле очень постараться).

Что такое идентификатор типа и зачем его упоминать?

Для хранения переменной микроконтроллер использует ячейки памяти, размер которых определяется его разрядностью. Так например, микроконтроллеры семейства MSP430xxxxx16 -разрядные, то он может работать как с байтами , так и со словами , имеющими младший байт и старший байт . А значит для хранения данных используют ячейки памяти размером в два байта, которые способны сохранять 65535 различных числовых значений. Если ожидаемые значения переменной могут превысить это количество, то для её хранения понадобится две или более ячеек памяти. Поскольку Си, строго говоря, не представляет какие значения мы планируем присваивать переменной, то просит нас указать её тип, который как раз и определяет допустимый диапазон значений. Это необходимо чтобы не зарезервировать за ней избыточный или недопустимо малый объём памяти, а так же предупреждать нас при попытке присвоить слишком большое значение переменной, не способной его сохранить. Для 16 -разрядных микроконтроллеров наиболее часто употребимые целочисленные типы данных следующие:

способные хранить только положительные значения (беззнаковые):

unsigned char - занимает один байт памяти, значения 0…255

unsigned int — два байта, значения 0…65535

unsigned long — четыре байта, от 0 до (2^32)-1

способные хранить значения со знаком (знаковые):

signed char — занимает один байт памяти, от -128…127

signed int — два байта, значения -32768…32767

signed long — требует четыре байта, значения от -(2^31) до (2^31)

Ключевое слово «unsigned» (беззнаковое), вообще говоря, можно не употреблять, поскольку в Си по умолчанию тип, для которого не указан этот признак, считается беззнаковым.

Для работы с дробными числами в Си предусмотрены типы с плавающей точкой:

float – 32 бита, значения от ±1.18E-38 до ±3.39E+38

double – 32 (±1.18E-38…±3.39E+38) или 64 бита (±2.23E-308…±1.79E+308) в зависимости

от настроек компилятора.

Таблица 1. согласно руководства http://focus.ti.com/lit/ug/slau132e/slau132e.pdf стр.78

MSP430 C/C++ Типы данных

Диапазон

Тип

размер

Представление

Минимальный

Максимальный

char, signed char

8 bits

ASCII

-128

-127

industriya.com

Избавляемся от ошибок / MSP430 / Сообщество EasyElectronics.ru

Отладчик MSP430, один из самых полезных инструментов, при разработке ваших проектов. Давайте рассмотрим, как использовать его основные функции. Загрузите вашу программу-мигалку, и запустите отладчик, но в этот раз не жмите [Run] пуск, оставьте программу в застывшем состоянии. Ваш экран должен выглядеть примерно как на картинке сверху. Обратите внимание на несколько моментов. По умолчанию, открыто шесть окон. Самое правое “Cheat Sheets”, дает подсказки и помощь, если они вам нужны. Можете просто его закрыть, если же оно вас по-настоящему раздражает, просто выберете в нем [Disable All Cheatsheets].

Пять оставшихся окон “Debug” отладка, “Variables” переменные (на скриншоте обозначено как “Local” локальные), текст программы, “Dissasembly” дизассемблер и “Consol” консоль. На консоль выводятся ошибки и замечания компиляции и загрузки, а также, иногда, куски самого кода. Окно текста программы, с ним все ясно, просто обратите внимание на подсвеченную строчку: void main(void) { и стрелку перед ней. Она указывает на место, где сейчас находится отладчик. Когда вы впервые загружаете код в флеш-память чипа, он сразу после включения замирает на начале программы. Окно переменных, показывает текущие значения переменных программы, и, как мы увидим далее, регистры MSP430. Окно отладчика так же показывает всю иерархию файлов проекта, но т.к. у нас только один файл с исходником, нам это не очень нужно.

Обратите внимание на ряд иконок окна отладчика. Вы можете увидеть иконку [Run] пуск. Другие, важные иконки рядом с [Run], это [Halt] стоп (похожа на кнопку паузы, она недоступна, пока отладчик стоит, и станет доступна после нажатия [Run]). Далее [Terminate All] остановить все. Эти три кнопки, управляют отладчиком, так же как кнопки [Пуск], [Пауза] и [Стоп] управляют музыкальным плеером. Далее идет ряд из стрелок, где первая [Step Into] шаг внутрь. Мы ее будем использовать сегодня. За стрелками иконка похожая на чип с двумя зацикленными стрелками. Она сбрасывает процессор в MSP430 и возвращает отладчик в самое начало.

Пример

До начала отладки нашего кода, давайте уменьшим число циклов мигалки до 6. Потом поймете, зачем. Просто найдите в коде число 60000, и поменяйте его на 6. Сверху окна CСS вы можете найти такие же иконки, как и в среде компилятора. Следом за иконкой [Build Active Project] компилировать текущий проект, иконка [Rebuild Active Project] перекомпилировать текущий проект. После того, как вы внесли изменения в код, нажмите иконку перекомпиляции и перезагрузите обновленный код в MSP430. (Если вы собираетесь внести значительные изменения в текст программы, лучше остановить отладчик и выйти в среду компилятора). Вернитесь вверх, и скажите CCS перезагрузить код в ваш микроконтроллер, и отладчик запустится с начала.

Теперь мы используем кнопку отладчика [Step Into] шаг внутрь, что бы пройтись по всему коду, шаг за шагом. Одно нажатие этой кнопки, и мы видим, что стрелка перепрыгнула через строку, и встала напротив WDTCTL. Вы могли заметить, что переменная счетчика цикла, уже появилась в окне локальных переменных (Local Variables). CCS загружает информацию о переменных, автоматически, до начала отладки. Ее значение в данный момент может быть абсолютно случайным, и бесполезно для нас. Мы скоро вернемся к этому окну.

До того, как мы сделаем «шаг внутрь» строки WDTCTL, откроем еще одно полезное окно. Выберите в меню View → Registers, и вы увидите еще одно окно переменных со всеми регистрами вашего микроконтроллера. (Невероятно полезная для обучения штука! Мы будем широко использовать ее, когда будем изучать периферию MSP430, запомните как открыть это окошко.) Внизу списка регистров, есть Watchdog_Timer сторожевой таймер. Откройте его секцию и найдите регистр WDTCTL. Отладчик показывает его текущее значение – 0x6900. Откройте секцию регистра WDTCTL, чтобы увидеть отдельные биты. Все они установлены в 0. Это обычная установка для сторожевого таймера, она приводит к периодическому перезапуску микроконтроллера. Теперь сделаем «шаг внутрь» вашего кода и посмотрим, что произойдет.

Ступив на следующую линию, вы увидите, что WDTHOLD, принял значение 1 (и покраснел, что означает, что на этом такте произошло изменение переменной) и значение WDTCTL теперь 0x6980. Вы можете вспомнить, что изменение сторожевого таймера требует пароля 0x5a. Когда же вы читаете байт пароля WDTCTL, он возвращает 0x69.

(Хотите насильно перезапустить ваш код? Попытайтесь написать WDTCTL = WDTCTL. Чтение WDTCTL вернет значение, которое не является верным паролем, и вы попытаетесь записать некорректный ключ в регистр. В такой ситуации MSP430 делает рестарт.)

Дальше можете найти регистры порта P1 и шагнуть через две строчки кода. Отладчик должен быть сейчас прямо на строке, где переключается светодиод, внутри бесконечного цикла. Прежде, чем идти дальше, выберете окно с локальными переменными. Там, по-прежнему должно быть случайное значение. Далее шагните на строчку переключения светодиода, он должен загореться на плате, а мы оказываемся внутри цикла задержки. Снова сделайте шаг отладки, отладчик останется на той же строке кода, но мы можем заметить, что переменная, в окне локальных переменных, поменяла свое значение. Счетчик увеличивает свое значение на 1, каждый раз, когда мы жмем [Step Into]. Когда он достигает значения count==6, отладчик переходит на следующую строчку программы. Еще шаг, и мы возвращаемся к переключению светодиода. (Рады, что поменяли 60000 на 6?) Вы можете продолжить шагать по коду, пройти весь цикл задержки, пока диод погашен, вернуться снова, и повторить сколько угодно раз. В любой момент, нажав [Run] пуск, вы можете предоставить MSP430 самому себе. Если захотите продемонстрировать кому-либо, что ваш LaunchPad работает, не забудьте увеличить длину цикла задержки. MSP430 работает достаточно быстро, что бы вы не заметили частоту мигания с задержкой в 6 циклов. =)

Отладчик очень полезный инструмент, хотя знайте, что он не всегда способен сделать все то, что нам может понадобиться. MSP430 разработан для взаимодействия с внешним миром. Пока отладчик держит на паузе внутренние часы MSP430, часы окружающего мира продолжают идти. Позже мы изучим, как отлаживать код, зависящий от внешних тактовых сигналов. Но я надеюсь, вы теперь понимаете, насколько отладчик полезен для ваших проектов.
Этот урок, завершает начальные уроки для MSP430. Теперь вы знаете достаточно, что бы писать программы, загружать код в MSP430 и делать проекты начального уровня. Удачи в ваших проектах!

Упражнение: Попробуйте тот код, который вы писали для упражнения Урока 04. Он работает именно так, как вы задумали? Используйте отладчик, что бы пройтись пошагово по всему коду (не забудьте уменьшить циклы задержки) убедитесь, что все работает как должно.

Оригинал урока на английском: Tutorial 06: Getting the Bugs Out

we.easyelectronics.ru

Способы прожига MSP430. Lauchpad в качестве программатора. / MSP430 / Сообщество EasyElectronics.ru

В данной статье хочу поведать не такую уж и тайну об использовании ланчпада для заливки или сливки прошивки с MCU в hex-файл.

Пожалуй стоит начать с того, что меня напрягает в подавляющем большинстве Launchpad-based проектов — откровенно глупый способ заливки прошивки в девайс. Практически везде пользователю предлагается: запустить IAR или CCS, создать проект, вставить код копипастом, скомпилировать и начать сеанс отладки. Получается муторно. Именно это и является зачастую камнем преткновения для того, чтобы мир увидел очередной проект. Ведь далеко не каждый разработчик желает делиться исходниками точно так же, как и далеко не каждому конечному пользователю интересно их смотреть.

Для начала стоит рассмотреть способы залива прошивки в кристалл:

  • Используя загрузчик, он же BSL, он же BootStrap Loader.
    Я преследовал цель использования ланчпада в качестве программатора для девственных кристаллов, поэтому выбрал другой вариант. Этот же способ может быть интересен, если разработчику необходимо предусмотреть возможность выпуска обновлений прошивки и так далее. При соблюдении определенных конструктивных особенностей можно грузить прошивку напрямую с USB, без всяких преобразователей интерфейсов вроде TUSB или FTDI. Подробнее об этом можно прочитать в SLAU319. Есть вполне приличный мануал(SLAA450) по написанию своего BSL
  • JTAG обыкновенный.
  • У нас на эту тему есть статья. Есть еще вот такая штука.Тоже не стал разбираться, ведь LPT у меня нету, использовать преобразователь я не хочу, как и покупать программатор. У TI есть отличный мануал(SLAU320), где описаны все шаманские танцы вокруг JTAG’a. Желающие смогут построить свой собственный программатор. Сразу оговорюсь, у MSP430 есть один фьюз, зато настоящий. И при коммерческом использовании его желательно спалить перед отправкой устройства в свет, если конечно изготавливаемое устройство не просто до мелочей. Кстати вышеописанная «вот такая штука» умеет пережигать этот фьюз, Launchpad не умеет
.
  • Spy-Bi-Wire, он же SBW. Его и будем использовать.
  • Бывает в свою очередь двухпроводной и четырехпроводной. Одно другое дополняет, тем не менее TI проводит между ними четкую грань. Для заливки прошивки в кристалл можно использовать открытый и мультиплатформенный mspdebug, однако мне больше по душе просто открытый MSP430 Flasher. Скачать можно по ссылке, заполнив заявку на скачивание, или если вы как добропорядочный гражданин уже все заполнили=) можно скачать установщик отсюда.Данная программа умеет:
    • Заливать прошивку в формате TXT или HEX в девайс
    • Выполнять проверку памяти
    • Читать память кристалла в файл TXT или HEX
    • Устанавливать аппаратные брейкпойнты
    • Работать с паролем JTAG
    • Выбирать один из нескольких режимов работы девайса
    • Обновлять прошивку MSP-FET430UIF
    • Несколько вариантов сброса
    • Пережигать перемычку JTAG. Не работает на Launchpad’e.
    При использовании не забудьте указать ключ » -m SBW2 » . Обо всем остальном можно прочитать на вики TI или указав ключ » -h «. Имя контроллера задается например так » -n MSP430G2553 «. На этом пока все.

P.S. По поводу прожигания фьюза, сейчас разбираюсь. Вот тут(SLAU265) даются ссылки на ресурсы по программированию памяти. Пережигание доступно для MSP430F1xx, 2xx, и 4xx линейки.SLAU319 (раздел 2.8) говорит о возможности прошивки контроллера с пережженным фьюзом через BSL, который можно защитить паролем. А раздел 2.7 уверяет нас, что при его неправильном вводе происходит стирание flash. Там же есть схема и софт для программатора Replicator (REP430). Подключение осуществляется по интерфейсу jtag, типа j-link. Буду копать дальше

we.easyelectronics.ru

MSP430 — учебный курс. Часть 4

Сегодня заканчиваем обзор ядра, чтобы приступить к остальным полезняшкам.

План.
1. Генератор констант.
2. Система тактирования.

До понедельника, надеюсь, потестирую свой новый контроллер и перейдём к свежим сериям MSP430. Уних есть некоторые преимущества, но в целом архитектура одинакова с сотой серией.

Для начала несколько замечаний по предыдущему материалу.

Замечание 1. По режимам адресации.
Т.к. регистры ядра не имеют физического адреса, выражаемого числом, то к ним неприменимы следующие режимы адресации:

  • символьный;
  • абсолютный;
  • непосредственный.
Замечание2. По байтному и словному доступу.
В словном режиме недопустимо обращение по нечётным адресам памяти!
При обмене «регистр -> память»:
  • при словном режиме младшая часть регистра помещается по меньшему (чётному) адресу, старшая по следующему (+1).
  • при байтном режиме по адресу обращения помещается младшая часть, старшая игнорируется.

При обмене «память -> регистр»:
  • при словном режиме в младшую часть регистра помещается значение из меньшего (чётного) адреса, в старшую из следующего (+1).
  • при байтном режиме в младшую часть регистра помещается значение из ячейки по адресу обращения, в старшую заносится 0.
Замечание 3. Регистр PC (aka R0).
Инкремент счетчика команд (только на число, кратное 2!) происходит в момент предшествующий дешифрации команды, после выборки. Это значит, что на момент исполнения команды, счётчик команд указывает на следующую команду. Т.е. код:

mov     PC, R4

даст нам в R4 указатель не на эту команду, а на следующую (в данном случае +2).

А теперь приступим к сегодняшнему уроку.

1. Генератор констант.

Самый непонятный и пугающий зверь — фирменная фишка TI (по крайней мере, я нигде подобного не встречал).
Когда столкнулся с этим впервые то ничего не понял. Понял только одно — что-то хитрое с регистром R3. Вроде он есть, но пользоваться им нельзя. В документации — дремучий лес. Настойчивые расспросы старших товарищей привели к мысли, что есть средство генерирующее какие-то числа аппаратно. «Зачем?» — подумал я, — «Прописал константу в коде команды и всё ок!»
«Зачем?» — сказали товарищи, — «Прописал константу в коде команды и всё ок, будет тебе оптимизация, не парься!»
Но я не понимал в чём соль. Пытливый ум продолжил ковырять документацию и чудесное откровение снизошло сверху (из глубин подсознания).
В общем, ларчик просто открывался. Есть регистр R3 (также частично задействован и R2), который используется особым образом.
Суть в том, что в повседневной деятельности программист часто использует константы 0, +-1, 2, 4, 8. Обычно их помещают в код команды, что приводит к разрастанию объема команды и увеличению времени выполнения, т.к. оно требуется на выборку из памяти дополнительного аргумента. Все помнят, что в x86 команду «mov AX, 0» старались замещать аналогичной по результату «xor AX, AX«. Так же и здесь, но TI пошел ещё дальше.
Предположим, нам нужно поместить 1 в регистр. Что делать? «mov #1, R«? Без генератора констант команда в коде и её исполнение выглядело бы так:

  • выбрать команду из памяти и дешифровать;
  • т.к. команда с аргументом, то выбрать аргумент и поместить его в регистр.
Как видим — 2 такта и 2 слова в памяти программ для классических RISC.
Но товарищи техасцы, как известно, люди суровые. Они предложили отдать на откуп один регистр (а вы часто используете более 8 штук?) для оптимизации и сказали: «Пусть при обращении к этому регистру будет автоматически появляться какое-то число». Таким образом цепочка сократилась до:
  • выбрать команду из памяти, дешифровать и поместить константу в регистр.
Итог — 1 такт и 1 слово.

Т.к. мы можем использовать 4 способа адресации к регистру, то получаем 4 разных числа. Вы спросите, где ещё две константы? Вспомним о регистре R2 aka SR. Как мы можем его использовать? Считать флаги, да установить флаги. Т.е., только в регистровом режиме. В самом деле, не имеют смысла адреса по значению флагов. Таким образом у нас есть ещё три режима, свободных для данного регистра. Но, по какой-то прихоти, ковбои запретили индекный режим для R2, поэтому остались только косвенные. Вот вам и ещё 2 числа.
Итого имеем: для получения константы без использования аргумента дополнительно к коду команды надо обратиться к R2 или R3 с использованием определённых режимов адресации. А т.к. компилятор штука умная, то нам нет нужды помнить о них — мы просто подставляем нужную константу в команду.
Проиллюстрируем.


#include "msp430.h"                     ; #define controlled include file

        NAME    main                    ; module name

        PUBLIC  main                    ; make the main label vissible
                                        ; outside this module
        ORG     0FFFEh
        DC16    init                    ; set reset vector to 'init' label

        RSEG    CSTACK                  ; pre-declaration of segment
        RSEG    CODE                    ; place program in 'CODE' segment

init:   MOV     #SFE(CSTACK), SP        ; set up stack

main:   NOP                             ; main program
        MOV.W   #WDTPW+WDTHOLD,&WDTCTL  ; Stop watchdog timer
	
	mov	R2, R4			; R2 -> R4
	;mov	0(R2), R4		; запрещено
	
	mov	R3, R4			; 0 -> R4
	mov	#0, R4			; то же
	
	mov	0(R3), R4		; 1 -> R4
	mov	#1, R4			; то же
	
	mov	@R3, R4			; 2 -> R4
	mov	#2, R4			; то же
	
	mov	@R3+, R4		; -1 -> R4
	mov	#-1, R4			; то же
	

	mov	@R2, R4			; 4 -> R4
	mov	#4, R4			; то же
	
	mov	@R2+, R4		; 8 -> R4
	mov	#8, R4			; то же
	
	mov	#3, R4			; 3 -> R4

	mov	#16, R4			; 16 -> R4
	
        JMP $                           ; jump to current location '$'
                                        ; (endless loop)
        END

Здесь я привёл попарно примеры с явным использованием адресации и с указанием константы. В конце, для контраста, поместил использование констант 3 и 16, которые не генерируются аппаратно, а помещаются аргументом к команде.
При отладке откройте окна «Register» и «Disassembly» в IAR (из меню «View»). В окне дешифрованного кода вы увидите, что мнемоники для явного указания и просто константы дают одинаковый код. Там же увидите разницу в размере кода, на примере последних команд. А в окне регистров (при этом должна быть выбрана секция «CPU Registers» в списке окна) внизу есть значение «CCSTEP», в котором указано количество тактов на последнюю выполненную команду.
Как говориться: почувствуйте разницу.

2. Система тактирования.

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

  • DCO (Digital Controlled Oscillator) — внутренний, построен на RC-цепочке и имеет частоту в пределах 120 кГц… 10 МГц (750 кГц по умолчанию, максимум ограничен контроллером и не может быть выше рабочей частоты, даже если источник это позволяет), может меняться программно или с помощью внешнего резистора, но девиация сильно зависит от температуры.
  • LFXT1 (Low Frequency eXternal) — внешний, работает в двух режимах: высокочастотном (450 кГц… 8 МГц) и низкочастотном (оптимизирован под часовой кварц 32768 Гц, при этом не нужны внешние конденсаторы).
  • XT2 (eXternal) — внешний, высокочастотный — 450 кГц… 8 МГц.

Выбор источника тактирования осуществляется программно. При этом, по умолчанию запускается на встроенном. Если мы пытаемся подключить внешний источник и нам это не удалось, контроллер вернётся к работе на встроенный и не зависнет.

Общая схема системы тактирования выглядит так:

Кварцы снаружи (опционально, как и доп резистор), остальное внутри контроллера. XT2 (обведено пунктиром) присутствует только в старших моделях (на 64 и более ног).
Не пугайтесь массы обозначений — разжуём и всё станет ясно как летним днём. Чтобы не путаться, источниками назовём DCO, LFXT1 (или просто, XT1) и XT2. А нижеперечисленное будет сигналами.

Каждый источник формирует свой конечный сигнал:

Эти сигналы формируются просто, за исключением первого. У него масса настроек. В дальнейшем, эти сигналы используются для формирования системы тактирования внутри микроконтроллера. Там есть три внутренних тактовых сигнала, от которых тактируются все устройства контроллера (ядро и память, периферия):
  • MCLK (Master Clock) — основной, используется для тактирования ядра и некоторой периферии (ЭСППЗУ, АЦП, контроллер ПДП).
  • SMCLK (Sub-System Master Clock) — дополнительный, может использоваться для тактирования периферии.
  • ACLK (Auxiliary Clock) — вспомогательный, может использоваться для тактирования периферии (обычно низкоскоростной).
Как видно из схемы, для этих сигналов есть выбор — от какого источника работать.
  • ACLK обделён — работает исключительно от LFXT1.
  • MCLK — можно завести от любого источника.
  • SMCLK — работает от DCO или XT2.

Всё это богатство предназначено для оптимизации по энергопотреблению. Кстати, с этим у MSP430 вообще всё интересно. Можно, к примеру, включить конкретный модуль периферии, отключив всё остальное, вплоть до ядра. Контроллер будет мирно спать почти не потребляя, пока не наступит событие от периферии или немаскируемое прерывание. Или вообще послать всё в глубокий сон до сброса. Можно сделать наоборот, но ядро является самым потребляющим устройством. Источники тактирующих сигналов можно менять программно «на ходу».

Стандартный джентльменский набор:

  • DCO — по умолчанию 750 кГц;
  • LFXT1 — часовой кварц 32768 Гц;
  • XT2 — HS-кристалл 8 МГц с конденсаторами 6..12 пФ.
Данный набор позволяет построить систему с гибкими возможностями. Я так поступил со своим FET140 — у него на плате были посадочные места под внешние кварцы и конденсаторы (плата MSP-TS430PM64 rev. 0.1).

Сильно размусоливать не будем, подробности можно найти в документах «Руководство пользователя» («User’s guide») на конкретные серии, найти можно на сайте TI. Вот ссылки (ссылки прямые на PDF):
http://www.ti.com/litv/pdf/slau049f — MSP430x1xx
http://www.ti.com/litv/pdf/slau144f — MSP430x2xx
Есть чудесные русские переводы этих документов для сотой и четырёхсотой серий, а также примеров применений. Раньше лежали на сайте Компела, но сейчас их там нет. Есть онлайновые варианты на сайте http://gaw.ru. Сразу на главной есть ссылки. Я же обозначу основные моменты.

Как уже было сказано, ядро тактируется сигналом MCLK, который может быть выбран от любого из источников. Выбор осуществляется битами SELMx. После коммутатора сигнал проходит через программируемый делитель, коэффициент деления задаётся битами DIVMx. Бит CPUOFF позволяет отключить тактирующий сигнал от ядра (вывести его из этого режима может сигнал сброса или прерывание). Обратите внимание — название бита говорит о его функции, т.е. «1» отключает сигнал тактирования!

Тактирование периферии осуществляется каким-либо из основных тактирующих сигналов. Не для всей периферии доступен MCLK. Обычно используются SMCLK (как правило, для высокоскоростной, при этом сигнал берется от источника XT2, а туда обычно вешают мегагерцовые кварцы), ACLK (для низкоскоростной, т.к. обычно на LFXT1 висит часовой кварц) и некоторые внешние источники для таймеров (эти источники не входят в главную систему тактирования; обычно это счетные импульсы для модуля захвата/сравнения).

Сигнал ACLK также имеет свой делитель, коэффициент деления задают биты DIVAx. Сигнал неотключаемый, но вы можете его просто не использовать.

Сигнал SMCLK может подаваться от источников DCO или XT2, выбор осуществляется битом SELS. После коммутатора стоит делитель, коэффициент деления выбирается битами DIVSx. И, наконец, битом SCG1 можно выключить этот сигнал (выключение — «1»!).

Выбор сигнала тактирования осуществляется индивидуально для каждого модуля периферии (каждый модуль имеет биты выбора).

Рассмотрим кратко источники тактирования.

XT2.
Самый простой в плане управления. Есть бит XT2OFF, который отключает источник. Всё.

LFXT1.
Ненамного сложнее. Имеется бит OSCOFF, отключающий весь источник. Бит XTS переключает режимы между высокой («1») и низкой 32768 Гц («0») частотой. Биты LFOff и XT1Off отключают индивидуально усилители для каждого из режимов.

DCO.
«Старый дедушка Колль
был весёлый король…»
Да, здесь много весёлых и занятных вещей. Но все они становятся просты, если немного вникнуть.
Источник DCO имеет множество тонких настроек. Основан на RC-генераторе.
Бит DCOR выбирает внутренний («0») или внешний («1») резистор для генератора. От этого выбора будет зависеть основная частота. Биты RSELx выбирают диапазон частот, а DCOx выбирают одну из 8 частот, распределённых равномерно в диапазоне. Биты MODx управляют работой хитрого модулятора, позволяющего осуществить дополнительное управление диапазонами частот (подробности в документации, я этим не пользовался). Бит SCG0 отключает («1») источник вообще.

Вот и все тонкости тактирования. Есть ещё несколько (скорость запуска источников, сбои в их работе), но мы их рассмотрим по мере использования в следующих статьях и при накоплении вопросов.

Фух, читайте и да наступит вам просветление!

we.easyelectronics.ru

Микроконтроллеры MSP430 для начинающих (статья 1) — Мои статьи — Каталог статей

В отличие от PIC и AVR, микроконтроллеры MSP430 имеют 16-битную архитектуру. Кроме того, диапазон питающего напряжения их варьируется от 1,8 до 3,6 В, что вместе с пониженным энергопотреблением позволяет создавать на их базе устройства с батарейным питанием. Контроллеры MSP430 изначально ориентированы на асинхронную работу процессора и периферийных модулей. Для нас, как разработчиков, это значит, что для тактирования процессора, таймеров, АЦП, интерфейсных модулей могут использоваться разные источники тактового сигнала, которых в одном микроконтроллере имеется до 4 штук. Таким образом можно добиться оптимального соотношения производительность/ энергопотребление. Что касается периферийных устройств, то тут однозначной характеристики дать нельзя, поскольку для разных подсемейств набор периферийных модулей может весьма существенно отличаться. В целом же, имеющиеся для продажи в наших магазинах контроллеры имеют сходный набор периферии с продуктами фирм Microchip и Atmel.

Касательно имеющейся в наличии литературы по контроллерам MSP430 можно с сожалением отметить, что тут они однозначно и явно поигрывают своим конкурентам. Автору удалось найти не более десятка русскоязычных книг, посвященных программированию данных контроллеров. Однако на сайте производителя имеется довольно обширный набор примеров исходных кодов с подробным описанием (естественно, на английском языке) [3].

Сложность программирования данных микроконтроллеров по большому счету такая же, как и для PIC или AVR. Конечно, имеются некоторые нюансы, связанные с переходом на 16-битную архитектуру, а также с другим способом организации памяти, но при программировании на Си эти отличия нивелируются.

С чего же начать знакомство с новыми контроллерами? Вам потребуются: собственно контроллеры, средство для прошивки контроллеров и программная среда для написания кода и создания исполняемого кода.

Тут фирма Texas Instruments сделала всем большой подарок, выпустив отладочную плату MSP-EXP430G2 LaunchPad [4], внешний вид которой представлен на рис. 1.

Рисунок 1 – Внешний вид отладочной платы MSP-EXP430G2 LaunchPad

Плата эта мгновенно завоевала огромную популярность среди зарубежных радиолюбителей, и постепенно набирает обороты и на постсоветском пространстве. Чем же она так привлекательна? На страницах журнала «Радио» уже публиковалась информация о ней в качестве альтернативы плате Arduino [5].

Что же получает покупатель, приобретя данный комплект?

Встроенный flash-эмулятор для программирования и отладки. Таким образом, производитель сразу избавляет разработчиков от необходимости самостоятельно собирать программатор для прошивки памяти контроллера. Кроме того, пользователь получаем сразу и отладчик, который позволяет не только прошивать контроллер, а и осуществлять отладку со всеми необходимыми функциями: точки останова, пошаговое выполнение программы, просмотр всех переменных и регистров контроллера в реальном времени.
На плате распаяна цанговая панелька для подключения микроконтроллеров MSP430 в 14- и 20-выводных DIP-корпусах а также два однорядных штекерных разъема, на которые выведены все ножки микроконтроллера, что позволяет легко наращивать функциональность платы путем изготовления собственных модулей расширения.
Для первичного тестирования программ на плате также распаяно две кнопки (одна из которых – RESET), а также два светодиода.
И самое главное, в комплект входит два микроконтроллера подсемейства MSP430G2xx. Тут надо быть внимательным: с января 2012 года компания Texas Instruments выпустила новую ревизию отладочной платы. Старая ревизия (rev. 1.4) имела в своем составе следующие микросхемы:

MSP430G2211IN14 – 2 кбайт flash-памяти, 128 байт ОЗУ, 10 линий ввода-вывода, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор
MSP430G2231IN14 – 2 кбайт flash-памяти, 128 байт ОЗУ, 10 линий ввода-вывода, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, модуль универсального интерфейса, 10-битный АЦП.

В новой ревизии (rev. 1.5) в комплект входят уже другие контроллеры:

MSP430G2553IN20: 16 кбайт flash-памяти, 512 байт ОЗУ, 16 линий ввода-вывода с поддержкой емкостного сенсорного интерфейса, два 16-битных таймера, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор, 10-битный АЦП, модуль универсального последовательного интерфейса.
 MSP430G2452IN20: 8 кбайт flash-памяти, 256 байт ОЗУ, 16 линий ввода-вывода с поддержкой емкостного сенсорного интерфейса, один 16-битный таймер, сторожевой таймер, детектор пониженного напряжения, аналоговый компаратор, 10-битный АЦП, модуль универсального последовательного интерфейса.

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

В качестве приятного дополнения в комплект входят разъемы BLS для подключения плат расширения, кварцевый резонатор на 32768 кГц, который можно впаять при необходимости, а также кабель mini-USB для подключения платы к компьютеру.

Но самое главное – это стоимость данного комплекта. В интернет-магазине Texas Instruments его можно заказать за 9,99 $. Можно сказать, что цена довольно приемлемая, учитывая, что доставка по всему миру осуществляется бесплатно. В местных магазинах стоимость приблизительно в два раза выше, что, однако, тоже является вполне доступным, принимая во внимание комплектацию.

К сожалению, не обходится без небольшой, но ложки дегтя. В комплект не входит диск с программным обеспечением, которое предлагается скачать из Интернета. Но в эпоху повсеместного широкополосного доступа к сети скачать 150 МБ не составляет особой сложности.

Итак, приобретая отладочную плату MSP-EXP430G2 LaunchPad, пользователь сразу получает программатор-отладчик и два микроконтроллера, которые в новой ревизии (rev. 1.5) имеют характеристики сравнимые с таковыми у распространенных ATMega8 или PIC16F876, а по некоторым показателям даже превосходящие их. В дальнейшем при написании данного цикла автор будет использовать именно эту плату.

Осталось разобраться только с программным обеспечением для написания и отладки собственных программ. Какие же программные продукты можно использовать для работы с MSP430?

Во-первых, это собственная разработка фирмы Texas Instruments – среда Code Composer Studio. На официальном сайте можно скачать бесплатную версию, имеющую ограничение на объем кода в 16 килобайт [6]. Учитывая тот факт, что максимальный объем flash-памяти у микроконтроллеров семейства MSP430 в DIP-корпусах на данный момент составляет как раз 16 килобайт, можно смело говорить о полной функциональности данного программного продукта. К недостаткам его можно отнести высокую требовательность к системе. На компьютере с объемом ОЗУ менее 1 ГБ ставить Code Composer Studio смысла не имеет, иначе процесс компиляции и прошивки занимает весьма много времени. В общем, рекомендовать данную среду можно только владельцам мощных компьютеров, собирающимся мириться с неудобствами ради возможности написания кода большего объема.

Во-вторых, это программный пакет известного создателя ПО для микроконтроллеров – фирмы IAR Systems, именуемый IAR Embedded Workbench. С сайта Texas Instruments можно скачать бесплатную версию этой среды, которая называется IAR Embedded Workbench Kickstart [7]. К сожалению, в бесплатной версии ограничение объема кода составляет всего 4 килобайта. Но, учитывая, что поначалу вряд ли написанные коды программ будут превышать данный объем, автор при написании данного цикла будет ориентироваться именно на эту среду разработки. В отличие от ПО Texas Instruments, она имеет более низкие системные требования, при этом выполняя все те же функции, что и Code Composer Studio, но несколько быстрее.

В-третьих, можно использовать бесплатное ПО MSPGCC [8], но в настоящее время это оно представляет собой набор исполняемых из командной строки файлов без графического интерфейса, поэтому рекомендовать ее для начинающих на взгляд автора не стоит.

Теперь можно считать, что имеется все необходимое для разработки устройств на микроконтроллерах MSP430. Пора перейти к практике и написать первую программу. В дальнейшем изложении будет описан порядок действий при работе со средой IAR Embedded Workbench Kickstart.

Для начала нужно перейти на страничку [7] и скачать оттуда бесплатную версию среды IAR Embedded Workbench Kickstart. Процесс установки стандартный, лучше выбрать способ «Complete», чтобы установить все модули программы.

После того, как программное обеспечение будет установлено, следует подключить к компьютеру отладочную плату через разъем mimi-USB. Операционная система сама найдет и установит необходимые драйверы. Если же на экране появится запрос на установку нового оборудования, нужно выбрать «Автоматическая установка», и нужный драйвер будет загружен.

После этого в системе появится новый виртуальный СОМ-порт (рис. 2).

Рисунок 2 – Новый виртуальный СОМ-порт

Поскольку в контроллер зашита демонстрационная программа, то при подаче питания сразу же начнут перемигиваться светодиоды LED1 и LED2 с частотой примерно 2 Гц.

Когда вы убедились, что драйвера на отладочную плату установлены, можно запускать программную среду IAR через меню «Пуск».

При этом на экране появится стартовое окно программы. Процесс создания нового проекта не совсем очевиден, поэтому он будет приведен полностью и пошагово.

1. В меню «Project» нужно выбрать пункт «Create new project…» и в появившемся окне сразу нажать на экранную кнопку «ОК», ничего не меняя.

2. Далее следует сохранить вновь созданный проект под выбранным именем. Автор рекомендует для каждого проекта создавать отдельную папку. Для первого проекта можно дать имя папке «Lesson 1», и проект также назвать «Lesson1».

3. В меню «File» выбрать пункт «New», и в открывшемся списке снова «File». В результате в поле редактирования появляется файл «Untitled1».

4. В меню «File» выбрать теперь пункт «Save As…» и сохранить файл в ту же папку, где ранее был сохранен проект. Расширение для файла необходимо выбрать «*.с», если программа будет написана на языке Си, или «*.asm», если текст будет на Ассемблере. Автором рекомендуется называть файлы программ «main» для стандартизации. Поэтому назвать файл можно «main.c».

5. В меню «Project» выбрать пункт «Add Files…» и в открывшемся окне указать вновь созданный файл «main.c». Теперь файл с будущим текстом программы включен в проект.

6. В меню «Project» выбрать пункт «Options…». В появившемся окне сразу открывается категория «General Options», где во вкладке «Target» в поле «Device» необходимо указать тип установленного на плате контроллера. Поскольку изначально в плате находится контроллер MSP430G2553, то нужно выбрать его в выпадающем списке. Затем следует перейти в категорию «Debugger» и там во вкладке «Setup» в поле «Driver» вместо «Simulator» выбрать «FET Debugger». Это нужно для того, чтобы созданный файл прошивки загружался в подключенный контроллер, а не во встроенный в среду разработки симулятор контроллера. Более ничего менять не нужно, и можно нажимать экранную кнопку «ОК».

Теперь можно писать собственную программу, которая в дальнейшем будет загружена в контроллер. Вместо обычного мигания светодиодом предлагается написать программу, реализующую следующую задачу. При подаче питания включается светодиод LED1, а LED2 погашен. При нажатии и удержании кнопки S2 светодиод LED1 гаснет, а LED2 включается. При отпускании кнопки S2 все возвращается в исходное состояние.

 Текст программы, реализующий указанную задачу, приведен ниже.

#include <msp430.h>        //1.Подключение заголовочного файла микроконтроллеров MSP430

int main(void)             //2.Главная функция программы

{                          //3.

 WDTCTL = WDTPW|WDTHOLD;   //4.Остановка сторожевого таймера

 P1DIR = BIT0|BIT6;        //5.Перевод линий, на которых находятся LED1и LED2, на выход

 P1REN = BIT3;             //6.Включение подтягиваюющего резистора на линии кнопки S2

 P1OUT = BIT3;             //7.Подключение подтягивающего резистора к плюсу питания

 while (1)                 //8.Бесконечный цикл

 {                         //9.

  if (P1IN&BIT3)           //10.Если кнопка S2 не нажата,

  {                        //11.

    P1OUT |= BIT0;         //12.то включить светодиод LED1

    P1OUT &=~BIT6;         //13.и выключить LED2

  }                        //14.

  else                     //15.Иначе

  {                        //16.

    P1OUT |= BIT6;         //17.включить светодиод LED2

    P1OUT &=~BIT0;         //18.и выключить LED1

  }                        //19. 

 }                         //20.

}                          //21.

 

Перед описанием текста программы рассмотрим процесс создания исполняемого кода, загрузки его в контроллер и запуска на выполнение.

Для того чтобы перейти в режим отладки, нужно нажать экранную кнопку «Download and Debug», которая имеет вид зеленого треугольника над параллелограммом и расположена в верхней правой части панели инструментов. После ее нажатия при первом запуске процесса отладки программа выдаст окно с запросом сохранения файла рабочего пространства «Workspace». Можно сохранить его под именем «Workspace» в папке с проектом. После этого автоматически начнется процесс компиляции и компоновки исполняемого кода, и при отсутствии ошибок в коде программы созданный исполняемый код будет загружен в установленный на плате контроллер.

При наличии ошибок будет выдано соответствующее предупреждение с указанием вида ошибок и строк, в которых они были обнаружены.

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

Рисунок 3 – Окно программы в режиме отладки

Экранная кнопка «Go», в виде трех синих стрелок над параллелограммом запускает процесс отладки программы в реальном времени. При ее нажатии загруженная в контроллер программа начинает свое исполнение. При ее нажатии можно видеть, что на отладочной плате загорелся красный светодиод LED1. При нажатии на кнопку S2, расположенную на плате, он гаснет, и зажигается зеленый светодиод LED2. При отпускании кнопки S2 снова загорается красный светодиод. Написанная программа работает.

Экранная кнопка «Stop Debugging» в виде красного крестика останавливает процесс отладки. При ее нажатии окно среды разработки возвращается в первоначальное состояние, но запущенная в контроллере прошивка продолжает выполняться, если включена экранная кнопка «Leave Target Running» в виде трех синих стрелок над красным крестиком.

Экранная кнопка «Break» в виде красной ладони приостанавливает выполнение программы, при этом можно посмотреть текущие значения всех переменных, регистров контроллера, осуществить пошаговое выполнение программы.

Прежде чем переходить к рассмотрению текста программы, следует сделать небольшое теоретическое введение, касающееся конфигурирования и использования портов ввода-вывода. В микроконтроллерах MSP430 порты имеют следующее обозначение: вначале идет буква «Р», а затем номер порта (Р1, Р2, Р3 и т.д.) Каждый порт может объединять до 8 линий ввода-вывода. Все порты являются двунаправленными.

В семействе MSP430 для работы с каждым из портов ввода-вывода связано от 6 до 9 регистров контроллера. Для понимания написанной в данной статье программы нужно знать назначение только четырех из них.

Для задания направления передачи данных используется регистр PxDIR (где х – номер порта). Если какой-то бит данного регистра равен 0, то соответствующий ему вывод работает как цифровой вход, а если 1, то как цифровой выход. В любом режиме работы вывода его текущее состояние отражается в соответствующем ему бите регистра PxIN. В некоторых микроконтроллерах MSP430 имеется возможность задействовать внутренние подтягивающие резисторы, подключенные к выводам контроллера. За эту функцию отвечает регистр PxREN. Если какой-либо бит этого регистра равен 0, то подтягивающий резистор, подключенный к соответствующему выводу, отключен, если же бит равен 1, то подтягивающий резистор включен. Ну и, наконец, регистр PxOUT. Он выполняет двоякую функцию. Если вывод функционирует как цифровой выход, то значение каждого бита регистра PxOUT определяет уровень выходного сигнала соответствующего вывода: 0 – низкий уровень, 1 – высокий уровень. Если же вывод функционирует как вход, то значение битов этого регистра определяет способ подключения подтягивающего резистора: 0 – вывод подтягивается к общему проводу, 1 – вывод подтягивается к проводу питания.

Рассмотрим теперь работу программы. Для удобства все строки в ней пронумерованы (рис. 3). При описании программы считается, что читатель знаком с синтаксисом языка Си. Для первого раза программа будет описана построчно, в дальнейшем ранее рассматривавшиеся конструкции будут опускаться.

Строка 1. К файлу текста программы директивой компилятора include подключается файл «msp430.h». В этом файле содержатся ссылки на заголовочные файлы всех известных среде IAR микроконтроллеров семейства MSP430. Имя нужного контроллера было указано ранее в меню «Options…». Теперь среда разработки загружает необходимый заголовочный файл автоматически. Данная строка должна присутствовать всегда.

Строка 2. Объявление главной функции программы main. Тип возвращаемого функцией значения может быть любым: int, void, char. Параметры в данную функцию не передаются.

Строки 3 и 21. Определяют границы функции main.

Строка 4. С нее начинается собственно текст основной программы. Как обычно принято при написании программ для микроконтроллеров сначала идет раздел инициализации. В этой строке производится отключение сторожевого таймера контроллера. В отличие от микроконтроллеров AVR и PIC, в MSP430 сторожевой таймер по умолчанию включен, и если в нем нет необходимости, то его приходится отключать. Поэтому в большинстве случаев раздел инициализации начинается именно с этой строки.

Строка 5. Перевод выводов Р1.0 и Р1.6 на выход. В заголовочных файлах контроллеров MSP430 описаны макроопределения BIT0, BIT1, …, BIT7, которые равны соответственно 0х01, 0х02,… 0х80. Таким образом, в макроопределении BIT0 записана логическая «1» только в нулевом бите, а все остальные равны «0», в BIT1 логическая «1» только в первом бите и т.д. Исходя из вышесказанного, запись P1DIR = BIT0|BIT6 можно трактовать следующим образом: вначале выполняется операция побитового «ИЛИ» между BIT0 и BIT6, в результате которой получается байт с логическими единицами в нулевом и шестом бите, а затем полученное значение сохраняется в регистре P1DIR.

Почему мы используем как выходы именно выводы P1.0 и Р1.6? Если скачать с сайта компании Texas Instruments руководство пользователя отладочной платы MSP-EXP430G2 LaunchPad [9] и найти в ней принципиальную электрическую схему платы, то можно увидеть, что аноды светодиодов LED1 и LED2 подключены к выводам Р1.0 и Р1.6 соответственно, а катоды – к общему проводу.

Строка 6. Включение подтягивающего резистора на входе Р1.3. Именно к этому входу подключена кнопка S2 [9], а поскольку внешний подтягивающий резистор на плате отсутствует, то приходится использовать внутренний.

Строка 7. Подключение вывода Р1.3 к выводу питания через подтягивающий резистор. Теперь, если кнопка не нажата, то на выводе Р1.3 будет присутствовать высокий уровень напряжения, а при нажатии – низкий, поскольку кнопка замыкает вывод на общий провод.

Строка 8. Объявление бесконечного цикла. Строки 4-7, которые были описаны до начала этого цикла, выполнятся один раз после запуска программы. А строки 10-19, входящие в цикл, будут выполняться постоянно, пока контроллер находится в режиме работы.

Строки 9 и 20. Определяют границы бесконечного цикла.

Строка 10. Проверка состояния кнопки S2. Для проверки используется стандартный прием – побитовое логическое «И» регистра P1IN и макроопределения BIT3. Условие будет истинным только в том случае, если третий бит регистра P1IN будет равен 1, то есть, если кнопка не нажата, поскольку, как было написано выше, регистр P1IN содержит текущее состояние выводов порта.

Строки 11 и 14. Определяют границы действий, выполняемых при отпущенной кнопке.

Строка 12. В нулевой бит регистра P1OUT записывается логическая единица. Здесь снова используется стандартный прием – побитовое логическое «ИЛИ» регистра P1OUT и макроопределения BIT0 с сохранением результата в P1OUT. При этом в регистре P1OUT устанавливается в «1» только нулевой бит. После выполнения этой строки светодиод LED1 включится, поскольку на выходе P1.0 окажется высокий логический уровень.

Строка 13. В шестой бит регистра P1OUT записывается логический ноль. Тут применяется еще один стандартный прием – побитовая инверсия значения BIT6 и побитовое логическое «И» полученного значения и регистра P1OUT с сохранением результата в P1OUT. При этом в регистре P1OUT сбрасывается в «0» только шестой бит. После выполнения этой строки светодиод LED2 выключится, поскольку на выходе P1.6 окажется низкий логический уровень.

Строка 15. Начало альтернативной ветви, которая выполняется, если условие в строке 10 ложно (то есть, если кнопка S2 нажата).

Строки 16 и 19. Определяют границы действий, выполняемых при нажатой кнопке S2.

Строка 17. По структуре аналогична строке 12, за исключением того, что при ее выполнении включается светодиод LED2.

Строка 18. По структуре аналогична строке 13, за исключением того, что при ее выполнении выключается светодиод LED1.

Вот в принципе и все, что касается описания работы программы. Человек, хотя бы поверхностно знакомый с языком Си, разберется в ней без особого труда.

Еще одно замечание относительно семейства MSP430. Все микроконтроллеры этого семейства в DIP-корпусах имеют полную совместимость выводов. Это значит, что написанная программа без всяких изменений будет работать на любом контроллере, входящем в комплект MSP430 LaunchPad (и новой ревизии, и старой), нужно только задать его название в опциях проекта. Такая совместимость является большим плюсом, поскольку позволяет легко производить обновление существующего проекта путем замены контроллера на более мощный без существенных изменений в написанной ранее программе.

 

Перечень ссылок

Страница микроконтроллеров семейства MSP430 на сайте производителя. – <http://www.ti.com/lsds/ti/microcontroller/16-bit_msp430/overview.page>
Страница микроконтроллеров подсемейства Value Line на сайте производителя. – <http://www.ti.com/lsds/ti/microcontrollers_16-bit_32-bit/msp/ultra-low_power/msp430g2x/overview.page>
Страница для скачивания архива с примерами программ для микроконтроллеров семейства MSP430. –<http://www.ti.com/tool/msp430ware?DCMP=msp430ware&HQS=msp430ware-bhp>
Страница отладочной платы MSP430 LaunchPad на сайте производителя. – <http://www.ti.com/tool/msp-exp430g2>
Стародубцев М. Arduino или LaunchPad – что лучше? – Радио. 2011. №11. с. 29-31.
Страница для скачивания программного пакета Code Composer Studio. – <http://processors.wiki.ti.com/index.php/Download_CCS>
Страница для скачивания программного пакета IAR Embedded Workbench Kickstart. – <http://processors.wiki.ti.com/index.php/IAR_Embedded_Workbench_for_TI_MSP430>
Страница для скачивания программного пакета MSPGCC. –  <http://sourceforge.net/projects/mspgcc/files/Windows/mingw32/>
Руководство пользователя отладочной платы MSP430 LaunchPad. – <http://www.ti.com/lit/pdf/slau318>

sokolsp.at.ua

Микроконтроллеры MSP430. Первые шаги / Схемы и устройства на микроконтроллерах / Радиолюбители Блог

Что бы ни говорили упрямые сторонники «жёсткой логики» — устройств на привычных логических микросхемах малой и средней степени интеграции, сегодня практически невозможно представить себе серьёзную радиолюбительскую конструкцию без микроконтроллера. Эти приборы весьма тесно вошли в нашу жизнь. Наибольшее распространение среди радиолюбителей многих стран, в том числе Украины и России, получили микроконтроллеры фирм Microchip (семейство PICmicro) и Atmel (семейства MSC-51 и AVR). Их популярность обусловлена доступностью, разнообразием сред разработки, сравнительно низкой стоимостью, обилием справочной и учебной литературы, а также готовых примеров реализации программ.

Однако мир не стоит на месте, и на смену восьмиразрядным микроконтроллерам приходят новые, имеющие большие разрядность, объём памяти, скорость работы, набор встроенных периферийных устройств. Это вполне нормально и закономерно. Так стоит ли с таким упорством держаться за привычные PIC, ATmega и ATtiny? Пришла пора осваивать во многих отношениях более совершенные микроконтроллеры, в том числе семейства MSP430 фирмы Texas Instruments. Прочитав предлагаемую статью, вы узнаете их основные особенности, освоите одну из популярных компьютерных сред разработки программ для них, напишете и запустите свою первую программу.

В дальнейшем предполагается продолжить эту тему.

Микроконтроллеры семейства MSP430 характеризуются ультра низким энергопотреблением в активном режиме потребляемый ток от 160 до 220 мкА/МГц, а в спящем режиме он может снижаться до долей микроампера. Цены на микроконтроллеры MSP430 весьма привлекательны. На сайте производителя они начинаются с 0,35 долл США. Понятно, что это цена оптовая, для конечного потребителя она возрастёт раза в два-три. Но даже около 1 долл. США — довольно низкая плата за предлагаемые возможности.

В отличие от PIC и AVR, микроконтроллеры MSP430 имеют 16-разрядную архитектуру, что существенно повышает удельное быстродействие. Кроме того, они способны работать при питающем напряжении от 1,8 до 3,6 В, чго вместе с пониженным энергопотреблением позволяет создавать на их базе устройства с автономным питанием. Микроконтроллеры MSP430 ориентированы на асинхронную работу процессора и периферийных модулей. Для разработчиков это значит что для процессора, таймеров, АЦП, интерфейсных модулей могут использоваться до четырёх разных источников тактовых сигналов За счёт этого можно добиться оптимального отношения производительности к энергопотреблению.

Периферийным устройствам однозначную характеристику дать сложно поскольку у разных подсемейств набор периферийных модулей сильно различается. В целом же имеющиеся в продаже микроконтроллеры снабжены сходным с изделиями фирм Microchip и Atmel набором периферии.

Что касается доступной литературы по микроконтроллерам MSP430, то можно с сожалением отметить, что в этом они явно проигрывают своим конкурентам. Мне удалось найти не более десятка книг на русском языке, посвящённых программированию этих микроконтроллеров. Однако на сайте компании Texas Instruments имеется довольно обширный набор примеров программ для них с исходными текстами и подробным комментарием (естественно, на английском языке).

Трудоёмкость разработки программ для микроконтроллеров MSP430 в целом такая же, как для PIC и AVR. Конечно, имеются некоторые нюансы, связанные с переходом на 16-разрядную архитектуру, а также с другой организацией памяти, но при программировании на языке Си эти различия стираются

Чтобы начать знакомство с новыми микроконтроллерами. потребуются собственно микроконтроллеры, среда для разработки текста программы и преобразования его в загрузочный код («файл прошивки”), средство для загрузки этого кода в программную память микроконтроллера. Всё это можно получить „в одном флаконе“, воспользовавшись выпущенной фирмой Texas Instruments отладочной платой MSP-EXP430G2 LaunchPad, внешний вид которой представлен на рис. 1. Она мгновенно завоевала огромную популярность среди зарубежных радиолюбителей и постепенно всё шире применяется и у нас.

Ниже перечислены основные особенности LaunchPad:

1. Встроенный загрузчик FLASH-памяти. За счёт этого от падает необходимость самостоятельно собирать программатор. Кроме того, имеется отладчик, который позволяет отлаживать загруженную в микроконтроллер программу со всеми необходимыми функциями: пошаговым исполнением программы, организацией точек останова, просмотром значений всех переменных программы и регистров реального микроконтроллера.

2. На плате имеется цанговая панель для установки микроконтроллеров MSP430 в 14- и 20-выводных корпусах DIP а также два однорядных штыревых разъёма, на которые выведены все линии портов микроконтроллера, что позволяет, разрабатывая собственные модули расширения, легко подключать их к плате.

3. Для первичной проверки программ на плате имеются две кнопки (одна из них RESET) и два светодиода.

4. Имеется разъём mini-USB для соединения платы с компьютером стандартным кабелем.

5. В комплект входят два микроконтроллера подсемейства MSP430G2xx. Следует быть внимательным: с января 2012 г. компания Texas Instruments выпустила новую версию отладочной платы. Старая (1.4) была укомплектована следующими микроконтроллерами:
— MSP430G2211IN14, содержащим 2 Кбайт программной FLASH-памяти, 128 байт ОЗУ, 10 линий ввода-вывода, один 16-разрядный таймер, сторожевой таймер, детектор понижения напряжения питания, аналоговый компаратор;
— MSP430G2231IN14, содержащим, кроме того, модуль универсального последовательного интерфейса и вось-миканапьный 10-разрядный АЦП. Аналоговый компаратор в нём отсутствует.

В новом варианте (1.5) микроконтроллеры уже другие:
— MSP430G2553IN20, содержащий 16 Кбайт программной FLASH-памяти, 512 байт ОЗУ, 16 линий ввода-вывода с поддержкой ёмкостного сенсорного интерфейса, два 16-разрядных таймера, сторожевой таймер, детектор понижения напряжения питания, аналоговый компаратор, 10-разрядный АЦП, модуль универсального последовательного интерфейса.

— MSP430G2452IN20, содержащий те же периферийные устройства, но лишь 8 Кбайт программной FLASH-памяти и 256 байт ОЗУ.

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

6. В комплект поставки входят также разъёмы BLS для подключения плат расширения и кварцевый резонатор на 32768 кГц, который при необходимости можно установить на плату.

Но самое главное — стоимость комплекта MSP-EXP430G2 LaunchPad. В интернет-магазине компании Texas Instruments его можно заказать всего за 4,30 долл. США, причём с бесплатной доставкой по всему миру. В местных магазинах цена приблизительно в два раза выше, что, однако, тоже вполне приемлемо, учитывая комплектацию.

Учтите, в приобретаемом комплекте отсутствует диск с программным обеспечением, которое предлагается „скачать“ (150 Мбайт) из Интернета. Но сегодня это не представляет особой сложности.
Итак, приобретая отладочную плату MSP-EXP430G2 LaunchPad, радиолюбитель сразу получает программатор-отладчик, а также два микроконтроллера, которые в версии 1.5 по своим характеристикам сравнимы с такими распространёнными, как ATmega8 или PIC16F876, а по некоторым показателям даже превосходят их. Дальнейшее содержание статьи ориентировано именно на эту плату.

Теперь разберёмся с компьютерным программным обеспечением, позволяющим разрабатывать и отлаживать собственные программы для микроконтроллеров MSP430.

Во-первых, это собственная разработка фирмы Texas Instruments — среда Code Composer Studio. На интернет-странице можно получить её бесплатную версию, имеющую ограничение по объёму загрузочного кода разрабатываемой программы до 16 Кбайт. Учитывая, что объём программной памяти микроконтроллеров, которыми сегодня комплектуют LaunchPad, не превосходит этой цифры, можно смело говорить, что этот продукт пригоден для них без ограничений

К недостаткам можно отнести высокую требовательность к характеристикам компьютера. При объёме ОЗУ менее 1 Гбайт устанавливать на компьютере Code Composer Studio смысла не имеет, процесс компиляции и загрузки программы в микроконтроллер будет занимать столько времени, что вполне можно не спеша выпить чашку чая.

Кроме того, в Code Composer Studio периодически происходят различные непонятные явления: исчезают и появляются некоторые экранные кнопки, пропадают панели инструментов. В общем, рекомендовать её можно только владельцам мощных компьютеров, собирающимся смириться с некоторыми неудобствами ради возможности разрабатывать программы большого объёма.

Во-вторых, программный пакет — известной фирмы IAR Systems, именуемый 1AR Embedded Workbench. На сайте IAR Systems можно получить бесплатную версию этой среды, называющуюся IAR Embedded Workbench Kickstart. К сожалению, в этой версии объём загрузочного кода сильно ограничен (всего 4 Кбайт). Но учитывая, что первые программы вряд ли будут большими, рекомендую остановиться именно на ней. IAR Embedded Workbench Kickstart, в отличие от Code Composer Studio, менее требовательна к компьютеру, при этом выполняет те же самые операции намного быстрее. Кроме того, за время работы с ней никаких „странностей” обнаружено не было.

В-третьих, можно использовать бесплатное программное обеспечение MSPGCC, разработанное на базе
библиотек Linux (наподобие WinAVR для микроконтроллеров AVR). Однако сегодня оно представляет собой набор исполняемых файлов без графического интерфейса, запускаемых из командной строки. Поэтому рекомендовать его начинающим, на мой взгляд, не стоит.

В дальнейшем я буду описывать порядок действий при работе со средой IAR Embedded Workbench Kickstart.

А теперь перейдём к практике и напишем первую программу. Прежде всего следует зайти на интернет-страницу и “скачать» оттуда бесплатную версию среды IAR Embedded Workbench Kickstart, нажав на кнопку «Download», расположенную под надписью «Code size limited Kickstart version download». В результате получим архив slac050xx.zip, где хх — две буквы, зависящие от текущей версии среды. Распаковав архив, необходимо найти в нём и запустить исполняемый файл, устанавливающий программную среду. В старых версиях он назывался FET_R610.exe (цифры зависели от номера версии), а в более новых — autorun.exe. При запуске последнего на экране открывается меню, в котором нужно выбрать пункт «Install IAR Embedded Workbench». Процесс установки — стандартный для приложений Windows. Из его предлагаемых вариантов лучше выбрать «Complete», чтобы установлены были все программные модули.

Автор: С. Сокол, г. Мариуполь, Украина

schemy.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *