Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Работа на MSP430
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > MSP430
aBoomest
Собрался распробовать MSP430
Кто может охарактеризовать среды разработки (до этого работал только в Keil ну и чисто в блокнотике тоже бывало)
Есть 3 варианта:
1. Code Composer Studio версия 4
2. IAR Embedded Workbench Kickstart
3. Энергия

Какая лучше? Какая среда удобнее? Существуют ли встроенные симуляторы? Достоинства? Недостатки?

Заранее спасибо.
Turbo_enot
Цитата(aBoomest @ Oct 31 2013, 15:04) *
Собрался распробовать MSP430
Кто может охарактеризовать среды разработки (до этого работал только в Keil ну и чисто в блокнотике тоже бывало)
Есть 3 варианта:
1. Code Composer Studio версия 4
2. IAR Embedded Workbench Kickstart
3. Энергия

Какая лучше? Какая среда удобнее? Существуют ли встроенные симуляторы? Достоинства? Недостатки?

Заранее спасибо.


Code Composer называют тормозом на эклипсе, хотя техасцы его во всю пиарят. Сам работаю в IAR, отличная среда разработки. Поддерживает кучу контроллеров, которые также можно симулировать, используя Proteus. Энергию не советую: работая на MSP430, спускаться до уровня Arduino, как минимум не круто. Удачи!
MrYuran
Цитата(aBoomest @ Oct 31 2013, 15:04) *
Есть 3 варианта:
1. Code Composer Studio версия 4
2. IAR Embedded Workbench Kickstart
3. Энергия

Какая лучше? Какая среда удобнее? Существуют ли встроенные симуляторы? Достоинства? Недостатки?

Если есть возможность купить IAR или использовать, не покупая, то пожалуй самый достойный кандидат по качеству кода.
По удобству, увы.. унылый серый блокнот.

Если хочется честно и бесплатно, то MSPGCC и любая оболочка по вкусу (eclipse, CodeBlocks, MSVS, etc)
Заодно, как говорят копирасты, используя опенсорс - поддерживаешь коммунизм sm.gif
controller_m30
Использую IAR Embedded Workbench Kickstart, пишу на асме, до сих пор никаких ограничений не вылезло (ограничения там вроде только для Си). Сразу отлаживаю в железе, используя аппаратный отладчик из MSP430 LaunchPad http://www.ti.com/tool/msp-exp430g2. Всё просто чудесно.
Симулятор там тоже есть.
DASM
Цитата(aBoomest @ Oct 31 2013, 16:04) *
Собрался распробовать MSP430

А смысл ? Что в нем такого, чего нет в АРМ например ? Мне приходится сейчас псаить под 430 немного - одно плевательство. Естественно более менее юзабельное - ИАР. Отладчик FET глючит через раз. Заново привыкать к убогой 16 битности. При том ценник нехилого 32 битника.
aBoomest
Спасибо всем за советы.
MrYuran
Цитата(DASM @ Nov 1 2013, 13:43) *
А смысл ? Что в нем такого, чего нет в АРМ например ?

А вот того и нет, что жрет десятки миллиампер в активном режиме и единицы в спячке.
Говорят, Energy Micro CM0 примерно так же может, но по функционалу они тоже недалеко от мсп ушли
DASM
Единицы миллиампер в спячке ? Вы отстали от жизни . STM32 sleep - 0.38 mA, run @125kHz - 0.45 mA, stop mode 20 uA. Производительность ARM @ 125 kHz vs MSP сравнивать будем ? И это СТМ, ни разу не заточенный под ультра лоу
V_N
Цитата
STM32 sleep - 0.38 mA, run @125kHz - 0.45 mA, stop mode 20 uA. Производительность ARM @ 125 kHz vs MSP

