?

Log in

No account? Create an account
Как начать работать с Microchip PIC32? Часть вторая. Пошаговая инструкция для начала работы с MPLAB - Юрий Панчул [entries|archive|friends|userinfo]
Money can buy bandwidth. Latency requires bribing God.

[ website | My Website ]
[ userinfo | livejournal userinfo ]
[ archive | journal archive ]

Как начать работать с Microchip PIC32? Часть вторая. Пошаговая инструкция для начала работы с MPLAB [Feb. 6th, 2013|11:00 pm]
Yuri Panchul
[Tags|, ]

Продолжение поста выше - http://panchul.livejournal.com/246019.html

А как же скомпилировать программу для этой платы и все запустить? Прежде всего нужно установить на вашем компьютере Microchip MPLAB Х, которую можно скачать отсюда:
http://www.microchip.com/pagehandler/en-us/family/mplabx/#downloads

Существуют версии MPLAB X для Linux, Windows и Mac.

Когда вы все установите, а также (если вам нужно) скачаете файлы моего примерчика с Google code
http://code.google.com/p/pic32-examples/source/browse/trunk/#trunk%2Fshowroom%2Fcalculator
или с моего сайта
http://panchul.com/education/2013_02_03_calculator/sources/
то дальше последовательность действий таковая:

Стартуем MPLAB X. Почему-то процесс загрузки занимает много времени на моем ноутбуке:




Видим стартовую страницу, закроем ее, чтобы не мелькала:



Стартовое состояние:



Создадим новый проект:



Дальше:



Выберем микроконтроллер - PIC32MX320F128H:



Выберем программатор / отладчик:



Выберем C-компилятор - XC32:



Выберем директорию и имя проекта:



Проект создан:



Нажмем на правую кнопку мыши там где source files:



Выберем файлы с кодом на C (и на ассемблере, если у вас такие есть):



Файлы добавлены:



Правую кнопку мыши на calculator:



Входим в Properties:



Выбираем Include directories:



Вводим директорию:



Ввели, нажали OK:



Возвращаемся в Properties:



Входим в оптимизации. Делаем уровень оптимизаций "1". Если же у нас платная версия (о ней преподавателям стоит попросить Microchip), то вводим "3":



Запускаем программу:



Все скомпилировалось:



Теперь программа загружается через USB соединение и программатор в микроконтроллер. На программаторе должны мигать лампочки:



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



А потом нажать на паузу:



Программа остановится. Теперь ее можно проходить пошагово, ставить breakpoints, смотреть переменные и т.д. (впрочем breakpoints стоит сразу поставить, но я не буду нудить объясняя основы отладки):



Можно также отлаживать в режиме дизассемблирования. Для этого нужно пойти вот сюда:



Перед нами открывается окно с ассемблером MIPS:



Ура! Вы дочитали (или досмотрели) мой пост до конца.


Если вы используете или будете использовать MPLAB X, то на какой платформе?

Linux
5(29.4%)
Windows
5(29.4%)
Mac
3(17.6%)
Я не использую и не буду использовать MPLAB X
3(17.6%)
Из-за бугра плюете?
1(5.9%)
LinkReply

Comments:
[User Picture]From: goryachee_leto
2013-02-07 09:10 am (UTC)
Спасибо за интересный пост...
(Reply) (Thread)
[User Picture]From: panchul
2013-02-07 05:55 pm (UTC)
Пожалуйста!
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2013-02-07 01:15 pm (UTC)
Юрий, а можете подробнее рассказать, как просходит отладка? Вот как устанавливается и как срабатывает брейкпоинт? Чип, что, при включении формирует массив векторов прерываний?
(Reply) (Thread)
[User Picture]From: panchul
2013-02-07 05:55 pm (UTC)
Протокол отладки знает на интимном уровне и со всеми подробностями Сергей Вакуленко ramlamyammambam, лучше у него спросить
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2013-02-07 06:04 pm (UTC)
Ну ок, когда Сергей сюда заглянет, интересно было бы его послушать.
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: sergegers1
2013-02-08 04:43 pm (UTC)
Это я знаю
(Reply) (Parent) (Thread)
(Deleted comment)
[User Picture]From: sergegers1
2013-02-08 05:33 pm (UTC)
Вопрос не в том, как вообще работает механизм отладки, а как он устроен на данном конкретном железе.
(Reply) (Parent) (Thread)
[User Picture]From: ramlamyammambam
2013-02-09 05:48 am (UTC)
Для установки точек прерывания служат специальные регистры IBA/IBM/IBC (по выполнению) и DBA/DBM/DBC (по чтению и записи). Подробнее все описано в спецификации, которая называется EJTAG: http://www.mips.com/secure-download/index.dot?product_name=/auth/MD00047-2B-EJTAG-SPC-06.10.pdf
Я могу рассказать с любой степенью подробности, если вы будете задавать уточняющие вопросы.
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2013-02-09 11:13 am (UTC)
Честно говоря, лень регистрироваться, спрашиваю в основном из любопытства. У меня тогда ещё пара вопросов. То есть, видимо, когда брекпоинт срабатывает, генерируется некое прерывание. А таблица прерываний создаётся самим процессором при загрузке? А решим отладки заключается в переписывании соответствующего вектора прерывания?
И ещё, как адресуется память? У Intel много хитрых механизмов для разных режимов, в частности, трансляция виртуальных адресов в реальные и поддержка пейджинга.
(Reply) (Parent) (Thread)
[User Picture]From: ramlamyammambam
2013-02-10 02:51 am (UTC)
По брейкпойнту возникает прерывание типа debug exception. Адрес текущей команды сохраняется в специальном регистре DEPC, процессор переключается в режим отладки и прыгает на адрес 0xFF200000. Это так называемый сегмент отладки, диапазон адресов, который появляется только в режиме отладки. Все запросы от процессора к сегменту отладки аппаратно переадресуются к JTAG-адаптеру. То есть софт на управляющем компьютере (отладчик GDB или другой) начинает кормить отлаживаемый процессор нужными инструкциями MIPS, чтобы получить от него содержимое регистров, памяти и др. Под конец отладчик выдает инструкцию DRET, и процессор переходит в обычный режим, продолжая выполнение с адреса в регистре DEPC.

Режим отладки - это бит DM в специальном аппаратном регистре Debug (описан в спецификации EJTAG). Он много чего переключает в процессоре. Все знают про два основных режима процессора: User mode и Kernel mode. Так вот Debug mode - это третий режим, более приоритетный.

У MIPS тоже есть трансляция адресов и пейджинг, называется режим TLB. Могу посоветовать книжку "See MIPS Run", где все это замечательно описано.
(Reply) (Parent) (Thread)
[User Picture]From: sergegers1
2013-02-10 11:31 am (UTC)
Спасибо за ответы. Если доведётся окунуться в MIPS, теперь я знаю, с чего начать.
(Reply) (Parent) (Thread)