1i7 (1i7) wrote,
1i7
1i7

Categories:

Подготовка к лабораторным работам с промышленной реализацией архитектуры MIPS на примере pic32

Итак, свой собственный процессор с подмножеством архитектуры MIPS мы уже сделали и проверили, как он работает на ПЛИС. Пришло время сделать последний шаг по мосту над пропастью между физикой и программированием познакомившись с промышленной реализацией  архитектуры MIPS на примере процессора pic32 и немного запрограммировав его.

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

Выбор литературы, оборудования и программного обеспечения

Литература

Programming 32-bit Microcontrollers in C. Exploring the PIC32. Lucio Di Jasio.



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

MIPS Assembly Language Programming. Robert L. Britton



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


Оборудование

Для ознакомления с процессором pic32, внутри которого реализована архитектура MIPS32, нужно выбрать удобную плату разработчика, на которую он приделан. По коду упражнений самих вводных лаб никаких объективных требований сформировать не получится, т.к. это несколько строк кода для мигания лампочками, которые будут работать на любом самом тормозном и ограниченном во всех ресурсах железе. Поэтому технические характеристики стоит подбирать под частные задачи, которыми будет интересно заняться на плате далее самостоятельно - я их здесь подробно рассматривать не буду.

Упомяну лишь, что судя по всему все чипы pic32 работают на частоте 80МГц, т.е. в первом грубом приближении идентичны. А значение играют в первую очередь такие параметры, как Flash (размер прошивки с программой) и SRAM (оперативная память, доступная программе) - доступные количества на всех платах, которые я видел, измеряются в килобайтах и за их пределы довольно легко выскочить даже на некоторых базовых задачах (например при попытке создать статический буфер для загрузки изображения). Плюс для меня значение имеет количество внешних пинов ввода-вывода и наличие всякой полезной переферии (кнопки, лампочки и встроенные дисплеи на мой взгляд только занимают место, а вот слот для sd-карты может оказаться очень кстати).

У нас на лабах используются плата ChipKIT Uno32, поэтому она будет фигурировать в качестве образца далее во всех примерах.




Мы остановились на ней потому, что во-первых, нужное количество плат нам от лица тогда еще MIPS Technologies (ныне Imagination) прислал Юрий Панчул panchul, чтобы студенты знакомились микроэлектроникой и с архитектурой MIPS. Но плата получилась довольно удачной также с той точки зрения, что с одной стороны, она совместима с экосистемой платформы Arduino, т.е. к ней можно легко подключить всякие дополнительные устройства и расширения (шилды), доступные на рынке для обычных плат семейства Arduino, а начать программировать можно в упрощенном режиме в среде mpide и программными библиотеками (для любителей digitalRead и digitalWrite из Arduino). А с другой, по сравнению с оригинальными 8мибитными Arduino, pic32 является 32хразрядным процессором, работающим на частоте 80МГц, т.е. он гораздо более производителен и на нем можно тренировать навыки программирования взрослых контроллеров с прямым доступом к внутренним регистрам (для ненавистников digitalRead и digitalWrite из Arduino) без среды mpide - на голом Си или ассемблере MIPS при помощи свободного текствого редактора и gcc или при помощи несвободной, но кроссплатформенной среды MPLAB X от Microchip. На ней даже умещается операционная система реального времени (RTOS) uos.

128 КБ Flash, 16 КБ SRAM, $27 на digilentinc.com

Еще несколько альтернатив

ChipKIT Max32 - все тоже самое, только значительно больше пинов ввода-вывода, FLASH и SRAM.



512 КБ Flash, 128 КБ RAM, $50 на digilentinc.com

ChipKIT uC32 - значительно улучшенная версия Uno32 - форм-фактор тот же, FLASH и SRAM больше, цена повыше, но все равно не сильно большая.



512 КБ FLASH, 32 КБ SRAM, $35 на digilentinc.com