да будем MSP430F5438A 1 MHz- 0.35 мА про sleep даже не говорю
DASM
Хорошо. С другой стороны пусть будет STM32L100C6 с 200 uA @ 1 MHz . По току выиграли уже сразу, остается сравнить производительность (это я тоже отстал от жизни, не знал про STM32L серию, – 9 μA Low-power Run mode
– 214 μA/MHz Run mode) http://www.st.com/web/catalog/mmc/FM141/SC...LN1808/PF255679 Так в чем кайф MSP ?
Сам Техас в www.ti.com/lit/an/slaa205c/slaa205c.pdf‎ говорит, примерно вдвое слабее, MSP чем ARM, но сравнивают только c THUMB режимом, который и так менее производителен у АРМ. С полноценным режимом видимо стесняются.
rezident
Цитата(DASM @ Nov 5 2013, 19:22) *
Хорошо. С другой стороны пусть будет STM32L100C6 с 200 uA @ 1 MHz . По току выиграли уже сразу,
Ничего пока не выиграли. Нужно сравнивать сравнимое. Если работаем из RAM, то в обоих случаях. Не нужно брать одну цифру одного параметра (при работе из Flash) и сранивать ее с цифрой для другого параметра (работа из RAM). Datasheet это не секретный документ и правильно читать мы его умеем wink.gif
Для STM32L100C6 IDD(Run from RAM) @1МГц: typ=200мкА, max=300мкА@85°C.
Для MSP430F5438A аналогичные цифры. IAM, RAM @1МГц: typ=200мкА, max=290мкА@85°C.
Цитата(DASM @ Nov 5 2013, 19:22) *
остается сравнить производительность (это я тоже отстал от жизни, не знал про STM32L серию, – 9 μA Low-power Run mode
– 214 μA/MHz Run mode) http://www.st.com/web/catalog/mmc/FM141/SC...LN1808/PF255679
Опять же 9мкА это типовое значение и в температурном диапазоне -40°C...+25°C, а если брать максимальное значение, то 24мкА@85°C. Причем вся периферия выключена, Flash выключена, работает только ядро из SRAM. MSP430F5438A при таких же условиях (тактирование от 32кГц, работаем из RAM @85°C) будет потреблять при всем желании ну никак не больше. При том, что у него еще и BOR и часовой генератор работать будут и Flash запитана (что идет в плюс при использовании быстрой побудки (<5мкс) при вызове обработчиков прерываний из Flash).
Цитата(DASM @ Nov 5 2013, 19:22) *
Так в чем кайф MSP ?

В удобстве управления тактированием ядра/периферии и режимами перехода из спячки в работу и обратно. В MSP430 мне лично только 32-х разрядных таймеров (точнее 32-х разрядных capture) не хватает. Хотя Cortex-M(всякие разные) мы также используем широко.
Цитата(DASM @ Nov 5 2013, 19:22) *
Сам Техас в www.ti.com/lit/an/slaa205c/slaa205c.pdf‎ говорит, примерно вдвое слабее, MSP чем ARM, но сравнивают только c THUMB режимом, который и так менее производителен у АРМ. С полноценным режимом видимо стесняются.

Угу. Как-то не совсем корректно было бы 32-разрядные МК сравнивать по производительности с 16-разрядными. Давайте еще ARM с 51 сравним, чтобы первый еще круче выглядел biggrin.gif
DASM
Да ладно, ну одинаково. смысл в том, что МСП уже ничего выдающегося из себя не представляет. Сравнивать 16—32, почему бы и нет, если ценник, потребление идентично.
aBoomest
Всем еще раз привет.
С "energia" пока не стал знакомиться. Решил по порядку. CCS, затем IAR. (не хочу никого из помогающих мне советами этим обидеть, просто вот так решил).
Возникли следующие вопросы:
В CCS загрузка и отладка происходит "на лету", и понять содержание и структуру проекта в CCS с ходу не просто. Не пойму какой файл "заливается" в микроконтроллер и в какой папке проекта его искать? Мысли такие по этому поводу: есть в проекте две папки release и debug. Чем отличаются вроде интуитивно понятно. Однако, в обоих папках есть файл .out и размер у него одинаковый что в 1й, что во 2й папках. А казалось в папке debug должен быть несколько больше (или даже на много больше). Что это за файлы? Поискал в сети - вроде как эти файлы и записываются в контроллер, однако есть большие сомнения. Поморгал светодиодами - файл с данной программой занимает 18 кБайт. А в CCS ограничение на 16 кБайт кода. Следовательно, явно это не тот файл.
Какой файл является прошивкой?
Есть ли программные средства чтобы просто загрузить файл прошивки в память МК (без среды разработки CCS)?

В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Попробовал добраться до места где эта ф-ция определена - не вышло. Из какой библиотеки эта функция? Какие еще ф-ции есть и где их список посмотреть. (В файле msp430g2553.h никаких объявлений ф-ций не нашел)
sonycman
Цитата(MrYuran @ Nov 1 2013, 09:56) *
Если есть возможность купить IAR или использовать, не покупая, то пожалуй самый достойный кандидат по качеству кода.

