Приехал Stellaris Launchpad.

Launchpad
Фото не будет, так как под рукой только Нокия.


Приехал быстро, высылают его DHL Next Day Delivery в коробке, в которую свободно умещается нетбук. Сама платка махонькая, как пол-ардуины. В комплекте USB micro кабель, софт предлагают скачивать с интернета.
Демо-прошивка умеет ШИМ на RGB диоде, простенькую консоль (UART эмулируется ICDI дебаггером) и спящий режим с пробуждением от RTC.
Что порадовало:
Большая экосистема, правда акцентированная на профессиональное использование.
Куча примеров, хорошая вики http://processors.wiki.ti.com. (Здесь косой взгляд в сторону ST и убогих индусских примеров идущих в комплекте с SPL)
Очень много бесплатного софта: ОСРВ с ІР-стеком (в том числе IPv6), FAT, USB, LCD драйверами. Графические библиотеки, загрузчики, стеки беспроводной сети… Все бесплатно даже для коммерческого использования на процессорах ТІ.
Сама плата имеет «папы» сверху и «мамы» снизу и совместима со стандартными платами расширения Boosterpacks. Правда цены на них довольно большие, но никто не мешает скопировать их.
Сам дизайн продуман, например разъемы USB стоят на разных сторонах платы (вверху и слева), так что нет проблем с подключением.

Не так порадовало:

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

Скачал «бесплатный» Code Composer Studio. Техасцы, чем вы свой Эклипс кормите, что он занимает 2.5 Гб? Да еще совсем недавно у меня столько же занимала винда, вижуал студио и AVR Studio, да еще и старкрафт был от фаргуса. К тому же он подвисает на i7 c 8 Гб RAM. Так и тянет поставить человеческий IAR c кряком.

Для любознательных стандартный пример измерения температуры термодатчиком:

#include  "inc/ hw_ me mmap. h"  
#include "inc/hw_types.h"  
#include "driverlib/debug.h"  
#include "driverlib/sysctl.h" 
#include "driverlib/adc.h" 
 
#ifdef DEBUG 
void__error__(char *pcFilename, unsigned long ulLine)  
{  
}  
#endif  
 
int main(void)  
{  
  unsigned long ulADC0Value[4] ; 
  volatile unsigned long ulTempAvg; 
  volatile unsigned long ulTempValueC;  
  volatile unsigned long ulTempValueF;  
 
SysCtlClockSet(SYSCTL_SYSDIV_5|SYSCTL_USE_PLL|SYSCTL_OSC_MAIN|SYSCTL_XTAL_16MHZ); 
 
SysCtlPeripheralEnable(SYSCTL_PERIPH_ADC0); 
  SysCtlADCSpeedSet(SYSCTL_ADCSPEED_250KSPS); 
  ADCSequenceDisable(ADC0_BASE, 1);  
 
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0); 
  ADCSequenceStepConfigure(ADC0_BASE, 1, 0, ADC_CTL_TS); 
  ADCSequenceStepConfigure(ADC0_BASE, 1, 1, ADC_CTL_TS); 
  ADCSequenceStepConfigure(ADC0_BASE, 1, 2, ADC_CTL_TS); 
  ADCSequenceStepConfigure(ADC0_BASE, 1, 3, ADC_CTL_TS | ADC_CTL_IE | ADC_CTL_END);  
  ADCSequenceEnable(ADC0_BASE, 1); 
   
  whi le(1) 
  {  
    ADCIntClear(ADC0_BASE, 1); 
    ADCProcessorTrigger(ADC0_BASE, 1);  
 
  while(!ADCIntStatus(ADC0_BASE, 1, false))  
    {  
    }  
 
  ADCSequenceDataGet(ADC0_BASE, 1, ulADC0Value); 
    ulTempAvg = (ulADC0Value[0] + ulADC0Value[1] + ulADC0Value[2] + ulADC0Value[3] + 2)/4;  
    ulTempValueC = (1475  -  ((2475 * ulTempAvg)) / 4096)/10; 
    ulTemp V alueF = ((ulTempValueC * 9) + 160) / 5;  
  }  
}  


