Pull to refresh

Внутрисхемный программатор отладчик ICD2 + Ubuntu

Programming microcontrollers
Разработка в Linux — это просто!

Этот топик будет посвящен подключению программатора отладчика фирмы Olimex — ICD2 на Linux.

Так как в интернете я почти не нашел информации по этому поводу, позволю рассказать себе как я это сделал.
Не хитро догадаться, что нужно знать на какой дистрибутив будем ставить. Мой выбор пал на Ubuntu 8.10. Ядро на данный момент было установлено версии 2.6.27-11-generic ( анстейбл вобщем ).
Однако, это очень дружественный и простой в использовании дистрибутив, но граблей при подключении избежать не удалось.

И так, начнем по порядку.
  • Устанавливаем последнюю версию piklab.
обычно она есть в репозитории ( репозиторий — хранилище пакетов )
Устанавливаем командой:

$ sudo aptitude install piklab

Пакетный менеджер потянет зависимоти в виде KDE либ, получается довольно много если у Вас не KDE.
Так, установили мы piklab. Теперь нужно выполнить второй шаг:
  • подключение программатора ICD2.
Подключаем его на любой свободный хост USB. ПОМНИТЕ: Не подключайте в картридеры и прочую фигню. Ниче не заработает!
После того как подключили и подождали секунд 10, стоит выполнить команду lsusb.

bond@bond-desktop:~$ lsusb
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Bus 001 Device 007: ID 04d8:8000 Microchip Technology, Inc. In-Circuit Debugger

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Если Вы не увидели Ваш отладчик, то я думаю стоит притормозить чтение данной статьи на неопределенный срок и выяснить, почему его не видит. Если все ок — двигаемся дальше. Следующим шагом будет:
  • Настройка ICD2 в программе Piklab
Что бы у нас все заработало, нам нужно создать группу microchip и поместить туда нашего пользователя. Выполяем команду: sudo addgroup microchip && sudo addgroup bond microchip Где вместо «bond» — укажите имя своего пользователя! Должны увидеть нечто подобное:

bond@bond-desktop:~$ sudo addgroup microchip && sudo addgroup bond microchip
Добавляется группа `microchip' (GID 1002)…
Готово.
Добавляется пользователь `bond' в группу `microchip'…
Добавление пользователя bond в группу microchip
Готово.
bond@bond-desktop:~$

Затем, если все прошло хорошо, нужно создать файл — правило. Ну что ж — создадим.
$ sudo touch /etc/udev/rules.d/026_microchip.rules

Затем, скопируйте этот текст в тот файл, что мы создали:
#PICKit
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0032", MODE="0660", GROUP="microchip"
#PICKit2
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="0033", MODE="0660", GROUP="microchip"
#ICD2
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="8000", MODE="0660", GROUP="microchip"
#ICD21
SYSFS{idVendor}=="04d8", SYSFS{idProduct}=="8001", MODE="0660", GROUP="microchip"


А вот теперь загроздка — нам нужны HEX файлы от оригинальной программы MPLAB. Если нет винд параллельно, то придется пойти к другу и заинсталить у него оригинальный MPLAB IDE и из папки C:\program files\microchip\_где_то_тут Скопировать каталог ICD2. Там лежат прошивки для программатора.

Затем кладем наш каталог с прошивками куда угодно, главное чтоб не потерли. Запускаем Piklab.
Жмем на кнопочки: Programmer -> Settings -> Programmer selection Во вкладке Port Selection точечку на USB, переходим на вкладку правее — Specific там указывем путь к нашей папке с HEX файлами. Теперь можно закрыть окна и Piklab. Снова запустить и нажать в верхнем меню Programmer -> Connect
В логе ниже мы должны увидеть нечто вроде этого:

Connecting ICD2 Programmer on USB Port with device 16F876A…
Firmware id is 1 and we want 1
Firmware version is 2.7.2
Set target
Set target self powered: false
Hold reset
Programmer Vpp = 12.9406 V
Target Vdd = 5.04132 V
Target Vpp = 12.9406 V
Self-test
Connected.
Enter normal mode
Already in requested mode.
Read id: 16F876A (rev. 7)


Вот собственно и все :) Теперь можете создавать новый проект и писать програму для него. Установку хорошего компилятора, рассмотрю в следующей заметке.

Проблемы и пути их решения

Проблема: Piklab в логе пишет нечто подобное:
Connecting ICD2 Programmer on USB Port with device 16F876A…
USB Port: Error resetting USB device. (err=could not reset: Operation not permitted).

Решение: Поставить права доступа (crw-rw-rw-)на файл устройства в каталоге /dev/bus/usb/[шина]/[устройство]
Эти данные мы уже видели ранее, повторите команду lsusb:

Bus 001 Device 008: ID 04d8:8001 Microchip Technology, Inc. ICD2 in-circuit debugger

Проблема: Piklab ругается и просит Firmwere.
Решение: Проверьте путь к HEX файлам каталога ICD2. Так же проверьте права на устройство. См выше.

Проблема: Piklab вылетает при попытке смены настроек из нижнего левого меню.
Решение: Увы, ничем помочь не могу — производите настройки с верхнего меню.
Tags:ICD2LinuxUbuntuDebianopen sourceмикроконтроллеры
Hubs: Programming microcontrollers
Total votes 9: ↑7 and ↓2+5
Views2.6K

Popular right now