Olimex DuinoMite - из всех перечисленных похоже самая интересная плата - опять форм-фактор компактной Arduino/ChipKIT Uno32, однако количество Flash и RAM идентично ChipKIT Max32 (т.е. даже больше, чем на uC32) при более низкой цене. Плюс к этому разработчики сумели вывести наружу еще больше пинов ввода-вывода.








512 КБ Flash, 128 КБ RAM, 20 на olimex.com, 1048.23 руб на terraelectronica.ru

И главный плюс - наличие в комплекте слота для микро-sd-карты, которая может очень пригодиться например для запуска на контроллере алгоритмов распознавания образов или для работы с любыми другими внешними данными. Кроме того, она продается в России на terraelectronica.ru, а в Москве можно даже забрать самовывозом.



Программное обеспечение

Набор инструментов разработки (тулчейн - toolchain - tool chain - цепь инструментов) включает в себя следующие основные элементы:
- Редактор кода.
- Компилятор (в нашем случае для ассемблера MIPS32 и языка Си), генерирующий двоичный файл прошивки (исполняемый код) для выбранного контроллера (в нашем случае PIC32). Сюда же в качестве необходимых компонент - набор системных библиотек для выбранной архитектуры и система сборки.
- Программатор, записывающий сгенерированный файл прошивки на устройство.
- (Дополнительно) инструмент отладки запущенной программы (установка точек останова, просмотр текущих значений переменных и т.п).

Все эти инструменты могут быть объединены в рамках одной интегрированной среды разработки (IDE) с графическим интерфейсом или же существовать в виде набора раздельных программ от разных производителей с графическим или консольным интерфейсом. Вопрос выбора конкретного набора - дело вкуса разработчика и потребностей проекта. Не суть дела - главное, чтобы каждая из перечисленных функций была каким-то образом закрыта.

Для Прикладной Математики, где студенты привыкли проникать в суть вещей, не боятся консоли, а используют всю ее гибкость и мощь, а также предпочитают работать со свободным программным обеспечением, используем спартанский набор в виде любого текстового редактора, компилятора gcc и набора сопутствующих инструментов, а также программный программатор avrdude, который умеет заливать прошивку на плату напрямую через интерфейс USB.

Замечание: Кроме того стоит отметить, что в рамках курса использование отдельных инструментов с открытым исходным кодом вне состава IDE будет более правильно, т.к. дает лучшее представление о том, с какими дополнительными задачами придется столкнуться разработчику собственной аппаратной архитектуры - как минимум создать собственный транслятор собственного ассемблера в собственный машинный код.

Для проверки работоспособности всей цепочки инструментов скомпилируем и зальем на плату такую максимально простую программу, которая не делает вообще ничего - даже не печатает никуда "Hello world" и тем более не мигает лампочкой (хотя в случае с программированием микроконтроллерных плат правильнее будет даже не мигает лампочкой и тем более не печатает никуда "Hello world").

task0-check-toolchain/main.c

/**
 * Пустая программа - проверить компилятор и загрузку прошивки на плату.
 */
void main() {  
    while(1) {
    }
}


Если коротко:
1. Создаем файл main.c в каталоге task0-check-toolachain с кодом программы.
2. Качаем архив с модифицированной для PIC32 ChipKIT mpide и распаковываем в /opt.
3. Качаем Makefile и копируем в каталог task0-check-toolachain рядом с main.c.
4. Внутри каталога task0-check-toolachain с main.c и Makefile'ом в командной строке набираем команду make и получаем файл с прошивкой task0-check-toolachain/bin/.
5. Подключаем плату через провод USB, прошиваем плату из командной строки не выходя из каталога task0-check-toolachain командой "make upload".
6. Убеждаемся, что все прошло без ошибок.


Теперь то же самое с нюансами, ссылками, картинками и рассуждениями.

Редактор кода

В удобном месте создаем специальный каталог (например /home/user/Documents/task0-check-toolchain), внутри него текстовый файл main.c и печатаем или вставляем в него код программы в любом удобном текстовом редакторе.



Компилятор Си и транслятор ассемблера в машинный код

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

