Начинаем работать с 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