Далее будет рассказано как организовать рабочую среду для написания
программ на С для микроконтроллеров (МК) 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); } }
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В начале Makefile определены несколько переменных.
Переменная СС указывает на исполняемый файл компилятора.
В переменную 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.
Комментариев нет:
Отправить комментарий