Top / 工 / PIC
HTML convert time: 0.033 sec.

PIC

Last-modified: 2017-02-01 (水) 19:46:00

USB BootLoaderの作成

PIC18F2550のUSB BootLoaderを作成する.

ソフトのインストール

・MPLAB X IDE v2.35
・MPLAB XC8 コンパイラ Free版
・MLA(Microchip Libraries for Applications) v2015-08-10

環境設定

定番であり,同じファミリーのPIC18F4550を元に作成する.

  • IDEを立ち上げ,[file]-[Open Project] より,ブートローダーのプロジェクトを開く

    C:\microchip\mla\v2015_08_10\apps\usb\device\bootloaders\firmware\pic18_non_j\MPLAB.X

  • [file]-[Project Properties ....]-[Manage Configurations...]でPIC18F4550_XC8を選択し、Apply
    もしくは,[Run]-[Set Project Configuration]よりPIC18F4550_XC8を選択

コンパイル&修正

  • Clean and Build(ほうきと金槌のアイコン)でコンパイル

    エラーメッセージ14行目をダブルクリックで該当箇所に飛ぶ

    main.cの922行目が これはPRO版じゃないとコンパイルできないよ というメッセージなのでコメントアウトする

  • 再度コンパイル

    プログラムのサイズが大きくなりすぎているというエラー。PRO版を購入すればエラーが出なくなる

  • 今回はlinkerファイルを編集して対応

    [file]-[Project Properties ....]-[XC8 linker]-[Memory model]でROM Rangeを default,-2000-7FFF に変更

    VectorRemap.asmの34、43行目を1008->2008,1018->2018に変更

    BootPIC18NonJ.hの52,57,59行目を1000->2000,1006->2006,1016->2016に変更

  • コンパイルすると成功.

PIC18F2550の環境設定

  • [file]-[Project Properties ....]-[Manage Configurations...]-[New]よりPIC18F2550_XC8を新規作成し、[Set Active]
  • Configurationの設定

    Device:PIC18F2550

    Hardware tool:PICkit3

    Compiler toolchain:XC8

  • XC8 compiler,XC8 linkerはパラメータを同一ファミリ(PIC18F4550_XC8)より移植

PIC18F2550でのコンパイル&修正

  • Clean and Build(ほうきと金槌のアイコン)でコンパイル
  • HardwareProfile.hの編集

    48行目をコメントアウト

    122行目以降を以下のような感じに

    #elif defined(YOUR_CUSTOM_BOARD)
       ///#warning "Add your hardware specific I/O pin mapping here."
       //Use one of the existing sections as a template for adding the proper
       //macro defintions appropriate for your hardware platform.
    
       #define mLED1       LATAbits.LATA0   //USB通信表示用LED
       #define mLED1Tris   TRISAbits.TRISA0
       /** SWITCH *********************************************************/
       #define mInitSwitch2()      {ADCON1 = 0x0F; TRISAbits.TRISA5 = 1;}   
       #define sw2                 PORTAbits.RA5    //bootloader起動用スイッチの指定
       #define mDeInitSwitch2()    {ADCON1 = 0x07;} 
    
    #else
       #error Not a supported board (yet), add I/O pin mapping in __FILE__, line __LINE__
    #endif
  • main.cの編集

    714行目のLowVoltageCheckのワーニングをコメント

    342行目にコンフィグレーションビットの定義を追加

pic18F2550_confbit.png

参考
http://chitose6thplant.web.fc2.com/pic18f/2550/pragma_config2550.htm
http://plaza.rakuten.co.jp/blackgalaxy/diary/201212090000/

BootLoader対応,ユーザープログラムの書き方

Configration BitsはBootLoaderと同一のものを仕様

変更するとユーザープログラムは動かない

ROMの範囲とオフセットの指定

  • プロジェクトを右クリックし、Propertiesを開く.
  • 左側のXC8 linkerをクリック.
  • Option categories:でMemory modelを開く.
  • ROM rangesをdefault,-0-FFF,-2006-2007,-2016-2017に指定.

    32bit, 32bit, Wordwrite, 空欄,default,-0-FFF,-2006-2007,-2016-2017

  • Option categories:でAdditional optionsを開く.
  • Codeoffsetを0x2000に指定.

プログラムの書き込み方

  • HIDbootloader.exe を実行
  • SWを押したまま,USBケーブルを差し込む
  • [Programming]-[Settings]画面で,上下2つにチェックが入っていることを確認.

    Config Bitsにチェックを付けて書き込むとプログラムを書き込むためのプログラムが壊れるので注意

HIDboot_setting.png

  • Import Firmware Imageアイコンをクリックして,書き込みたい.hexファイルを選択
  • Erase/Program/Verify Deviceアイコンをクリックして,プログラムを書き込む

PIC18F2550メモ

  • アナログ,デジタルピンの指定はADCONレジスタ

PICメモ

  • MLA

    ライブラリのプロジェクトを編集するときには、フォルダごと予めバックアップをとっておく

  • ファイルのパス

    C:\microchip\mla\v2016_11_07\apps\usb\device\bootloaders\firmware\pic18_non_j\demo_src

  • 日本語フォントを使用するときのエンコーダの設定

    [Tools]-[Options]-Embedded]-[Default Charset]よりShift_JISに

MLAのインポート

Start the MPLAB IDE
Use Configure -> Select Device, to select PIC18F2550 as the target device
Use Programmer -> Select Programmer, to select the PICkit 3 (or other programmer that you might be using)
Use File -> Import, to read the bootload firmware “.hex” file into MPLAB
Use Programmer -> Program, to program and verify the PIC
参考 http://avitech.com.au/?p=220