Возьмем gcc (Gnu Compiler Collection) - один из самых популярных компиляторов в мире, умеет генерировать код для всех мыслимых архитектур, в том числе для MIPS32.

Но для того, чтобы сгенерировать код для MIPS32 на обычном компьютере с процессором AMD/Intel (т.е. осуществить так называемую кросс-компиляцию), обычно используется специальная сборка компилятора gcc вместе с набором разных дополнительных утилит в частности с транслятором языка ассемблера в машинный код.

Чтобы заполучить эту сборку, можно выбрать один из следующих путей:
- Поискать пакеты в репозиториях текущего дистрибутива Linux.
- Собрать ее самостоятельно из исходников или скачать готовый архив с двоичной сборкой - подробные инструкции и готовые сборки от Сергея Вакуленко ramlamyammambam.
- Скачать сборку от Digilent Inc и Microchip, которая идет в комплекте в архиве со средой mpide для чипкитов.

Замечание: По второму пункту собирать из исходников не пробовал, а бинарная сборка компилятора для архитектуры mipsel хотя и сгенерировала файл прошивки и им даже получилось прошить PIC32 на плате ChipKIT, в конечном итоге она оказалась неработоспособной (лампочки не мигали, хотя должны были). Может быть что-то не срослось с нюансами инициализации или не хватило какого-нибудь параметра при сборке компилятора или что-то еще - разбираться пока не стали, хотя проблема очевидно устранима.

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

Необходимые инструкции по установке для разных операционных систем есть на сайте и внутри соответствующих архивов, ниже немного подробностей для Linux.

Итак, скачали архив (для Linux текущая на момент поста версия mpide-0023-linux32-20111221.tgz), при помощи штатного архиватора распаковываем в любой каталог (можно в том числе домашний каталог пользователя), я далее исхожу из того, что он распакован в /opt (потребуются права root).

Получили каталог /opt/mpide-0023-linux32-20111221 с содержимым архива. Для удобства переименуем его в /opt/mpide или создадим символьную ссылку с тем же именем ("ln -s mpide-0023-linux32-20111221 mpide"), т.е. теперь /opt/mpide содержит содержимое архива со всеми необходимыми инструментами внутри.



Вообще внутри ахива содержится модифицированная для работы с PIC32 на платах ChipKIT среда разработки Arduino - среда mpide (с на редкость убогим текстовым редактором, посоревноваться с которым в отсутствии элементарных функций может разве только notepad.exe), портированные на PIC32 библиотеки с API Arduino, документацией Arduino и т.п. (подробнее о проекте на chipkit.net). Для запуска mpide при желании можно также устновить Java, но нам все это счастье в большей степени сейчас не будет нужно.

Первая необходимая нам часть находится в каталоге /opt/mpide/hardware/pic32/compiler - это сборка компилятора Си, транслятора ассемблера MIPS32 и всех сопутствующих инструментов, которые умеют генерировать исполняемый код для PIC32. В частности список основных утилит можно посмотреть в /opt/mpide/hardware/pic32/compiler/pic32-tools/bin:



Видим в частности pic32-gcc (компилятор Си), pic32-as (транслятор ассемблера MIPS32), линковщик pic32-ld и т.п.

Сборка прошивки

Итого, все необходимые составляющие для того, чтобы собрать из текстового файла с программой на Си двоичную прошивку для платы PIC32 ChipKIT, на месте. Осталось только эту прошивку собрать. Можно почитать документацию по параметрам командной строки gcc и ar, изучить содержимое каталогов с инструментами на предмет нахождения системных библиотек и заголовчных файлов для PIC32 и в конечном итоге запустить компилятор вручную (что-то типа "pic32-gcc main.c", только с кучей дополнительных параметров в виде путей к заголовочным файлам и библиотекам).

