EmGo

Язык для программирования микроконтроллеров с Go-синтаксисом

EmGo - язык для программирования микроконтроллеров с Go-синтаксисом.

Установка

Для установки нам потребуется Go версии 1.6+

Получаем код:

go get -u -v github.com/ziutek/emgo

Устанавливаем компилятор

go install -v github.com/ziutek/emgo/egc

Прописываем пременные окружения:

export EGCC=/usr/local/arm/gcc-arm-none-eabi/bin/arm-none-eabi-gcc
export EGLD=/usr/local/arm/gcc-arm-none-eabi/bin/arm-none-eabi-ld
export EGAR=/usr/local/arm/gcc-arm-none-eabi/bin/arm-none-eabi-ar

export EGROOT=$HOME/go/src/github.com/ziutek/emgo/egroot
export EGPATH=$HOME/go/src/github.com/ziutek/emgo/egpath

Для сборки бинарного файла egc использует gcc тулчейн. Можно взять например этот GCC ARM Embedded

Я обычно распаковываю его как есть в /usr/local/arm и делаю симлинк:

cd /usr/local/arm
sudo tar xvf ~/Downloads/gcc-arm-none-eabi-5_2-2015q4-20151219-linux.tar.bz2
sudo ln -s gcc-arm-none-eabi-5_2-2015q4 gcc-arm-none-eabi

Так же нужно установить OpenOCD, если он ещё не установлен:

sudo apt-get install openocd

Или можно использовать тулзу StLink.

Прошивка тестового примера

После этого, можно отправится к примерам. Из коробки поддерживается демоборда F4 Discovery, которая у меня была под рукоу.

Сразу возьмём что нибудь по-нагляднее с блекджеком и… т.е. с каналами и горутинами:

cd $EGPATH/src/stm32/examples/f4-discovery/channels

Мне не удалось запустить приложение из RAM, поэтому я отредактировал script.ld и заменил строчку

INCLUDE stm32/loadram

на

INCLUDE stm32/loadflash

Теперь собираем наше приложение:

../build.sh

Если копиляция прошла успешно, получили бинарник в elf-е cortexm4f.elf. Прошиваем его в демоплату через OpenOCD:

../load-oocd.sh flash

Бинго! Плата начинает нам весело подмигивать всеми четырьмя светодиодами.

Что дальше?

Дальше изучать примеры, читать документацию (пока она весьма условна), писать собственные приложения.

 
comments powered by Disqus