07 августа 2015

Deviation - сборка прошивки в Ubuntu Linux

В связи с переездом на новый компьютер, стал перетаскивать данные и все свои наработки. Пришлось многое делать по новому, так как старая система была Gentoo, а новая - Ubuntu, вернее более легкая сборка - Xubuntu. Так же пришлось по новой настраивать возможность выполнять сборку прошивки Deviation. В аннотации к репозитарию с исходными текстами прошивки содержится очень скудная информация по сборке. Придется восполнить этот пробел.

Для начала нужно установить необходимые пакеты для сборки. Сделать это можно командой в консоли:

$ sudo apt-get install mercurial gcc-arm-none-eabi libnewlib-arm-none-eabi

Теперь нужно выбрать место, где будут располагаться исходные тексты прошивки и прочие дополнительные данные. Пусть это будет "~/build/deviation":

$ mkdir -p ~/build/deviation

Переходим во вновь созданный каталог и получаем исходные тексты прошивки:

$ cd ~/build/deviation
$ hg --config hgsubversion.branch=default clone https://bitbucket.org/deviationtx/deviation

Если все прошло успешно и без ошибок, то уже можно выполнить сборку. Я буду собирать для передатчика Devo 10, для другого передатчика нужно будет подставить другие значения в команду. Для Devo 7E - devo7e, для Devo 8S - devo8. Нужно будет перейти внутрь полученного каталога и запустить процесс сборки:

$ cd ~/build/deviation/deviation/src
make TARGET=devo10

Если сборка выполнена без ошибок, то в каталоге "src" должен получиться файл "devo10.dfu" - это и есть файл прошивки. О том, как его установить - расскажу ниже.

Кроме прошивки, потребуется еще и файловая система. Ее так же можно получить, выполнив одну команду:

make TARGET=devo10 fs

В каталоге "src" должен получится файл вида "deviation-fs-devo10-....zip". Это и есть архив с файловой системой, который позже можно будет распаковать в передатчик или использовать для запуска эмулятора.

С необходимыми для работы файлами разобрались. Но хочется иметь еще и эмулятор прошивки, который на официальном сайте доступен только для Windows. Для этого нужно установить дополнительные пакеты:

$ sudo apt-get install portaudio19-dev libfltk1.3-dev g++

Затем внутри каталога "src" нужно выполнить команду:

make TARGET=emu_devo10 SOUND=1

На выходе должен получиться файл "emu_devo10.elf". Это и есть эмулятор прошивки. Нужно поместить его в отдельный каталог и туда же распаковать файловую систему. Должно получиться вот так:


Запустив файл "emu_devo10.elf", после короткой заставки, получим следующую картину:


В эмуляторе удобнее настраивать первичные данные моделей, а затем переносить конфигурацию в передатчик. Описание горячих клавиш можно найти в документации.

А теперь можно автоматизировать весь процесс сборки, написав небольшой скрипт:

$ touch ~/build/deviation/deviation-build
$ chmod 755 ~/build/deviation/deviation-build

Содержание скрипта будет следующим:

#!/bin/bash
LANGUAGE=C
SOURCE="https://bitbucket.org/deviationtx/deviation"
[[ -d ./deviation ]] && rm -r ./deviation
hg --config hgsubversion.branch=default clone ${SOURCE}
if [ -d ./deviation ]; then
    cd ./deviation/src
    make TARGET=devo10
    make TARGET=devo10 fs
    make TARGET=emu_devo10 SOUND=1
fi

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

Осталось установить прошивку в передатчик. Потребуется небольшая утилита от автора прошивки. Для ее работы нужно установить виртуальную машину Java, если она еще не установлена:

$ sudo apt-get install openjdk-8-jre

Далее нужно дать доступ пользователю к USB-устройствам:

$ sudo groupadd usb
$ sudo usermod $USER -a -G usb
$ echo 'SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="usb"' | sudo tee -a /etc/udev/rules.d/10-usb.rules


После этого нужно перезагрузить правила udev:

$ sudo udevadm control -R

У текущего пользователя нужно перезагрузить права - завершить текущую сессию и открыть новую. Или просто перезагрузить компьютер. Затем нужно скачать последнюю версию программы установки, о которой рассказывал ранее, и поместить в рабочий каталог, например "~/bin/firmware-updater".

$ mkdir ~/bin/firmware-updater
$ cd  ~/bin/firmware-updater
wget "http://deviationtx.com/downloads-new/category/161-dfu-usb-tool?download=1117:deviation-uploader-0-8-0" -O deviationupload-0.8.0.jar
$ echo "java -jar deviationupload-0.8.0.jar" >./firmware-updater
$ chmod 755 ./firmware-updater
./firmware-updater

Ну вот, если появилось окно программы, то можно включить пульт в режим прошивки. При этом пульт должен определиться в программе, как на изображении:


Осталось перейти на вкладку "DFU", выбрать файл прошивки и нажать "Send". После операции появится сообщение об успешном завершении прошивки.


Ну вот и все. Теперь все желающие могут самостоятельно собирать прошивку и устанавливать ее без использования Windows.

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

  1. Ох... Вот почему русские люди сначала делают, а только потом читают? Пол дня потратил на запуск DFuse под виндой в виртуалбоксе, а потом уже нашел это приложение на яве. Как нашел и запустил - прошился за 15 минут. А вчера был вечер пайки..
    Осталось ваш конфиг под 977 переделать под себя немного :)

    ОтветитьУдалить
  2. скажите Devo 10 будет соединяться c DMS приемником без прошивки Deviation? И можно прошить devo 10 прошивкой Deviation с изменением файла hardware.ini (под универсальный модуль 4 в 1), а потом установить сам модуль?

    ОтветитьУдалить
    Ответы
    1. Не, без перепрошивки на Deviation не будет. Да, можно загнать файл hardware.ini под модуль 4-в-1, а потом и модуль поставить. Но до этого будут работать только протоколы, использующие модуль CYRF6936. Это старый валькеровский протокол, DEVO и DSM.

      Удалить