Но мы немного облегчим себе жизнь и воспользуемся готовым сборочным скриптом (мейк-файлом) makefile, который уже знает структуру каталогов сборки mpide, вызовет все необходимые для сборки прошивки команды и передаст им нужные параметры (см пост Сергея Вакуленко, подробности происхождения файла судя по всему здесь chipkit.org/forum > chipKIT Compatible Arduino-based Makefile > github.com/peplin/arduino.mk). Очевидно, что в системе должна быть установлена утилита make, которая с незапамятных времен доступна в репозиториях любого дистрибутива Linux и у многих скорее всего уже установлена.

Внутри мейк-файла нужно поправить всего одну строку (или убедиться, что она уже имеет правильное значение) - для переменной MPIDE_DIR указать путь до каталога с распакованным mpide - в нашем случае:

task0-check-toolchain/Makefile
MPIDE_DIR = /opt/mpide





Теперь внутри каталога task0-check-toolachain с исходным файлом main.c и Makefile'ом в командной строке набираем команду make и наблюдаем процесс сборки (имя файла с исходным кодом main.c нигде отдельно указывать не нужно - Makefile сам найдет его автоматически в текущем каталоге по расширению ".c"):

> make



Замечание: Посмотрев высод с логом сборки в командной строке можно убедиться, что для сборки используются утилиты pic32-gcc, pic32-g++, pic32-ar, pic32-objcopy и pic32-objdump просто с указанием разных настроек и длинных путей к каталогам с заголовочными файлами и библиотеками в параметрах. Также видно, но Arduino-специфические библиотеки и заголовочные файлы здесь не используются, поэтому данный код будет легко перенести в сборочную среду с другим набором инструментов, в частности в более функциональную коммерческую среду разработки MPLAB от Microchip.

Если ошибок нет, в текущем каталоге должен появиться подкаталог build, внутри которого можно найти hex-файл target.hex - это и есть прошивка для нашей платы (target.bin, target.elf, target.dis судя по всему являются вариантами двоичной сборки той же прошивки в других форматах):



Программатор

Финальное действие - залить сгенерированный hex-файл с прошивкой на плату и убедиться, что процесс прошел без сообщений об ошибках, т.к. тестировать работоспособность пустой программы большого смысла нет.

Для решения этой задачи в общем случае существует множество разных аппаратных, программных и аппаратно-программных решений, некоторые из которых будут также будут упомянуты ниже. В нашем случае самый дешевый и быстрый способ - залить прошивку на плату через mini-usb кабель без специальных промежуточных устройств при помощи чисто-программного программатора avrdude из состава все той же mpide, модифицированной для PIC32 ChipKIT.

Вообще говоря все, что для этого нужно - это подключить плату через mini-usb кабель к компьютеру и набрать команду "make upload" все в том же каталоге task0-check-toolchain с исходным файлом main.c и Makefile'ом - скрипт вызовет avrdude для заливки файла target.hex на плату, которую он должен определить автоматически.



В выводе командной строки также можно посмотреть, каким образом запускается avrdude (при необходимости можно повторить это самостоятельно без мейкфайла):

/opt/mpide/hardware/tools/avrdude -q -V -p 32MX320F128H -C /opt/mpide/hardware/tools/avrdude.conf -c stk500v2 -b 115200 -P /dev/ttyUSB0 -U flash:w:build/target.hex:i

Замечание: в частности отсюда видно, что avrdude использует специальный конфигурационный файл avrdude.conf опять же из состава ChipKIT mpide. Это в том числе объясняет тот факт, что для прошивки контроллеров PIC32 используется программа, которая изначально была предназначена (и это напрямую следует из ее названия) для прошивки контроллеров AVR, которые используются в оригинальной Arduino. Просто разработчики PIC32 ChipKIT создали для него специальный конфигурационный файл и этого судя по всему оказалось достаточно для того, чтобы он научился работать с чипкитами. Также из этого следует, что с большой долей вероятности сборка avrdude с официального сайта не заработает для прошивки плат PIC32 ChipKIT (если только они не включили этот конфигурационный файл для ChipKIT в основную ветку - нужно проверять), т.е. это еще один повод скачать архив mpide для ChipKIT помимо рабочих сборок компилятора.

При удачном исходе процесса прошивки вывод должен выглядеть примерно следующим образом:

