Начинаем работать с LaunchPad Tiva C Series TM4C123G в Ubuntu

Приобрёл у Texas Instruments за $13 отладочную плату с двумя микроконтроллерами TM4C123GH6PM (ARM Cortex-M4), один используется для прошивки другого, и имеет в конце названия индекс I (TM4C123GH6PMI). Плата имеет 2 USB порта, один для разработки и отладки, другой для создания своего USB устройства, так же на плате имеется переключатель DEVICE/DEBUG. Плата совместима с BoosterPack платами от MSP430 платформы. Доставка как всегда была очень быстрой, и бесплатной.

Подключаем плату через USB порт DEBUG, устанавливаем переключатель в положение DEBUG.

Установка программного обеспечения

Нам необходим компилятор arm-none-eabi-gcc, который можно собрать из исходников, а лучше найти уже собранный.

Установка arm-none-eabi-gcc:

$ sudo add-apt-repository ppa:terry.guo/gcc-arm-embedded
$ sudo apt-get update
$ sudo apt-get install gcc-arm-none-eabi

Для заливки прошивки в микроконтроллер потребуется утилита lm4tools.

Установка lm4tools:

$ git clone https://github.com/utzig/lm4tools.git
$ cd lm4tools/lm4flash/
$ make
$ sudo cp lm4flash /usr/bin/

Компиляция своей программы

Скачиваем из TivaWare самораспаковывающийся архив SW-DK-TM4C123G-1.1.exe (в линуксе просто открываем эту exe менеджером архивов).

В примерах этого пакета для разработчика есть программка examples/boards/blinky/blinky.c

Только она работает почему-то с другим портом, а не с тем, куда у нас подключен RGB светодиод, поэтому меняем порт с G на F. Немного доработал программку, чтобы мигать всеми светодиодами по очереди.

blinky.c:

c:
#include <stdint.h>
#include "inc/tm4c123gh6pge.h"

#define RED_LED   0x02
#define BLUE_LED  0x04
#define GREEN_LED 0x08

int
main(void)
{
    volatile uint32_t ui32Loop;

    SYSCTL_RCGC2_R = SYSCTL_RCGC2_GPIOF;

    ui32Loop = SYSCTL_RCGC2_R;

    GPIO_PORTF_DIR_R = RED_LED|BLUE_LED|GREEN_LED;
    GPIO_PORTF_DEN_R = RED_LED|BLUE_LED|GREEN_LED;

    while (1) {
        GPIO_PORTF_DATA_R |= RED_LED;
        for (ui32Loop = 0; ui32Loop < 200000; ui32Loop++) {}
        GPIO_PORTF_DATA_R &= ~(RED_LED);

        GPIO_PORTF_DATA_R |= GREEN_LED;
        for (ui32Loop = 0; ui32Loop < 200000; ui32Loop++) {}
        GPIO_PORTF_DATA_R &= ~(GREEN_LED);

        GPIO_PORTF_DATA_R |= BLUE_LED;
        for (ui32Loop = 0; ui32Loop < 200000; ui32Loop++) {}
        GPIO_PORTF_DATA_R &= ~(BLUE_LED);

        for (ui32Loop = 0; ui32Loop < 200000; ui32Loop++) {}
    }
}

Компилируем:

$ make

Загрузка в микроконтроллер

$ sudo lm4flash gcc/blink.bin

После успешной загрузки программа тут же стартует.

Ссылки

GNU ARM Embedded Toolchain: https://launchpad.net/~terry.guo/+archive/gcc-arm-embedded

Programming TI Stellaris LaunchPad on GNU/Linux: http://www.incrediblediy.com/2013/04/programming-ti-stellaris-launchpad-on.html

TivaWare for C Series: http://software-dl.ti.com/tiva-c/SW-TM4C/latest/index_FDS.html

20 октября 2013