Общие мысли и первые впечатления:
Плата хорошая, но семейство процессоров явно не для широкого любителя. Скорее всего быть ей переходником USB-CAN, пока не придумаю чего поинтереснее.
Если вы не интересуетесь конкретно этим семейством, покупать незачем. Сравнивая с STM32F4-Discovery могу сказать что если Discovery будет побогаче, универсальнее (один ST-Link уже оправдывает покупку), то Launchpad — это часть Техасской экосистемы и хорош для людей, которые хотят пересесть с MSP430 на что-то помощнее.

Комментарии (77)

RSS свернуть / развернуть
не маленький, вроде…
угадай, что?! ;)
0
вот уже хотел написать. и тут меня осенило, что ты это и имел в виду )
0
ну, это чтобы сильно громко не кричать… ;)
0
да лааадно. все ж свои.
0
тогда на три-четыре? ;)
0
КААААААТ!
0
ой, отвлекся.
КААААААТ!
0
Дико извиняюсь. Никогда не читаю тематические блоги, а только «Прямой эфир», посему отсутствие ката не заметил. Кстати «кат» на украинском это «палач». Злые вы…
+1
Жжоте ребята
+3
Говнобиблиотеки! Позор:)
0
  • avatar
  • PRC
  • 06 ноября 2012, 21:15
эм… всегда считал что правильная библиотека это хорошо. переубедите?
0
хотя конечно макробиблиотеки наверно интереснее.
0
Щас набегут сторонники записи «волшебных» чисел по регистрам и все популярно разложат по полочкам:) Что понять устройство камня через библиотеки невозможно и вообще библиотеки — это былокод, для быдлокодера. Как говорится — терпение, только терпение:)
0
ага. и для регистров тоже никаких символьных дефайнов. только магические числа, только хардкор! :)
0
а зачем понимать устройство камня если все работает? мне codevision нравился своим «калькулятором» который иниты красиво прописывал. а быдлокод это как раз «волшебные» числа, ибо поддерживаемость кода падает (и не надо тут про комменты, если в них кроме описания что тут делается не написано что писать, чтоб делалось другое)
+1
Для проникновения в тему могу посоветовать почитать сеи комментарии:)
0
Вот, я же говорил, что набегут и все популярно объяснят:)
0
Ты молодец, хорошо набросил :-)
0
по типу OMNOMNOM )
0
ADCSequenceConfigure(ADC0_BASE, 1, ADC_TRIGGER_PROCESSOR, 0);
Это и есть магические числа. К тому же крайне громоздко. Впрочем, до библиотек STM этому далеко — там мозговыносительные километровые константы с чередованием капса и слов с большой буквы (при том, что в Си принято препроцессорные константы записывать только капсом).

И оборачивать запись констант в регистр (при том, что и то и другое имеет вполне осмысленные и понятные имена) — действительно быдлокод.
0
нет. если это действительно однострочная обертка, то компилятор упакует его в инлайн. а читабельность все же выше.
0
ну и ADC0_BASE это не магическое число, а 0x40002000UL это магическое число
0
Ну,
ADCSRA = (1<<ADEN)|(1<<ADATE)|(1<<ADPS1)|(1<<ADPS2)|(1<<ADIE)
всё же понятнее, чем
adc_init(1, 1, 0, 0, 3, 1, 1).
. Может быть, с первого взгляда не поймёшь что такое ADATE, но через некоторое время общения с микросхемкой эта запись окажется идеальным вариантом — и однозначно понятно (если знаком с структурой ADC, вспомнить за что отвечает тот или иной битик — не проблема), и компактно. А ваши макросы и функции инициализации хрен запомнишь — вот объясни мне по памяти, что означает каждый аргумент?
hFont = CreateFont(48,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS,
                CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY, VARIABLE_PITCH,TEXT("Impact"));

