usb_plug.jpg

Вообще правильней было опубликовать эту статью на сайте производителя http://easyelectronics.ru/ . И эта инструкция уже включена в рассылку новым покупателям Pinboard.

Вкратце Pinboard — отладочная плата, которую спроектировал и распространяет DI HALT, всеобщем там целая…. инфраструктура)) При покупке девайса, говориться о том что «Для работы с ним используется мощная и очень популярная консольная программа avrdude Windows,Linux,MacOS).» Т.е. это плата со встроенным программатором дешевле того что продается в радиоэлектронных магазинах, да и должна работать под linux, подумал я и купил. Здесь заканчивается рекламный блок и мы переходим непосредственно к проблеме. К сожалению документация рассказывает как работать с Pinboard на Windows , но покопавшись на форуме удалось выудить и собрать эту информацию. (печатаю здесь , иначе Ъ засмеют). И да, мы используем только свободный софт в данной статье! Используется отладочная плата: Pinboard v1.1

Подключение платы

Вкратце необходимые установки на плате

  • Voltage Selection установлен в 5V
  • Переключатели UART 1,2 установлены ON
  • Оба переключателя JTAG 1,2 установлены в OFF
  • Перемычка питания установлена в положение USBH

Для начало необходимо понять установлен ли в вашей системе драйвер FTDI адаптера. Возьмите USB шнур и подключите его к компьютеру, а второй конец к USB-1(USB SOFT) на плате Pinboard. Нажмите кнопку MainPower Откройте терминал и наберите:

ls /dev

Если среди всего что вам покажет терминал, есть ttyUSB0 то это означает что в вашей системе установлена поддержка FTDI.

Включение поддержки FTDI в ядре

Здесь описаны действия в дистрибутиве Gentoo в чем-то они могут сходится, в чем-то отличаться, если хотите что-то добавить/сделать поправку пишите!

Большинство дистрибутивов распространяются с уже собранным «универсальным» ядром.Если вам необходимо включить поддержку FTDI в ядре(например у вас дистрибутив Gentoo). перейдите в папку с исходными кодами ядра.

Например:

cd /etc/source/linux-....папка с ядром
make menuconfig

в меню есть поиск (клавиша /) вы можете найти FTDI драйвер с помощью него. Например у меня в ядре надо было включить.

Device Drivers -> USB supports -> USB serial computer support -> FTDI single port serial driver

После проделанных изменений сохраните новую конфигурацию.

make && make modules

Посмотрите куда будет сохранен образ ядра bzImage примонтируйте загрузочный (отдел если надо)

mount /boot
cp /адрес где расположено ядро/bzImage /boot

под названием ядра имеется ввиду ваше название ядра на которое вы будете ссылаться в grub.conf. Отредактируйте /boot/grub.conf Отмонтируйте загрузочный раздел:

umount /boot

перезагрузитесь с новым ядром и снова попробуйте подключить Pinboard как описано выше.

Прошивка через bootloader, стандартным средствами

Буду писать код на C а не на привычном ассемблере, почему? Потому, что синтаксис именно директивы компилятора(вроде .device). Если есть желание можно установить пакет avra он позволит скомпилировать ваш ассемблерный файл с синтаксисом Atmel в hex. GCC(GNU Collection Compilers) тоже может компилировать ассемблер, но там есть отличия и вменяемой документации и примеров на русском, мало, хотя и на английском тоже.(позже восстановлю статью про GNU As)

Итак вам понадобится установить следующие пакеты(возможно названия отличаются):

  • avrdude прошивающая программа
  • gcc-avr компилятор
  • avr-libc библиотека С-шных функций

Откройте ваш редактор и наберите простейший пример.

#define F_CPU 8000000L
#include <avr/io.h>

int main(void)
{
        DDRC=0xFF;
        PORTC=0xFF;
        while(1){
                //бесконечный цикл
        }
}

и перейдите в папку с вашей программой, теперь скомпилируем объектный файл.

avr-gcc -mmcu=atmega16 -o test.o test.c

или avr-gcc -mmcu=atmega16 -O3 -o test.o test.c , во втором случае мы оптимизируем по размеру выходной файл. Затем транслируем получившийся файл в формат Intel Hex

avr-objcopy -O ihex test.o test.hex

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

sudo su

Подключите Pinboard к компьютеру как это было описано RESET рядом с главным микроконтроллером и сразу же выше. Перед прошивкой вы должны нажать клавишу начать прошивать(Reset 15c.) :

avrdude -p m16 -c avr109 -P /dev/ttyUSB0 -U flash:w:test.hex

Документация по AVRdude на русском

Прошивка Pinboard от пользователя

Например, если устройству соответствует файл /dev/ttyUSB0, выполняем:

udevadm info --attribute-walk --name=/dev/ttyUSB0

в результате получаем много всего и из этого составляем следующий каллаж «=» присвоение, «==» сравнение.

0000:00:1d.3 — это и есть ID нашего устройства. Соответственно в файл /etc/udev/rules.d/95-avrdude.rules записываем правило(!В одну строчку!!):

# Rules for my Pinboard devboard
KERNEL=="ttyUSB*[0-9]", SUBSYSTEM=="tty", DRIVERS=="ftdi_sio", ATTRS{serial}=="0000:00:1d.3", GROUP="users", MODE="0666"

Теперь снова включим и выключим Pinboard. Теперь можно прошивать с пользовательского терминала, а также пользоваться встроенной в Eclipse кнопкой прошивки или графическими оболочками AVRdude!

Используем общение по UART

cutecom.png

Из руководства DIHALT настроим плату:

  • Перемычку питания установить в 5 вольт
  • Двойные переключатели UART и JTAG установить в положение off
  • Расположенный рядом с ними 6 пинов Rx-Tx замкнуть перемычкой(1 пин Rx с одним пином Tx)
  • Подключить USB кабель к USB1
  • Включить MainPower

Теперь о софте, софта в линуксе который работает с параллельным портом, много, так говорят. Товарищ СYB3R посоветовал minicom консольный псевдографический интерфейс,есть графический инструмент называется CuteCom

Поставте, все это безобразие средствами вашего дистрибутива (ебилд для Gentoo)

Дальше вам необходимо запустить либо графическую оболочку, либо консольную

Установить порт ttyUSB0, скорость 9600 знаков, от ключите программное и аппаратное управление потоком и наслаждайтесь(для GUI надо ещё нажать opendevice), буквами и прочими знаками которые вам возвращаются после печати.

Выйти из консольного режима можно с помощью Ctrl+A затем Q.

Подробнее о псевдографической оболочке minicom