vak: (Default)
[personal profile] vak
Новый проект: ejtagproxy, утилита для отладки микроконтроллеров PIC32 с помощью GNU debugger.  Подключается к процессору через адаптер PICkit2, PICkit3 scripting edition или Olimex JTAG USB-Tiny.  Реализует стандартный GDB remote serial протокол.  Поддерживает все семейства PIC32, включая mx1/mx2.  Работает под Linux, Windows и Mac OS X.  Годится не только GDB, но и другие его инкарнации: Insight, DDD, Eclipse.

Date: 2012-07-20 17:44 (UTC)
From: [identity profile] teewoon.livejournal.com
Оооо! Клевая штука. Даешь GDB-compatible тулзов - всяких и разных!
p.s.: где-то видел отладчики с ethernet-интерфейсом, где gdb по сети пробрасывался.

Date: 2012-07-21 19:11 (UTC)
From: [identity profile] 1i7.livejournal.com
Здорово, теперь понятно, зачем была нужна эта штука - Юрий Панчул прислал несколько наборов PICkit 3 к чипкитам, но пока от них использовали только мини-юсб провод для заливки прошивки на плату.

Date: 2012-07-25 15:22 (UTC)
From: [identity profile] 1i7.livejournal.com
Вот это думаю очень здорово бы вписалось в наш осенний практический семестр.

Сейчас мы на школе за несколько занятий освоили базовые вещи в примитивном режиме ардуины (ввод/вывод) - углубляться дальше в эту платформу (изучать всякие шилды и соответствующие вызовы mpide) не имеет смысла - теперь школа автоматически вылилась в проектный практикум - "программисты" пока опять в таком же простом режиме пробуют управлять разными внешними двигателями типа обычного 5тивольтового моторчика, моторчика помощнее 12вольт (питание от внешнего источника, а не от платы), шаговыми двигателями. Машиностроители и автомибилисты в это время начали работать над внешними корпусами пары роботов (которые мы надеем распечатать на 3д-принтере), электронщики соединяют все это дело вместе проводами. В общем, когда дело дойдет (а это уже следующий шаг) до реализации на всем этом деле неких конкретных алгоритмов, вся эта алгоритмическая конкретика типа прерываний и переключений станет крайне необходимой, т.к. одним ардуиновским циклом loop() я думаю будет уже невозможно отделаться.

И далее тут можно выделить 2 возможных направления:

Первый относительно простой путь - это изучить, каким образом все эти алгоритмические строительные блоки можно применять в рамках стандартных решений (насколько я понимаю, речь идет о применении RTOS - я пока туда еще сам не углублялся).

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

Первый подход мог бы оказаться более универсальным в плане охвата аудитории и получения быстрых практических результатов, на которые мы нацелены. Как я говорил, у нас сейчас совместно взаимодействуют не только прикладники, но и автомобилисты и машиностроители и электронщики - у них немного своя специфика работы в этой области. Они тоже пытаются программировать контроллеры самостоятельно при помощи каких-то своих инструментов высокого уровня абстракции типа матлаба или каких-то графических тулзовин, которые для них потом генерируют необходимый низкоуровневый код. Но при этом они совершенно не прочь спустить на несколько уровней ниже - уровень с/с++ для них вполне подходит, т.к. они в текущем подходе на практике ощущают множество недостатков и сообщают о них - работа высокоуровневыми инструметами логично имеют побочный эффект в виде тяжелого кода, который практически не поддается оптимизации или заточке под конкретные задачи/железо. При этом с с/с++ они играть сами вполне могут тоже, но при условии, что для них будет обеспечен низкий порог вхождения в плане выбора инструментов, возможности быстрого запуска их алгоритмов на реальном железе (реальные платы в аудитории, а не эмуляторы) и предоставления некоего набора стандартных путей решения их стандартных задач (элементароно - как сделать таймер). На первом этапе у нас это уже получилось достигнуть и я получил от них очень позитивные отзывы даже после первых простых занятий (их впечатлило, что вот перед ними самая минимальная программа на с, на которой они вполне способны реализовать своих алгоритмы и вот она уже запущена на плате без кучи монстроузных промежуточных слоев).

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