Читал в сети, что ИАР для MSP генерит отвратительный неоптимизированный код. CCS по качеству кода намного лучше, но нет поддержки C++.
Может быть, сейчас ситуация изменилась?
SSerge
Цитата(sonycman @ Nov 17 2013, 17:45) *
Читал в сети, что ИАР для MSP генерит отвратительный неоптимизированный код. CCS по качеству кода намного лучше, но нет поддержки C++.
Может быть, сейчас ситуация изменилась?

Не замечал, код вполне приличный.
Чтобы на такой архитектуре как MSP сгенерировать неоптимальный код - это надо талант иметь и долго учиться wink.gif
sonycman
Цитата(SSerge @ Nov 17 2013, 15:31) *
Не замечал, код вполне приличный.
Чтобы на такой архитектуре как MSP сгенерировать неоптимальный код - это надо талант иметь и долго учиться wink.gif

Ясно, спасибо, буду пробовать!

Цитата(rezident @ Nov 5 2013, 20:00) *
В удобстве управления тактированием ядра/периферии и режимами перехода из спячки в работу и обратно. В MSP430 мне лично только 32-х разрядных таймеров (точнее 32-х разрядных capture) не хватает.

Ну не так уж и удобно с переходом из спячки и обратно, на первый взгляд. К примеру, устройству необходимо "уснуть" на 10 минут - на девайсах Value Line запрограммировать выход из спячки LPM3 по таймеру возможно только используя ватчдог, с учётом его 16 бит и частоты Low Power RC генератора в 12 кГц получаем максимальное время спячки в 20 секунд. Маловато будет.
На новых LPC800 для этого есть 32 битный WKT, дающий гораздо более гибкую настройку.
rezident
Цитата(sonycman @ Nov 17 2013, 16:47) *
Ну не так уж и удобно с переходом из спячки и обратно, на первый взгляд. К примеру, устройству необходимо "уснуть" на 10 минут - на девайсах Value Line запрограммировать выход из спячки LPM3 по таймеру возможно только используя ватчдог, с учётом его 16 бит и частоты Low Power RC генератора в 12 кГц получаем максимальное время спячки в 20 секунд. Маловато будет.
На новых LPC800 для этого есть 32 битный WKT, дающий гораздо более гибкую настройку.

Надуманная проблема. laughing.gif Во-первых, кроме WDT есть еще и TimerA. Во-вторых, а кто мешает просыпаться по переполнению таймера и программно проверять окончание временной паузы в течение этих 10 минут? При тактировании от того же VLO при каждом просыпании, проверка (вход в прерывание, сравнение, выход в спячку) займет порядка 30 тактов или около 2,5мс. Причем потреблять в активном режиме MSP430 в это время будет аж целых 5мкА вместо (максимум) 0.7мкА@25°C в режиме LPM3. Это конечно ужас, но ведь не ужас-ужас-ужас, не так ли? biggrin.gif
Myron
Цитата(aBoomest @ Oct 31 2013, 06:04) *
Собрался распробовать MSP430

Может кто-либо дать ссылки на схемы перепрограммирования MSP430 через USB (MSP430 с USB) а не через JTAG для того, чтобы заложить на плату?
sonycman
Цитата(rezident @ Nov 18 2013, 00:58) *
Надуманная проблема. laughing.gif Во-первых, кроме WDT есть еще и TimerA.

Проблема не большая, согласен.
Но таймер тоже 16 битный, поэтому выдержка будет лишь в два раза больше - около 40 секунд.
Мало, мало, мало... laughing.gif

Цитата(rezident @ Nov 18 2013, 00:58) *
кто мешает просыпаться по переполнению таймера и программно проверять окончание временной паузы в течение этих 10 минут?

Так и придётся делать, это понятно.

После того, как попробуешь все прелести 32 бит, даже на 16 становится тесновато... sm.gif
rezident
Цитата(Myron @ Nov 18 2013, 04:09) *
Может кто-либо дать ссылки на схемы перепрограммирования MSP430 через USB (MSP430 с USB) а не через JTAG для того, чтобы заложить на плату?

В соседнем топике обсуждается эта тема http://electronix.ru/forum/index.php?showtopic=116844

Цитата(sonycman @ Nov 18 2013, 14:40) *
После того, как попробуешь все прелести 32 бит, даже на 16 становится тесновато... sm.gif
Аналогично, как и 16 после 8-битников. laughing.gif
aBoomest
Всем привет.
1. Какой файл проекта CCS является прошивкой для MSP430?
Есть ли программные средства чтобы просто загрузить файл прошивки в память МК (без среды разработки CCS)?