Не говоря уж о том, что с периферией нужно работать, а не инициализировать и забыть. А это постоянная работа с битиками, и тут ничего лучше
PORTA |= 1<<PA0
нет и не может быть. Нравится мне AVR своей продуманностью и толковым подходом, в отличие от всяких новомодных армов, где вся «производительность» уходит на компенсацию архитектурного идиотства, и получается тот же восьмибитник, только неудобный.
0
обертка должна быть грамотно написана и задокументирована. возьмем другой вариант. уарт можно инициализировать побитно, а можно написать функцию в которую будет передаваться скорость, несколько важных параметров раздельными аргументами, возможность задания маской редкоиспользуемых параметров и (возможно) номер уарта.
0
ну и не мало ситуаций когда нужно забить по одному биту в пять регистров.
0
Кстати вопрос для всех противников библиотечных констант: почему вы терпите символьные названия регистров, типа WDR, UDRA, DDR? Почему не пишете напрямую под адрес в памяти? Только числа, только хардкор!
0
Потому что удобнее использовать символьные названия.
0
А это постоянная работа с битиками, и тут ничего лучше
PORTA |= 1<<PA0
нет и не может быть.
Это полный отстой, к тому же непереносимый.
Нравится мне AVR своей продуманностью и толковым подходом, в отличие от всяких новомодных армов, где вся «производительность» уходит на компенсацию архитектурного идиотства, и получается тот же восьмибитник, только неудобный.
Нравится мне арм продуманностью и толковым подходом, в отличие от авр-ов, где всей «продуманности» не хватило даже на то, что бы регистры под периферию нормально положить. Хорошо хоть в новых процах до них, наконец, дошло, что это удобно. Хотя авр как был тормозом, так и остался.

P.S. ответ почти «зеркальный». почти, потому что у меня хоть одна обоснованная претензия названа, в отличие от вашего наезда.
0
Это полный отстой
Это наилучший вариант. Если, конечно, писать программки, а не городить километр оопов на каждое простейшее действие.
к тому же непереносимый
Покажи переносимый. И лучше не запись битика в порт, а, скажем, считывание из АЦП по таймеру.
Хотя авр как был тормозом, так и остался.
Для реалтаймовых задач и плотно упакованной, быстрой логики AVR куда быстрее всех навороченных процессоров. Армы могут выигрывать разве что в вычислительных задачах, но для контроллера основная задача — управление, а не рассчёты.
0
Это наилучший вариант.
из худших.

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

