Поиск по этому блогу

среда, 9 февраля 2011 г.

Средства разработки MSP430 для Ubuntu Linux 10.04 -10.10


Так исторически сложилось, что я очень не люблю операционную систему Windows. Во всех ее проявлениях. О причинах этого можно говорить долго и увлекательно, но не будем :)
К сожалению два основных средства разработки для MSP430 - Code Composer studio и IAR Kickstart не поддерживают Linux :(
Впрочем от CCS мы, наверное, этого и дождемся со временем - начиная с 4 версии он переехал на платформу Eclipse. Осталось портировать компилятор.
Но есть и альтернатива - mspgcc. Бесплатная... Delicious.
Из разных источников [1] [2] [3] я собрал рецепт сборки рабочей среды для Ubuntu.
Итак, приступим
Для начала установим необходимые библиотеки и компилятор gcc


sudo aptitude install git-core gcc-4.4 texinfo patch libncurses5-dev zlibc zlib1g-dev libx11-dev libusb-dev libreadline6-dev


Качаем порт mspgcc для gcc4 отсюда
или вводим команды, чтобы взять из репозитария git (на работе git не смог пробиться через прокси, а дома все ОК)


git clone git://mspgcc4.git.sourceforge.net/gitroot/mspgcc4/mspgcc4


Если скачали архив, то распаковываем его в домашнюю директорию. Переименуйте папку mspgcc4-20110130 в mspgcc4.

cd mspgcc4 && perl buildgcc.pl


Запуститься скрипт сборки. На все вопросы можно жать Enter (по умолчанию) кроме вопроса о сборке - там нужно ввести "y" чтобы процесс сборки запустился. Также спрашивает ставить ли Insight - древний деббагер - можно сказать n, тем более что с ним бывают проблемы при сборке.
Можно попить кофе пока идет сборка.
После сборки в /opt появиться папочка msp-gcc-4.4.5. Неплохо бы сделать симлинк 


sudo ln -s  msp430-gcc-4.4.5/ mspgcc


и добавить его в path. Теперь можно компилировать, например,


msp430-gcc -Os -mmcu=msp430x2231 -o led.elf led.c


led.c, например, такой:



01./* Пример моргания диодом */
02. 
03.#include <msp430g2231.h>
04. 
05./** Задержка. **/
06.delay(unsigned int d) {
07.int i;
08.for (i = 0; i<d; i++) {
09.nop();
10.}
11.}
12. 
13.int main(void) {
14.WDTCTL = WDTPW | WDTHOLD;// отключаем Watchdog таймер
15.P1DIR = 0xFF;
16.P1OUT = 0x01;
17. 
18.for (;;) {
19.P1OUT = ~P1OUT;
20.delay(0x4fff);
21.}
22.}



Если программа собрана без ошибок, то можно ее заливать в контроллер. Для этого нам пригодиться программа mspdebug



tar -zxvf mspdebug.tar.gz
cd mspdebug
make
sudo make install


Чтобы можно было работать с LaunchPad не из под root, нужно задать udev правило.


sudo nano /etc/udev/rules.d/46-TI_launchpad.rules


Вписываем туда :


ATTRS{idVendor}=="0451", ATTRS{idProduct}=="f432", MODE="0660", GROUP="plugdev"


Перезапускаем udev:


sudo restart udev

Подключите Launchpad. 



mspdebug rf2500
prog led.elf

run



Программа прошьется в контроллер и плата заморгает красным глазком...

2 комментария:

  1. ничё не понял...но по моему ты гений....

    ОтветитьУдалить
  2. В последней версии возникает ошибка при попытке построить binutils2.21.1. В скрипте buildgcc.pl переменные указывают совсем другое (ниже исправлено) так например VERSION указывает на не существующий на данном зеркале пакет biutils2.21.1 а загрузка производится с http://ftp.uni-kl.de который не доступен вылетая из скрипта с ошибкой 404.

    $BINUTILS_VERSION = "2.21.1a";
    $GNU_MIRROR="ftp://ftp.uni-kl.de";

    Но даже это помогает не полностью, после того как binutils указанной версии будут выкачены другой скрипт распакует их в каталог /build/binutils-2.21.1, а нужно в 2.21.1a. Не стал мудрить просто переименовал каталог и запустил скрипт заново. После этого сборка mspgcc пошла нормально.

    ОтветитьУдалить