2. Как очистить память программ в CCS?
Допустим я загрузил в микроконтроллер программу. Она будет там "сидеть" до тех пор пока я не запишу туда другую новую программу на место этой. А можно ли удалить "все" из микросхемы? В каком мануале можно почитать о "внутренностях" процесса прошивки?

3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?
Встречал в примерах функции __bis_sr_register(). В чем её отличия от функции __bis_sr()?
Читал что __bis_sr_register(GIE) эквивалентно _enable_interrupt(). Зачем их две, выполняющие одно и то же?
В чем отличие функций у которых перед именем одно подчеркивание (_) от функций в имени которых два подчеркивания (__) ?
Где взять описания всех этих функций?

И все функции, они работают, хотя в *.h файлах я их не нашел. Где это все определено?

4. Где вообще можно почитать о написании кода для MSP 430 на СИ. В мануалах про сам контроллер написано хорошо но там асм, а вот что делать с СИ - не совсем понятно. Учиться чисто на примерах из сети - как-то странновато (может это и на первый взгляд, раньше на ассемблере писал).

Одним словом прошу помощи в информации!!!
rezident
Цитата(aBoomest @ Jan 12 2014, 22:41) *
1. Какой файл проекта CCS является прошивкой для MSP430?

Учимся самостоятельно добывать нужную информацию. Показываю пример того, как это делается.
- Идем на сайт TI: http://www.ti.com/
- Вводим в строку поиска ключевое слово "CCS"
- Переходим по результатам поиска на страничку продукта Code Composer Studio IDE - Integrated Development Environment, а там к абзацу Technical Documents
- Ищем в списке документов руководство по программированию в среде CCS на Си в применении именно к MSP430 MSP430 Optimizing C/C++ Compiler v 4.2 User's Guide (Rev. H)
- Поиском по документу ищем ключевое слово "output" и находим упоминание в разделе 1.2.2 Output Files
Цитата
1.2.2 Output Files
These types of output files are created by the compiler:
COFF object files
Common object file format (COFF) provides basic modular (separately-compiled) compilation features,
such as relocations. COFF is a legacy format; it will continue to be supported, but support for some
modern language features will not be added
ELF object files
Executable and linking format (ELF) enables supporting modern language features like early template
instantiation and exporting inline functions.

и далее в разделе 1.2.4 Utilities
Цитата
1.2.4 Utilities
These features are compiler utilities:

...

• Hex conversion utility
For stand-alone embedded applications, the compiler has the ability to place all code and initialization
data into ROM, allowing C/C++ code to run from reset. The COFF files output by the compiler can be
converted to EPROM programmer data files by using the hex conversion utility, as described in the
MSP430 Assembly Language Tools User's Guide.

- См. вновь на той же страничке документ с упомянутым названием MSP430 Assembly Language Tools v 4.2 User's Guide (Rev. H) в котором внимательно изучаем Chapter 12. Hex Conversion Utility Description
- На той же страничке продукта находится основной документ для пользователя CCS Code Composer Studio v5.5 for MSP430 User's Guide (Rev. Z), где в разделе Using the Integrated Debugger описано как "прикрутить" к дебаггеру CCS эту утилиту для конвертации в стандартные форматы TI-TXT и Intel-HEX.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
Есть ли программные средства чтобы просто загрузить файл прошивки в память МК (без среды разработки CCS)?

MSP430 Flasher - Command-line Programmer
FET-Pro430 от Elprotronic
MSPFET Programmer от Kurt-а
Естественно, что прошивка должна быть в одном из стандартных форматов (типа TI-TXT или Intel-HEX).
Цитата(aBoomest @ Jan 12 2014, 22:41) *
2. Как очистить память программ в CCS?
Допустим я загрузил в микроконтроллер программу. Она будет там "сидеть" до тех пор пока я не запишу туда другую новую программу на место этой. А можно ли удалить "все" из микросхемы?

Через JTAG или BSL, воспользовавшись командой Erase в любой из вышеперечисленных программ. Либо читайте User's Guide для вашей серии MSP430, где описано внутрипрограммное программирование и стирание Flash.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
В каком мануале можно почитать о "внутренностях" процесса прошивки?