Тем более, в МК, где программка завязана на логику работы периферии и для её портирования нужно переписать куда больше тупых обёрток.
0
уж проще один HAL подправить, чем ползать по простыням и бормотать под нос «это не забыть, еще это, и вот это. а вот это надо подправить, а вот тут переписать»
+1
Только эти тупые обёртки вроде периферийных библиотек не являются HAL-ом. Применительно к МК, HAL вообще имеет мало смысла — программка максимально связана с железом, и разделять их — означает как минимум получить ограниченную игрушку вроде ардуйни.
0
99% программ на МК глубоко по, на каком они МК работают. Все, что им нужно от железа — прочитать ADC, выставить пару ножек и плюнуть в UART. И перемешивать все эти действия с логикой — худший быдлокод.
С одним, впрочем, согласен — на роль HAL эти библиотеки годятся дюже плохо. Тут более-менее годятся разве что Arduino и его порты и библиотеки CooCox (хоть и только на поддерживаемых в CoIDE, но одинаковы на всех МК).
0
Только эти тупые обёртки вроде периферийных библиотек не являются HAL-ом.
Вот тут я полностью согласен — штатные периферийные библиотеки, как правило, редкий отстой и пример того, как не надо писать либы. Но это именно, что «тупые обертки». «Умные обертки» в этом смысле куда как лучше.
Применительно к МК, HAL вообще имеет мало смысла — программка максимально связана с железом,
Это никак не мешает разделению.
и разделять их — означает как минимум получить ограниченную игрушку вроде ардуйни.
И в чем же ограниченность ардуйни?
0
ну, кто как пишет и что выделяет.
а что уровни HAL и логики должны быть разделены хоть спорить не будешь? ;)
0
если ваша задача максимально связана с железом вы не далеко от игрушек с «ардуйней» ушли. помигать портом да. а обработка данных не должна быть на последнем месте.
0
Прежде чем обрабатывать данных, нужно наладить их получение и использование результатов. Если всё общение с внешним миром ограничивается «миганием портом», что ты собрался обрабатывать?
0
не понят мой намек. я как раз обратное хотел сказать. если не ограничиваться миганием портом, то надо больше времени уделять тяжелым алгоритмам вычислений и не тратить кучу времени на изучение того «что же здесь хотели сделать предыдущие разработчики» когда с переферией работают по вашему подобию. ну и когда один из расчетов на меге64 отрабатывается в течении получаса лишь раз пять прочитав данные с ацп за это время совсем не хочется думать о том как с этим ацп работать. ну и та же переносимость.
0
>> Только эти тупые обёртки вроде периферийных библиотек не являются HAL-ом.

Не холивара для, а справедливости ради — посмотрите на так нелюбимый мной Atmel Studio 6 — они таки умудрились сделать код переносимым между xmega, avr32 и ARM Cortex M.
0
А почему «нелюбимый»?
0
Дык, MSVS же. Ты же знаешь, я предпочитаю опенсорс и кроссплатформ. =)
Есть гнусные подозрения, что с выходом Студио 5 разрабатывать под линуксом (да и под виндовсом, но со сторонней IDE) становится заметно труднее, так как все инструментарии и наборы библиотек затачиваются под VS.
0
С точки зрения любителей оопов и прочих огородов.
Огород это, как раз, то, что вы назвали «наилучшим».
Увидев любой компактный и наглядный код, начинаете придумывать как обвешать его обёртками и костылями, а потом эти обёртки и костыли обвешать ещё раз и так далее.
Нет, не начинают. Начинают только тогда, когда видят нечитаемый, похожий на птичий язык код типа того, что вы процитировали.
Кричите про переносимость, хотя никакой пользы для переносимости от тупых обёрток нет.
От тупых — нет. От качественных — есть.
Тем более, в МК, где программка завязана на логику работы периферии и для её портирования нужно переписать куда больше тупых обёрток.
В таких случаях обертки делаются высокоуровневые.
0
нечитаемый, похожий на птичий язык код
Оопы — это и есть «нечитаемый, похожий на птичий язык код». Простое же никогда не может быть запутанным.
В таких случаях обертки делаются высокоуровневые.
И что останется от МК после высокоуровневых обёрток? Ограниченная игрушка-ардуйня. Так что никто высокоуровневых обёрток для периферийных устройств МК не делает.
0
Оопы — это и есть «нечитаемый, похожий на птичий язык код».
Только для тех, кто вообще читать не умеет.
Простое же никогда не может быть запутанным.
Запутанным — возможно. Непонятным — легко.
И что останется от МК после высокоуровневых обёрток?
Весь МК и останется.
Ограниченная игрушка-ардуйня.
Так в чем же ее ограниченность и игрушечность?
Так что никто высокоуровневых обёрток для периферийных устройств МК не делает.
Вы ошибаетесь. Их не только делают, но и вполне успешно применяют. Более того, в силу особенностей инструмента, такой код можно сделать эффективнее и компактнее того, что вы считаете «простым и понятным».
0
Это наилучший вариант. Если, конечно, писать программки, а не городить километр оопов на каждое простейшее действие.
Это глупый и неудобный вариант, классический пример «write only» программы, в которой через месяц невозможно разобраться.
Для реалтаймовых задач и плотно упакованной, быстрой логики AVR куда быстрее всех навороченных процессоров.
Это если те навороченные процессоры долго и нудно ломать. Что, хоть и не просто, но можно сделать, пытаясь реализовать все так, как привычно для авр-ок (например, задержками на циклах), а не так, как это на самом деле правильно.
Армы могут выигрывать разве что в вычислительных задачах, но для контроллера основная задача — управление, а не рассчёты.
Вычисления это часть управления, если вы не в курсе. Любой нетривиальный алгоритм управления минимум на половину состоит из вычислений. И да, армы в этом сильны. А привычные многим авр-оводам задержки на пустых циклах они не любят. Но им это и не нужно, для этого есть железо (периферия), которая всяко лучше с этим справляется, чем самый быстрый авр.
0
задержки на пустых циклах
Это и есть «долго и нудно ломать». А если использовать с умом, AVR выигрывают.
0
А если использовать с умом, AVR выигрывают.
Пример был бы весьма полезен для придания вашим словам хотя бы видимости обоснованности, а не религиозного предубеждения.
+2
adc_init(1, 1, 0, 0, 3, 1, 1).