Date: 2012-07-25 15:55 (UTC)
From: [identity profile] 1i7.livejournal.com
Кстати, Сергей, а можно ли как-нибудь использовать PICkit 3 для прошивки контроллеров PIC16 под Linux? У меня один студент спаял контроллер шагового двигателя по схеме из интернета - на ней в том числе используется контроллер PIC16, к которому уже сразу прилагается готовый hex-файл, готовый к прошивке. Но сходу сегодня сделать это в компьютерном зале не получилось.

Нашли вот такую инструкцию http://hackaday.com/2010/11/03/how-to-program-pics-using-linux/ с микрочиповской утилитой pk2cmd (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en023805), но она судя по всему подходит только для PICkit 2 (хотя даже при этом не поддержвается официально микрочипом), а для PICkit 3 не подходит (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en538340), а специальной линуксовой версии для PICkit 3 микрочип видимо решил вообще не писать.

Также нашелся еще какой-то PonyProg (http://www.lancos.com/ppwin95.html), который уже давно протух - линуксовый бинарь не запустился из-за проблем с glibc, из исходников не скомпилировался по каким-то своим причинам, в которых не было времени разбираться, ну и в конечном итоге он все равно работал только с COM-портом, а не с USB (поэтому не полулось прошить им и с виндовой версии тоже).

Нашли также ваш pic32prog (http://code.google.com/p/pic32prog/), но в аудитории его сегодня запустить не получилось, т.к. бинарных сборок не нашлось, а интернет у нас через прокси для браузеров и как его приделать к svn, который качает из командной строки, не было времени разбираться. Ближайшие дни будут пробовать это сделать дома - сейчас вся надежда на него, но пока не ясно, сможет ли он прошить PIC16.

Вообще не знаю, как с этим дела обстоят у других производителей, а у микрочипа наблюдается какая-то странная политика в плане предоставления вспомогательных инструментов для собственных разработчиков - вместо того, чтобы брать и решать на их чипах реальные задачи, приходится тратить время на какие-то второстепенные вещи и разбираться с запуском простых утилит, хотя по моейло логике им должно быть выгодно, чтобы они работали вообще где угодно, а вместо этого они специально ставят такие глупые палки в колеса своим же пользователям (кстати, MPLAB с диска PICkit 3 тоже по какой-то причине не установился на Windows, который был в аудитории на ноутбуке, так что дело видимо не только с пользователями Linux). Возможно я просто отвык иметь дело с проприетарными разработками. Надеюсь при случае получится изложить им эту позицию.
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] 1i7 сослался на вашу запись в «Летняя шЛетняя школа по основам мехатроники - промежуточные итоги (http://1i7.livejournal.com/5983.html)» в контексте: [...] ать, а продвинутые инструменты разработки и интерфейсы программирования типа gnu make, gcc, gdb [...]
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] panchul сослался на вашу запись в «Новости про микроконтроллерные приложения MIPS из Нижнего Новгорода, Калифорнии, Аризоны и Китая (http://panchul.livejournal.com/215899.html)» в контексте: [...] http://ramlamyammambam.livejournal.com/194897.html [...]
From: [identity profile] livejournal.livejournal.com
Пользователь [livejournal.com profile] 1i7 сослался на вашу запись в записи «Подготовка к лабораторным работам с промышленной реализацией архитектуры MIPS на примере pic32 (http://1i7.livejournal.com/12327.html)» в контексте: [...] одного или нескольких его элементов. Использование свободного отладчика GDB (Gnu Debugger) с PIC32 [...]

Date: 2014-06-04 10:51 (UTC)
From: [identity profile] alec_v.livejournal.com
Вот еще Segger подтянулся.

http://www.segger.com/pr-jlink-pic32.html

А это означает поддержку Eclipse. Оригинальные конечно уж очень дорогие, но Китай нас спасет :)

Date: 2014-08-27 10:58 (UTC)
From: [identity profile] alec_v.livejournal.com
Сергей, а нельзя добавить в ejtagproxy поддержку Digilent Chikit Programmer

https://digilentinc.com/Products/Detail.cfm?NavPath=2,892,1078&Prod=chipKIT%20PGM

не уверен, что он поддерживает JTAG, вероятно только ICSP

В MPLAB X он называется Licensed Debugger: Chipkit Programmer