Читайте User's Guide для соответствующей серии MSP430. Ссылки на сайте призводителя http://www.ti.com/lsds/ti/microcontroller/...docCategoryId=6
Цитата(aBoomest @ Jan 12 2014, 22:41) *
3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?

В библиотеке CCS вестимо. Исходников может и не быть. Публиковать или нет исходники своих библиотек это личное добровольное дело разработчиков компилятора.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
Встречал в примерах функции __bis_sr_register(). В чем её отличия от функции __bis_sr()?

Я не встречал вторую. Может это что-то самописное?
Цитата(aBoomest @ Jan 12 2014, 22:41) *
Читал что __bis_sr_register(GIE) эквивалентно _enable_interrupt(). Зачем их две, выполняющие одно и то же?

Первая более универсальная. unsigned short __bis_SR_register(unsigned short mask); компилируется в команду BIS mask, SR
Вторая функция void __enable_interrupt(void); не имеет аргумента и компилируется в команду EINT, которая суть то же самое, что и BIS GIE, SR
Цитата(aBoomest @ Jan 12 2014, 22:41) *
В чем отличие функций у которых перед именем одно подчеркивание (_) от функций в имени которых два подчеркивания (__) ?

Это зарезервированные компилятором имена функций. Не рекомендуется переопределять или использовать такие же имена в своих исходниках для функций с одним подчеркиванием и "запрещается" использовать с такими же именами у которых два подчеркивания. Для второго случая нормальная работа компилятора не гарантируется ибо начнутся неизбежные конфликты компиляции при дублировании имен зарезервированных функций.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
Где взять описания всех этих функций?

В User's Guide на ваш компилятор. Конкретно для CCS они описаны в документе MSP430 Optimizing C/C++ Compiler v 4.2 User's Guide (Rev. H) в таблице Table 6-5. MSP430 Intrinsics
Цитата(aBoomest @ Jan 12 2014, 22:41) *
И все функции, они работают, хотя в *.h файлах я их не нашел. Где это все определено?

См. выше. В библиотечных функциях компилятора.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
4. Где вообще можно почитать о написании кода для MSP 430 на СИ. В мануалах про сам контроллер написано хорошо но там асм, а вот что делать с СИ - не совсем понятно. Учиться чисто на примерах из сети - как-то странновато (может это и на первый взгляд, раньше на ассемблере писал).

Учебниками по языку Си наводнен весь Интернет. Учиться на примерах из сети - в этом нет ничего странного. Нужно только пользоваться заведомо рабочими примерами. У того же производителя (TI) на сайте есть примеры (Code Examples) для всех типов MSP430 и для всей периферии, имеющейся у MSP430.
Цитата(aBoomest @ Jan 12 2014, 22:41) *
Одним словом прошу помощи в информации!!!

Еще раз предлагаю вам учиться искать требуемую информацию самостоятельно! На сайте производителя www.ti.com этой информации в избытке. rolleyes.gif
aBoomest
Цитата
Цитата
3. В одном из примеров от TI увидел в коде ф-цию _delay_cycles(). Вставил в свой код. Работает?! Где определена эта функция?

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

Про публикование реализации никто не говорит, но заголовки-то должны где-то присутствовать, так или не так?

Огромное спасибо за такой развернутый ответ.
Много раз, естественно, был на ti.com и копался в этом огромном списке. Но для меня, как для начинающего работу с этими микросхемами, даже учитывая, что я не первый раз работаю с микроконтроллерами, трудновато на первых парах найти нужный документ для ответа на конкретный вопрос из такого большого списка, тем более что многие документы довольно обширные и даже просто просмотр занимает огромное количество времени. Мне достаточно было бы лишь дать ссылку на нужный мануал, а дальше проблем нет.
Еще раз спасибо за развернутость. sm.gif

С уважением, Анатолий.
rezident
Цитата(aBoomest @ Jan 13 2014, 10:07) *
Про публикование реализации никто не говорит, но заголовки-то должны где-то присутствовать, так или не так?

Я работаю с IAR, поэтому в "потрохах" CCS не очень ориентируюсь. Если по аналогии с IAR, то хедер intrinsics.h (в котором определены __bis_SR_register() и т.п.) находится среди стандартных хедеров от TI. А вот _delay_cycles() это уже библиотечная функция собственно компилятора и куда именно в CCS поместили ее хедер, я не знаю. Устанавливать CCS только ради этого знания, у меня желания нет sm.gif
aBoomest
Ясно. Спасибо.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.