avrdude: AVR device initialized and ready to accept instructions
avrdude: Device signature = 0x504943
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
         To disable this feature, specify the -D option.
avrdude: current erase-rewrite cycle count is -1145324613 (if being tracked)
avrdude: erasing chip
avrdude: reading input file "build/target.hex"
avrdude: writing flash (5332 bytes):
avrdude: 5332 bytes of flash written

avrdude: safemode: Fuses OK

avrdude done.  Thank you.


Подключение платы (для прошивки с avrdude)

В конечном итоге подключенная через USB плата должна распознаться в любой операционной системе как виртуальный последовательный порт (или COM-порт или Serial-порт), с которым уже будет взаимодействовать прошивающая утилита - в нашем случае avrdude.

Инструкции по подключению платы к компьютеру можно найти внутри архива с mpide в файле readme.txt.

Пара нюансов.

Для Windows. В файле написано, что необходимые драйверы содержатся внутри архива с mpide в каталоге "drivers/FTDI", однако на Windows7 и Windows8 наблюдал с процессом подключения устройства какие-то не очень внятные проблемы - драйвер в этом каталоге толи не определялся, толи определялся, но плата все равно не распознавалась как виртуальный COM-порт. В конечном итоге все заработало после того, как при подключении платы был выбран вариант искать драйверы нового устройства в интернете.

Для Linux. Как и написано в инструкции, необходимый драйвер существует в ядре Linux с незапамятных времен, и никаких дополнительных драйверов устанавливать действительно не нужно. Устройство должно распознаться сразу после подключения к компьютеру через кабель mini-usb. Проверить можно например через командную строку - сразу после подключения провода вбить команду dmesg:

> dmesg
[48339.798033] usb 3-1: new full-speed USB device number 7 using ohci_hcd
[48339.958072] usb 3-1: New USB device found, idVendor=0403, idProduct=6001
[48339.958080] usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[48339.958083] usb 3-1: Product: FT232R USB UART
[48339.958086] usb 3-1: Manufacturer: FTDI
[48339.958088] usb 3-1: SerialNumber: A6009BAK
[48339.964162] ftdi_sio 3-1:1.0: FTDI USB Serial Device converter detected
[48339.964222] usb 3-1: Detected FT232RL
[48339.964225] usb 3-1: Number of endpoints 2
[48339.964228] usb 3-1: Endpoint 1 MaxPacketSize 64
[48339.964231] usb 3-1: Endpoint 2 MaxPacketSize 64
[48339.964233] usb 3-1: Setting MaxPacketSize 64
[48339.968140] usb 3-1: FTDI USB Serial Device converter now attached to ttyUSB0


Видно, что устройство определилось и появилось в системе в виде файла /dev/ttyUSB0. Именно его и использует avrdude.

Только нужно убедиться, что текущий пользователь имеет права записи в это устройство - иначе avrdude не сможет работать. В моем дистрибутиве (OpenSUSE 12.3) судя по информации о файле /dev/ttyUSB0:

> ls -l /dev/ttyUSB0
crw-rw---- 1 root dialout 188, 0 Apr  8 00:04 /dev/ttyUSB0

файл устройства создается принадлежащим группе dialout с правами чтения и записи для этой группы и запрещением чтения и записи для всех остальных пользователей не членов группы. Соответственно добавление текущего пользователя в группу dialout (это можно сделать системными средствами) дает ему полный доступ к файлу устройства и avrdude при этом должен работать. В других дистрибутивах могут быть нюансы например с названием группы, но смысл в общем такой.

В крайнем случае всегда можно сделать (правда от рута):
> sudo chmod 666 /dev/ttyUSB0

Это даст права на чтение и запись устройства для всех пользователей системы, правда будет действовать только до очередного втыкания-вытыкания провода.


Дополнительно

Инструменты для самостоятельного изучения в дополнение к перечисленному набору или на замену одного или нескольких его элементов.