hFont = CreateFont(48,0,0,0,FW_DONTCARE,FALSE,TRUE,FALSE,DEFAULT_CHARSET,OUT_OUTLINE_PRECIS,
                CLIP_DEFAULT_PRECIS,CLEARTYPE_QUALITY, VARIABLE_PITCH,TEXT("Impact"));

Для этого есть нормальные IDE с подсказкой параметров. Она есть даже в таких примитивных средах, как lcc-win32, PowerBASIC и PureBasic (впрочем, у последнего довольно приятная среда, хоть и простая). На самый крайний случай можно сгонять до хедера и глянуть объяву там. Если часто использовать — порядок аргументов запоминается не хуже, чем криптоимена регистров и битов (а вот подсказки по ним уже нету).
0
Подсказки IDE — это подпорка. С ней может быть удобнее, но всё должно хорошо получаться и без них, иначе это апи — говно.
0
Подпорка, но удобная. Без них тоже можно:
На самый крайний случай можно сгонять до хедера и глянуть объяву там.
Ничуть не хуже, чем листать даташит в поисках битов и регистров. А нормальная IDE еще и на блюдечке поднесет.
0
Да и IDE вообще подпорка, достаточно компилятора командной строки (make — тоже подпорка) и редактора (cat con > main.c, ага).
Только подпорки бывают удобные и полезные, а бывают сучковатые костыли, вроде AVRStudio 4.
0
Если часто использовать — порядок аргументов запоминается не хуже, чем криптоимена регистров и битов (а вот подсказки по ним уже нету).
угу. только пока запомнишь, столько новых слов придумаешь… фтопку. «криптоимена» хоть как-то еще ложатся, а россыпь ноликов и единичек в параметрах — данунах. и подсказки среды только чуть облегчают.
0
Все нормально запоминается, а подсказки и вовсе прелесть. В том же Delphi я в доки заглядываю раз в год, вся остальная инфа доставляется IDE в виде подсказок, автодополнения и кодонавигации. Расковыривание же чужого кода это вообще облегчает на порядки.
А вот в какой регистр из трех положить UDRIE я не только не помню, но и никто кроме даташита этого не подскажет.
0
делфя и стандартные библы мимо кассы. а вот представь очередную самописную библу от нуба с написанным в таком стиле исходником. посмотрел бы на это… и даже попкорн с собой взял. и блокнотик — конспектировать новые выражения…
0
а вот представь очередную самописную библу от нуба с написанным в таком стиле исходником
А тут уже не играет роли, в каком стиле — оно в любом случае нечитаемо. И виноват в этом не стиль, а нуб. Так что не в кассу как раз таки твой пример, а не мой.
0
ну ладно. не нубом. а просто код, написанный в таком стиле. просто новый для тебя.
0
Тогда твой блокнотик останется пустым, а пакетик попкорна даже не успеет опустеть наполовину.
0
кстати. по теме.
celeron g530. полет кодкомпозера нормальный. под стеллярис не писали. только под ланчпад и пикколо
0
  • avatar
  • xar
  • 06 ноября 2012, 22:37
