22 January 2013

Ubuntu 12.04にMPLAB X IDEとXC 8コンパイラー、Pickit 2ツールのインストール

UbuntuでPICマイコンのソフトウエア作成を行うためのツール一式のインストール方法

検証環境

・Ubuntu 12.04 LTS, 14.04 LTS, 16.04LTS (後日検証済)
・Pickit 2 (中国製互換製品 Sure Electronics Pickit 2)

Microchip社のPICkit2関連のツールの公開が終了してしまう可能性があるため、念のため直リンクと個人的保存を『Sure ElectronicsのPICkit 2購入 (及びツール類の保存)』の記事に記載している。

Pickit 2用ツールのインストール

Microchip社PICkit 2 Development Programmer/Debugger公式ページに掲載されている「PK2CMD V1.20 Linux & Mac OS X Source Code with Makefile」をダウンロードしてインストールする。

$ wget http://ww1.microchip.com/downloads/en/DeviceDoc/pk2cmdv1.20LinuxMacSource.tar.gz
 
$ tar xvf pk2cmdv1.20LinuxMacSource.tar.gz
 
$ cd pk2cmdv1.20LinuxMacSource

ここで、最新のデバイス定義ファイルPK2DeviceFile.datに対応させるため、ソースコードcmd_app.hを一部分修正する(デバイス定義ファイルの最大バージョンが 5 となっているので、この値を最新のデバイス定義ファイルのバージョン番号 6 以上とする。今回は適当に100と変更した)。

この修正を行わないと、PK2DeviceFile.dat device file requires an update of pk2cmdというエラーがコマンド実行時に表示される。(ソースコードを見れば原因は一目瞭然だが、やはりめんどくさい)

cmd_app.h
class Ccmd_app
{
public:
 
    static const unsigned char DevFileCompatLevel = 100;
    static const unsigned char DevFileCompatLevelMin = 0;
 
}

ソースコードを修正したら、ビルドしてパスの通った場所に実行ファイルpk2cmdをコピーする。

$ make linux
 
$ sudo cp pk2cmd /usr/local/bin

さらに、PICkit 2 Development Programmer/Debugger公式ページに掲載されている「Device File 1.62.14」をダウンロードして、パスの通った場所にコピーする(今回は、pk2cmd実行ファイルと同じ場所にコピーした)。

$ wget http://ww1.microchip.com/downloads/en/DeviceDoc/PK2DFUpdate-1-62-14.zip
 
$ unzip PK2DFUpdate-1-62-14.zip
 
$ sudo cp PK2DeviceFile.dat /usr/local/bin

以上でPK2CMDのインストールは終了。

次に、Pickit 2をユーザ権限で使えるように、ユーザに読み書き権限を与える。Pickit 2をUSB接続した状態でデバイスIDを読み取り、

$ lsusb
 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 003: ID 04f2:0841 Chicony Electronics Co., Ltd 
Bus 002 Device 003: ID 046d:c52f Logitech, Inc. Wireless Mouse M305
Bus 001 Device 004: ID 04d8:0033 Microchip Technology, Inc. PICkit2

udevの定義ファイルを作成する。rules.dディレクトリ内であれば、ファイル名は数値2ケタで始まっていれば何でも構わない。今回は50-udev.rulesというファイルを作成して追記した。

/etc/udev/rules.d/50-udev.rules
ATTRS{idVendor}=="04d8", ATTRS{idProduct}=="0033", MODE="0666"

この設定ファイルを作成した後に、再度Pickit 2をUSB接続すると、/dev/bus/usb以下のどれかのデバイスファイルの書き込み権限が有効となっているはず。それがPickit 2だ。

Pickit 2が認識されているか、適当なPICマイコンを接続した状態で次のようなコマンドの実行結果を確かめる。

・Pickit 2のファームウエアバージョンの表示

$ pk2cmd -p -s#
 
Unit #     Unit ID          OS Firmware
0          ?                2.32.00

・取り付けられているPICの種類と状態を確認(-cスイッチはブランクチェック、-iスイッチはPICデバイスのIDとリビジョン番号の表示)

$ pk2cmd -p
Auto-Detect: Found part PIC12F1822.
 
Operation Succeeded
 
$ pk2cmd -p -c
 
Auto-Detect: Found part PIC12F1822.
Program memory is NOT blank.
 
Address   Good     Bad
000000    003FFF   002851
 
Operation Succeeded
 
$ pk2cmd -p -i
Auto-Detect: Found part PIC12F1822.
 
Device ID = 2700
Revision  = 0008
Device Name = PIC12F1822
 
Operation Succeeded

64bitOSの場合、i386ライブラリのインストール

Installation Dependencies on 64-bit Linux』に書かれている必須ライブラリをインストールする。

$ sudo apt-get install libc6:i386 libx11-6:i386 libxext6:i386 libstdc++6:i386 libexpat1:i386

XC 8コンパイラーのインストール

Microchip社MPLAB X Integrated Development Environment (IDE)公式ページからLinux 32-Bit and Linux 64-Bit 版 MPLAB® XC8 Compiler v1.12をダウンロードしてインストールする。

$ wget http://www.microchip.com/mplabxc8linux
 
$ tar xvf mplabxc8linux
 
$ sudo ./xc8-v1.12-linux.run

MPLAB X IDEのインストール

Microchip社MPLAB X Integrated Development Environment (IDE)公式ページからLinux 32-Bit and Linux 64-Bit 版 MPLAB® X IDE v1.60をダウンロードしてインストールする。

$ wget http://www.microchip.com/mplabx-ide-linux-installer
 
$ chmod +x mplabx-ide-linux-installer
 
$ sudo ./mplabx-ide-linux-installer

MPLAB Xのショートカット・キー

MPLAB X内でのショートカット・キーがWindows版と少し異なる。主要なショートカットキーは

・Show Code Completion Popup → CTRL + バックスペース(\)
・Toggle Comment → CTRL + /

PICデバイスへの書き込み

MPLAB X IDEでプログラム作成後、コマンドラインツールのpk2cmdを用いてPICデバイスに書き込む。

書き込みは、-pスイッチにデバイスを指定せずに自動認識させ(Auto-Detect in all detectable families)、 -fスイッチに続けて書き込むファイルtest.X.production.hexを指定し(Hex File Selection)、-zスイッチでEEPROM領域を書き換え対象外とし(Preserve EEData on Program)、-mスイッチにパラメータを付けないことで書きこみ前にゼロクリアを指定する(the entire device will be erased & programmed)。

$ pk2cmd -p -ftest.X.production.hex -z -m
 
Auto-Detect: Found part PIC12F1822.
 
PICkit 2 Program Report
22-1-2013, 20:27:06
Device Type: PIC12F1822
 
Program Succeeded.
Operation Succeeded

EEPROMデータの表示

アドレス0x0000 〜 0x0010(16)のデータを表示したい場合は次のように範囲を指定して実行する。

$ pk2cmd -p -ge0-16
 
Auto-Detect: Found part PIC12F1822.
Read successfully.
EEData Memory
0000 FF  FF  FF  FF  FF  FF  FF  FF  
0008 FF  FF  FF  FF  FF  FF  FF  FF  
0010 FF  FF  FF  FF  FF  FF  FF