Использование свободного отладчика GDB (Gnu Debugger) с PIC32 - для нормального процесса разработки с точками останова и просмотром текущих значений переменных для программы, запущенной на плате. Требуется аппаратный программатор-дебаггер - например PICkit3 (см ниже).

Для тех, кто не боится вендор-лока на проприетарное программное обеспечение, любит работать в интегрированных средах разработки (IDE) с комфортным автодополнением, графическим отладчиком и кнопкой "собрать проект и загрузить на плату" или в своих проектах действительно нуждается в специализированных инструментах разработки, которые не предоставляет стек свободного программного обеспечения, в компании Microchip создали среду разработки MPLAB X. К счастью, несмотря на проприетарность, среда кроссплатформенная и доступна для Linux, Mac и Windows. Графический интерфейс основан на платформе Netbeans со всеми приятными вытекающими.



Среда бесплатная по крайней мере в базовой комплектации.

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

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

MPLAB может легко работать как с gcc, так и с коммерческими компиляторами Microchip.

Также MPLAB не желает (судя по всему вполне обоснованно) работать в прямой связке USB+контроллер например через avrdude и умеет прошивать устройства только при помощи специальных аппаратных программаторов-дебаггеров, которые продаются в виде дополнительных устройств, которые зачастую могут стоить дороже, чем собственно сама плата. Варианты для выбора есть, лично я буду рекомендовать PICkit3, т.к. во-первых, это последняя версия программатора от самого Микрочипа, а во-вторых, некоторое количество PICkit'ов3  нам прислал Юрий Панчул, поэтому в дальнейшем (уже за пределами 6й лабораторной работы) при случае буду исходить из того, что этот PICkit3 у меня уже есть.



$45 на microchip.com

Замечание: Дополнительная рекомендация к покупке PICkit3 или любого другого аппаратного программатора - это исключительная глючность процесса прошивки плат в связке ChipKIT+USB+avrdude, описанная выше. Плата может прошиться несколько раз, а потом случайным образом на очередную итерацию захотеть перестать прошиваться зависнув на статусе "Uploading"; в некоторых случаях выдергивание-вставляние USB шнура помогает, в некоторых случаях - нет. Кто из главных фигурантов - ChipKIT, USB или avrdude - виноват в неподабающем поведении я не знаю, вероятно этому есть разумные объяснения и у проблемы существует решение, но разобраться в проблеме до сего времени было недосуг, поэтому просто рекомендую иметь это ввиду.

Для PICkit3 можно использовать следующее программное обеспечение:

- PICkit 3 GUI and Scripting Tool (см ссылку "PICkit 3 GUI and Scripting Tool v3.00 BETA" на странице PICkit3 на microchip.com). Доступен только для Windows. Позволяет заливать прошивки из hex-файлов на платы, подключенные к программатору, а также перепрошивать сам программатор - переводить его из режима "Scripting" в "MPLAB" и обратно (MPLAB будет работать с PICkit3 только если он находится в режиме MPLAB, а чтобы работать с платами через интерфейс Scripting Tool, PICkit3 сначала придется перевести в режим "Scripting").



- MPLAB X - кнопка "прошить плату" прямо на панели инструментов - Linux, Mac, Windows. Будет работать с PICkit3 только в режиме "MPLAB".


- Отдельное приложение-программатор MPLAB IPE (Integrated Programming Environment), позволяет загружать на плату hex-файлы. В составе MPLAB. Linux, Mac, Windows. Будет работать с PICkit3 только в режиме "MPLAB".



- Консольная утилита с открытым исходным кодом pic32prog от Сергея Вакуленко. Умеет работать в том числе с PICkit3, правда только в режиме "Scripting". Поэтому благодаря ей вполне возможно собрать свободный стек разработки linux+gcc+pic32prog+PICkit3+PIC32 на ChipKIT. Однако, чтобы перевести PICkit3 в режим "Scripting", похоже все-таки придется один раз запустить на Windows Scripting Tool.


Код лаб на github, подсветка синтаксиса.
Tags: chipkit, microchip, mips, pic32, книги, процессоры, цифровая электроника для программистов
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 5 comments