Далее будет рассказано как организовать рабочую среду для написания
программ на С для микроконтроллеров (МК) PIC18 компании Microchip.
Традиционно для программирования данных МК используется среда MPLAB и ОС Windows. С выходом MPLAB X появилась возможность разрабатывать для этих МК и под Linux. Далее будет рассказано как улучшить и ускорить процесс разработки.
Как известно, MPLAB X основан на NetBeans, которое работает на Java. Поэтому теперь MPLAB стал кроссплатформенным. Но те, кто работал со старым MPLAB'ом ощутили существенные недостатки. Мало кому новый MPLAB пришёлся по вкусу. К недостаткам MPLAB X относится прежде всего сильнейшая тормознутость. На слабых машинах новым MPLAB'ом вообще невозможно пользоваться. Нормально работающего автодополнения в MPLAB X нет. MPLAB X для Linux частенько теряет русские буквы в исходниках, хотя кодировка выставлена. Люди, работающие с PIC-контролерами предпочитают пользоваться старым 8-м MPLAB'ом. Но он есть только по Windows, а мы хотим вести разработку для PIC под Linux.
Далее предлагается способ как можно организовать разработку для PIC-контроллеров на языке С под Linux. Мы будем рассматривать серию PIC18, так как для серии PIC16 нормально работающего компилятора С не существует.
Итак, при работе в MPLAB X для Linux можно отвязать компилятор от MPLAB'а и использовать вместо создания проектов в MPLAB X Make-файлы (Makefile). Для этого нужно сначала скачать с сайта www.microchip.com компилятор mplabc18. Сам MPLAB нам не потребуется. Для работы программатора PICKit2 нужно скачать утилиту pk2cmd тоже с официального сайта. И, конечно, должна быть установлена утилита make. Как правило, в Linux она уже есть.
Далее устанавливаем компилятор C18. Предположим компилятор у нас установился в каталог /opt/microchip/mplabc18/v3.40/bin. По этому пути будут находиться собственно компилятор, который называется mcc18 и компоновщик mplink. Этот путь можно добавить к переменной PATH.
Чтобы работал программатор pk2cmd нужно к переменной пути добавить путь /usr/share/pk2. Для этого в файл ~/.profile нужно дописать следующую строку:
Теперь нам надо из С-кода получить файл HEX для прошивки в МК.
Сохраняем этот файл под именем main.c, и в том же каталоге создаём файл под именем
Makefile. Те, кто знаком с утилитой make, знают синтаксис таких файлов. Те кто не
знаком, могут ознакомиться с его синтаксисом например
здесь . Содержимое нашего Makefile'а следующее:
Традиционно для программирования данных МК используется среда MPLAB и ОС Windows. С выходом MPLAB X появилась возможность разрабатывать для этих МК и под Linux. Далее будет рассказано как улучшить и ускорить процесс разработки.
Как известно, MPLAB X основан на NetBeans, которое работает на Java. Поэтому теперь MPLAB стал кроссплатформенным. Но те, кто работал со старым MPLAB'ом ощутили существенные недостатки. Мало кому новый MPLAB пришёлся по вкусу. К недостаткам MPLAB X относится прежде всего сильнейшая тормознутость. На слабых машинах новым MPLAB'ом вообще невозможно пользоваться. Нормально работающего автодополнения в MPLAB X нет. MPLAB X для Linux частенько теряет русские буквы в исходниках, хотя кодировка выставлена. Люди, работающие с PIC-контролерами предпочитают пользоваться старым 8-м MPLAB'ом. Но он есть только по Windows, а мы хотим вести разработку для PIC под Linux.
Далее предлагается способ как можно организовать разработку для PIC-контроллеров на языке С под Linux. Мы будем рассматривать серию PIC18, так как для серии PIC16 нормально работающего компилятора С не существует.
Итак, при работе в MPLAB X для Linux можно отвязать компилятор от MPLAB'а и использовать вместо создания проектов в MPLAB X Make-файлы (Makefile). Для этого нужно сначала скачать с сайта www.microchip.com компилятор mplabc18. Сам MPLAB нам не потребуется. Для работы программатора PICKit2 нужно скачать утилиту pk2cmd тоже с официального сайта. И, конечно, должна быть установлена утилита make. Как правило, в Linux она уже есть.
Далее устанавливаем компилятор C18. Предположим компилятор у нас установился в каталог /opt/microchip/mplabc18/v3.40/bin. По этому пути будут находиться собственно компилятор, который называется mcc18 и компоновщик mplink. Этот путь можно добавить к переменной PATH.
Чтобы работал программатор pk2cmd нужно к переменной пути добавить путь /usr/share/pk2. Для этого в файл ~/.profile нужно дописать следующую строку:
export PATH=$PATH:/usr/share/pk2Проверить, что программатор работает, можно подключив его к компьютеру и к вашей отладочной плате с PIC-контроллером и написав в терминале комаду:
pk2cmd -PВ ответ программатор должен сообщить тип PIC-контроллера. Теперь содаём каталог, который назовём, например, PIC-first. В нём при помощи Вашего любимого текстового редактора создаём файл main.c, в котором и будет содержаться программа для нашего МК. Для примера будем использовать программу, которая мигает светодиодом, подключенным к ножке RB0. Содержимое этого файла следующее.
- #include "p18f452 .h" // Заменить на свой PIC.
- #include "stdlib .h"
- #include "stdio .h"
- #include "delays.h"
- #pragma config OSC = HS, OSCS = OFF // конфигурация
- #pragma config PWRT = ON
- #pragma config BOR = OFF
- #pragma config WDT = OFF
- #pragma config LVP = OFF
- void main(void) {
- INTCONbits.GIE = 0;
- PORTA = 0; // инициализация PIC
- PORTB = 0; // линии в/в
- PORTC = 0;
- LATA = 0;
- LATB = 0;
- LATC = 0;
- TRISA = 0x00;
- TRISB = 0x00;
- TRISC = 0x00;
- ADCON1 = 0x07;
- for (;;) { // главный цикл
- PORTBbits.RB0=1; // мигаем светодиодом
- Delay10KTCYx(10); // на ножке RB0
- PORTBbits.RB0=0;
- Delay10KTCYx(10);
- }
- }
В начале Makefile определены несколько переменных.
- CC = /opt/microchip/mplabc18/v3.40/bin/mcc18
- PIC = -p18F452
- INCLUDE = -I. -I/opt/microchip/mplabc18/v3.40/h
- CFLAGS = -ms -oa-
- LDFLAGS = -w -u_CRUNTIME
- LINK = /opt/microchip/mplabc18/v3.40/bin/mplink
- LIBS = -l/opt/microchip/mplabc18/v3.40/lib
- HEX = blink.hex
- all : $(HEX)
- $(HEX) : main.o
- $(LINK) $(PIC) $(LDFLAGS) $(LIBS) -o $(HEX) main.o
- main.o : main.c
- $(CC) $(PIC) $(INCLUDE) $(CFLAGS) -fo main.o main.c
- install: all
- pk2cmd -P -F $(HEX) -M
- clean:
- rm -f *.o *.hex *.err
Переменная СС указывает на исполняемый файл компилятора.
В переменную PIC нужно вписать свой микроконтроллер PIC.
Переменная INCLUDE содержит пути к заголовочным файлам. Синтаксис здесь такой же как и у компилятора gcc, но сбда нужно включать и пути к библиотечным заголовкам.
CFLAGS -- это опции компилятора. Компилятор C18 достаточно плохо документирован. Поэтому эти опции я вытаскивал, рассматривая вывод в консоль при компиляции проекта в MPLAB.
LDFLAGS -- опции линковщика. Их пришлось добывать таким же способом.
LINK -- указывает на исполняемый файл линковщика mplink.
LIBS -- это пути к стандартным библиотекам для линковщика.
HEX -- это файл HEX, которрый должен у нас получиться в итоге.
Сначала идут цели для компиляции и линковки. Здесь всё как обычно, кроме ключей командной строки компилятора и линковщика.
Следует обратить внимание на цель install. Здесь производится непосредственно программирование МК. Вызывается консольный прошивальщик pk2cmd ему передаётся через ключ -F файл HEX И если МК подключен правильно производится прошивка. Если мы хотим запитать PIC от программатора, то нужно добавить ключ -T (Power Target).
Если Ваш проект состоит из нескольких файлов, то их можно добавлять в Makefile так же как обычно. Определяем для каждого файла свою цель и добавляем их в строку 12, где происходит компоновка.
Теперь открываем терминал, переходим в каталог, где находится наш проект. И в терминале выдаём команду make. Если всё правильно, то мы должны получить вот такой вывод в консоль:
vvk@linux-bmx0:~/PIC-first> make /opt/microchip/mplabc18/v3.40/bin/mcc18 -p18F452 -I. -I/opt/microchip/mplabc18/v3.40/h -ms -oa- -fo main.o main.c /opt/microchip/mplabc18/v3.40/bin/mplink -p18F452 -w -u_CRUNTIME -l/opt/microchip/mplabc18/v3.40/lib -o blink.hex main.o MPLINK 4.40, Linker Device Database Version 1.3 Copyright (c) 1998-2011 Microchip Technology Inc. Errors : 0 MP2HEX 4.40, COFF to HEX File Converter Copyright (c) 1998-2011 Microchip Technology Inc. Errors : 0И в данном каталоге создаётся файл blink.hex, который можно записывать в микроконтроллер. Если у Вас программатор PICKit2, то можно в консоли написать make install, и произойдёт прошивка.
На этом всё. Используя данное руководство можно производить разработку для PIC18 под Linux, не используя тормозной MPLAB X.
Комментариев нет:
Отправить комментарий