Портировали крутые лабораторные работы из курса по микроконтроллерам и операционным системам реального времени на недорогую (25 евро), но мощную плату PIC32-EMZ64 от Olimex.
С характеристиками PIC32-EMZ64 можно ознакомиться по ссылке: https://www.olimex.com/Products/PIC/Development/PIC32-EMZ64/open-source-hardware
Плата содержит мощный микроконтроллер PIC32MZ EF, работающий на частоте 200МГц, с кешами программ и данных, Floating Point Unit и Memory Management Unit. На плате есть аудио вход, аудио выход, USB device/host, Ethernet, OLED дисплей, разъем для micro sd карт, кнопки и светодиоды, разъем с интерфейсами UART, SPI, I2C, CAN.
Плата хорошо задокументирована и является полностью опенсорсной. Есть все необходимые чертежи для самостоятельного производства. К плате прилагается много примеров, в частности по работе со звуком (MP3 плеер) и сетью (веб сервер). Есть возможность запуска операционной системы реального времени FreeRTOS, а также Unix подобной ОС LiteBSD: https://github.com/sergev/LiteBSD/wiki/Olimex-EMZ64-board
А теперь немного о лабораторных работах, которые мы портировали на эту плату. Курс, включающий данные лабы, разработал профессор Александр Дин из университета штата Северная Каролина, США. Общее описание можно читнуть здесь: https://habrahabr.ru/post/282001
Сам курс можно бесплатно скачать с сайта Imagination Technologies, предварительно зарегистрировавшись в университетской программе компании: https://goo.gl/m8giYM
По материалам курса есть несколько видосиков: https://www.youtube.com/playlist?list=PLSTiCUiN_BoIzlrRkZjBMUVF-SIoaYbLl
Все начинается с простого моргания светодиодом. Потом вы плавно изучаете процесс программирования встраиваемых систем и их структуру, периферию микроконтроллера, выполнение нескольких задач при помощи конечных автоматов, работу с коммуникациями (UART, SPI, I2C), прерывания, оцифровку аналоговых сигналов при помощи АЦП, таймери/счетчики, ШИМ. Во второй половине курса изучаете MIPS ядро контроллера и его программирование на ассемблере. Разбираетесь, как на ассемблере реализуются те, или иные конструкции языка Си, как реализована кеш память и конвейер процессора, как они влияют на эффективность вычислений. Ближе к концу курса изучается использование операционной системы реального времени FreeRTOS. В одной из последних лаб пишется простенький профайлер для оценки производительности отдельных частей проограммы по выводу анимации на OLED дисплей. В целом, курс и лабы дают очень много полезных практических знаний и возможность прочуствовать специфику программирования встраиваемых систем.
Изначально эти лабораторки были ориентированны на дорогую плату WiFIRE от Digilent (80$): http://store.digilentinc.com/wi-fire-wifi-enabled-pic32mz-microcontroller-board
Мы же портировали лабы на дешевую плату PIC32-EMZ64 от Olimex (25 евро) и теперь практически у каждого университета Украины есть возможность изучать современные микроконтроллеры по этому чудесному курсу. Набор из 5-ти плат с программаторами и доставкой будет стоить порядка 150 евро. Такая сумма посильна для многих кафедр.
Исходный код лаб для платы PIC32-EMZ64 можно скачать здесь: https://drive.google.com/file/d/0B9fI2BqoGDwTcHBpbHYybUtqRWM/view?usp=sharing
Поскольку изначально лабы не были в открытом доступе и скачивались после предварительной регистрации на сайте Imagination Technologies, пока решили не выкладывать их на github.
Благодаря помощи Yuri Panchul у нас в лабе есть платы обеих типов (PIC32-EMZ64 от Olimex и WiFIRE от Digilent). Поэтому пройти такой курс и сделать лабы может любой желающий. Если хотите поработать с данными платами - велкам. Это бесплатно, как и использование прочего железа в нашей лабе ☺
#kpi_lampa