и памяти 2гига
0
Значит моя жаба разленилась. Но все равно, СоIDE которое тот же эклипс занимает в 10 раз меньше места.
0
Ну под ланчпад оно собирается на «раз-два». Там прошивки — в лучшем случае 16кб (постараться над еще).
А вот уже под CC430F6137 (32кб) уныло. Весьма уныло. На i7-3770K@4.1/16Gb!!!
Ну да, проект на порядок сложнее, чем у мсп430…
0
Как будто С/С++ когда-либо вообще быстро компилировались. И компилирует в любом случае не эклипс, а тулчейн.
0
Так оно. При этом какое-то время эклипс «тупо висит», а только потом тулчейн отрабатывает :D
0
Ну, это уже вероятно виноваты ручки индусов, писавших плагины к эклипсу. Тоже вполне возможно.
0
Кстати да. Сломать эклипс в этом вопросе довольно просто из-за особенностей SWT. Если писать код «в лоб» заморозить интерфейс довольно просто.
0
Кстати, насколько я помню, в некоторых ситуациях «тупо висеть» любит то ли IAR, то ли Keil, и это несмотря на их простоту, примитивность и легковесность. Как раз где-то в районе то ли компиляции, то ли запуска отладки.
0
аврстудио 4 ;) на слабом железе во время работы винавр интерфейс мерзнет.
0
Компания ориентируется на корпоративного разработчика, поэтому чтобы скачать софт, надо иметь фирменное мыло, у фирмы должен быть сайт. Так же надо в общих чертах описать предполагаемое устройство и пообещать не делать ничего для военных.
Необязательно. В качестве мыла годится яндекс, в качестве сайта «N/A» (оно даже прямо там и написано), а в качестве проекта — «Hobby». Вот галочки насчет военных надо проставить правильно, да. А еще оно глючит в некоторых браузерах, например в моей старой опере и не дает ссылок.

А чем эклипс кормят — смотреть надо. Возможно там большая часть — доки и тулчейны для разных камней (тулчейны довольно тяжелая штука, тот же GCC для AVR или MSP430 весит порядка полутора сотен метров, а то и больше).
0
  • avatar
  • Vga
  • 07 ноября 2012, 00:58
Я один такой слепой, или действительно ссылки на страницу заказа нет?
0
Дык все кому надо давно уже заказали, в сентябре еще. Тогда и топик с ссылкой был. Впрочем, вот ссылка, сам продукт ищется по названию Stellaris Launchpad. Но сейчас он уже врядли по акционной цене в $4.99.
0
За ссылку огромное спасибо. Полазил, правда пока поверхностно. Однако много вкусного нашел, может попозже закажу. А оплату они через палку принимают или как?
0
Через палку, через кредитку, еще как-то.
Кстати, Stellaris LP там прямо на глагне в «популярных продуктах» есть. И стоит уже $12.99.
0
Эту конкретно я наверное брать не буду. Там другие есть, по моему повкуснее и подешевле. Тем более учитывая, что я с этими процами еще не работал, мне подойдут платы подешевле. ;) Но это как-нибудь на выходных надо будет сесть, подумать.
0
Гм, по моему дешевле там разве что оригинальный ланчпад, MSP430. Даже пикколо лп ЕМНИП стоит баксов 17-18.
0
Вот с него и начну, наверное ;) Еще подумаю…
0
Посмотри лучше на Freescale FREEDOM-KL25Z. Я здесь ее описал: Тыц.
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.