Senshu LAB
サイト内検索: AND検索 OR検索  


Counter: 12819, today: 3, yesterday: 6

このページについて

GAINER miniは、UBWとほぼ同一のハードウェアです。ブートローダの使い方などは、
UBWのページを参考にしてください。

PIC18F2550でGAINERが動作

2008年の11月中旬には、UBWとほぼ同じ構成のGAINER miniも登場しました。

http://GAINER-mini.jp/about.html

UBWと類似の使い方が可能で、「日本発」です。このページで紹介したいと思います。

★☆ GAINER関連アーカイブ(2009-03-04追加)[Download] ☆★

01評価用Firmware(2009-0115_r2)fileGainerMini_firm090115_r02e.zipBL対応GAINER mini用一式
02Windows用fsusbfilefsusb-20090218.zipBL対応書き込みツール
03Linux対応fsusbfilefsusb-20090217.tar.gzBL対応書き込みツール
04ruby-serialport-0.7.0fileruby-serialport-0.7.0-mswin32-gem.zipWindows用拡張ライブラリ
05RXTXcomm.jarfilerxtx-2.1.7r2-linux.zipLinux用のポート指定を改良


補足

0. BLはBootLoaderを意味します。
1. fsusb(Full Speed USB)は、MyBootと同等のBL用の読み書きツールです。
2. 03のfsusbは、MacOS Xの環境でも動作するように記述しています(要確認)。
3. 01のファームウェアを自分で再構築する場合は、GNU makeでビルドしてください。

公開しているアーカイブの機能や更新情報

2009 03/04 Linux用(評価用)RXTXcomm.jar(/dev/ttyACM0の指定が可能)

2009 03/03 ruby-serialport for mswin32用拡張ライブラリ

2009 02/23 GainerMini_firm090115_r02e.zip(関連ファイル一式)

  • 以下の5つをまとめました(ブートローダ対応には、これ以外のダウンロードは不要です)
    • BootLoader対応、GAINER mini用のファームウェア(090115_r02の修正版)
    • BootLoaderファーム
    • BootLoader対応、Windows用ドライバ
    • Myboot(BootLoader用の書き込み・読み出しツール)
    • Mybootの使い方(pdfファイル)

GAINER mini に BootLoaderを追加する方法

UBWとほぼ同様の構成である「GAINER mini」は興味深いデバイスですが、ファームウェアの更新には
PICマイコン用のライタが必要であり、ファームが更新されても容易に導入することはできません。
またICSP用のコネクタも無いので、ライタを持っていても更新作業は簡単ではありません。

そこで、このデバイスにもUBWのエッセンスを注入してみました。この機構を導入すれば、ファーム
更新が容易になるのは勿論ですが、GAINER mini 以外の使い方も可能になります。
zoom

http://GAINER-mini.jp/about.html

GAINER miniにブートローダを追加する方法(Simさんの書いたメモを元に追記)
                                                    2009年2月22日(senshu)
=============================================================================
[1] ファイルの入手先
[2] ブートローダ書き込み
[2.1] USBドライバのインストール
[3] GAINER miniファームウェアの書き込み
[4] ファームウェアの更新方法


[0] 導入の概要

1. 必要なファイルを入手
2. ブートローダの書き込み
3. Windowsに対応するドライバをインストール
4. GAINER mini ファームウェアの書き込み
5. GAINER miniの完成

[1] ファイルの入手先

senshu の UBW の解説ページ
「☆ UBW 開発ツールアーカイブ (2009-02-06 改訂)[Download] ☆」

memo/UBW#content_1_5

 入手するファイル群

(1)17 ファームウエア一式 GAINERMini_firm090115_r02e.zip

※ ファームウェアは最適化を有効モードで生成しています。

[2] ブートローダ書き込み

手持ちの PIC ライターで【1】に含まれる 20M-18f2550-GAINER-ORG.hex を、 
GAINER mini ボードの PIC マイコンに書き込みます。


[2.1] USBドライバのインストール

 ブートローダを書き込んだ GAINER mini を 「ブートローダモード」での起動するに
は、GAINER miniのスイッチ押したまま、USBコネクタを挿入します。
(従来通り、RB0をLレベルにするファームも同梱しています)

 PC 側で新しい USB デバイスを認識するので、MCHP-USB.zip の中にあるデバイス
ドライバをインストールします。BootLoader用のドライバを組み込んでください。

boot
│
├─CDC-inf        .... UBWやGAINER miniで使用するドライバ
│  └─win2k_xp_vista32_64
│          mchpcdc.cat
│          mchpcdc.inf
│
└─Driver         .... BootLoader用のドライバ
    │  MCHPUSB Driver Release Notes.htm
    │
    └─Release
            Ioctls.h
            mchpusb.cat
            mchpusb.inf
            mchpusb.sys
            mchpusb64.sys

ドライバをインストールすれば、ブートモード(青色LEDの点滅)に移行できます。
この操作はブートモード移行時にのみ必要であり、通常版と全く同じ操作が可能です。

[3] GAINER miniファームウェアの書き込み

 MYBOOT  … 以下の2つをPATH設定されたフォルダにコピーしてください。
    mpusbapi.dll
    Myboot.exe

Myboot.exe を起動し、Open HEX ボタンで、HEXにある GAINERmini.hex を選択し、
Write_Verify ボタンを押して書き込みます。MyBoot の使い方は 「MyBoot の概要」
を参考にしてください。

memo/UBW_tools

以下の操作は不要です。将来はこの機能が有効になることもありますが、現状では
この設定を参照しておりません。

	次に Set Boot Flag ボタンを押してブート時にユーザーアプリが起動する
	設定にします。

以上でブートローダ付き GAINER mini の出来上がりです。RESETすればGAINER miniが
が動きます。ブートローダ込みのファームも作成可能ですが、汎用性を重視し、この構成
を採っています。同一のハードウエアで、GAINER mini/ UBW の両方を利用できます。

※このハードでUBWを利用する場合には、LEDの割り当てを変更したファームが必要です。
また、独自に作成したアプリケーションをMyBootで書込み、実行することも可能です。

[4] ファームウェアの更新方法

 ここで公開しているファイル群は、不具合の修正や機能向上のために更新が行わ
れることがあります。ブートローダがアップデートしたときは [2] から、GAINER 
ファームウェアのアップデートは、[3] から作業を行います。

GAINERmini.hex はブートローダ用に senshu が Tsuneo さんのソースを改造したもの
であり、ブートローダ専用なので区別して扱ってください。また、ブートローダでは、
オリジナルのファームを書き込むことは可能ですが、ブート領域を更新できない為に
動作しません。書き込むファームウエアはブートローダ対応のものに限られることに
注意してください。

[5] 利用上のアドバイス

(0) GAINER mini は、MCLR(RESET)とRB0のピンが外部に引き出されていません。
    ここで最初に公開したブートローダは、RESET時にRB0がLレベルであればブート
    モードに移行する仕組みでしたが、純正のGAINER miniでは、このピンは外部に
    出力されておらず、利用が難しいことがわかりました。そこで、ResetSWをモード
    切替に利用する版を用意しましたので、ご利用ください。

    純正GAINER miniのもうひとつの問題点は、ファームウェアの更新に必要なピンが
    外部端子に接続されていない点です。書き込み時にはMCLRには12V程度の電圧が印
    加されるので、絶対に間違えないようにしてください。(ファーム書き換えにも
    配慮が欲しいです)
     pickit2  → Gainer mini
        1 Vpp → MCLR (工夫して接続すること。間違いは厳禁)
        2 Vcc → 5V
        3 Vss → GND
        4 PGD → aout0 (PB7/PGD)
        5 PGC → aout1 (PB6/PGC)
        6 Aux (接続不要)

GAINER-MCLR.jpg

(1) ブートローダは、RESETスイッチをRESET専用に割り当てているものと、入力スイッチ
    に割当てるものの2種類を用意していますが、GAINER-miniとの互換性が必要な方は、
    20M-18f2550-GAINER_ORG.hexを書き込んでください。

(2) LEDの負荷抵抗の値について
    実際にLEDを点灯させ明るさを確認しました。私の実験では、オリジナルの470Ωでは
    明るすぎると判断し、1kΩを選択しました(実際には2.7kを付けています)。
    この値は、採用するLEDにより違いが生じますので、利用するLEDに適合した値を
    選定してください(最近のLEDは効率が良く、1〜2mA流せば十分な輝度が得られます)

(3) ポリスイッチについて
    ブレッドボードで配線する場合、配線ミスにより電源ラインを短絡することが考えら
    れますので、Vbus の+5V とブレッドボードのVdd間にポリスイッチを挿入することを
    お薦めします。私は、AE-18F2550 のJP1を半田ごてで取り外し、2-3間にポリスイッチ 
    (250mA用…2倍の電流で遮断するため)を実装しました。

(4) ResetSWの読み込み機能のサポートで最も悩まされたのは、動作の検証でした。
    公開されているサンプルのコードには誤りがあり、動作しません。
    
    ------------Gainer ハンドラ 関数一覧----------------------------
    × void gainerButtonUpdated(boolen pressed)  … ボタンの状態が変化した
    
    と記載されていますが、実際には以下の関数を使用する必要があります。
    
    ○ void gainerButtonEvent(boolean pressed)
    
    私はこの件で数時間悩みました。おかげでGAINERの全容を理解することができました。

関連情報(OGRUMさんのサイト)


  • senshu 2009-02-10 (火) 07:45:17
    もう少し理解が進めば、RB0につないだSWをResetSWの代わりにできそうです。

    そうすれば、少なくともAE-18F2550などでGAINER miniクローンでは、
    「ブートローダの利点」と「GAINER miniとの互換性」を両立できます。

    公開されているproce55ingライブラリのファイルが不十分な点やインストールが
    面倒な点は利用者の工夫で改善できるようですから、細かな修正を行い、
    その成果を公開したいと思います。(素晴らしいものを作成された開発者への
    ささやかなお礼です)

  • senshu 2009-02-10 (火) 18:17:17
    公開されている「GAINER mini」のパターン図を元に該当する場所を提示しましたが、
    現物を持っているわけではありません。REV 5という番号が示すとおり、このパターン
    になっている保証もありませんので、参考程度に留め、自分の目で確認してください。
    この変更は、自己責任で行ってください。

    その意味では、AE-18F2550を入手して自作するのが面白いと思います。

  • きむにゃん? 2009-02-14 (土) 10:13:39
    RB0はマイコンのピン直接しか触れません。
    もうひとつのほうは、ボタンの影に隠れてしまってます。

    >1 Vpp → MCLR (工夫して接続すること。間違いは厳禁)

    これはsenshuさんが示した場所か、「buttonの左側の半田部分」が触りやすいと思います。
  • senshu 2009-02-14 (土) 19:25:49
    きむにゃんさん、こんばんは。
    >もうひとつのほうは、ボタンの影に隠れてしまってます。
    裏側のスルーホールから線を引き出すことは可能と考えましたが、このランド
    はレジストで隠れていますか?
    ・・・しかし、現在のブートローダは、このピンに触れる必要はなくなりました。
    現在公開中のブートローダをご利用ください。

    >buttonの左側の半田部分が触りやすいと思います。
    私は純正のGAINER miniを持っていないので、ぜひ拡大図で示して
    もらえると参考になる方がいると思います。
  • きむにゃん? 2009-02-15 (日) 02:24:36
    こんばんは
    >裏側のスルーホールから線を引き出すことは可能と考えましたが、このランド
    はレジストで隠れていますか?
    裏も駄目ですね。
    ICソケットのプラスチック部分があって、触ることもできません。
    半田付けするならマイコンの足直接がやりやすいかと・・・

    >・・・しかし、現在のブートローダは、このピンに触れる必要はなくなりました。
    RB0につながっているbuttonを使用するやつですね。

    >私は純正のGAINER miniを持っていないので、ぜひ拡大図で示して
    >もらえると参考になる方がいると思います。

    よくよく考えたら自分のブログでもbuttonの左側の拡大図は無かったです・・・
    画像をお渡しする方法ってありますか?
  • senshu 2009-02-16 (月) 07:50:39
    >RB0につながっているbuttonを使用するやつですね。
    RE3、つまりMCLRのボタンスイッチを利用しますので、ハードウェアの改造は
    不要です。

    >よくよく考えたら自分のブログでもbuttonの左側の拡大図は無かったです・・・
    >画像をお渡しする方法ってありますか?
    メールで送っていただいても良いのですが、きむにゃんさんのブログに掲載
    していただければ、それが一番だと思います。

    今では、RB0への接続は不要なので、混乱をさけるために外しました。
    ブートローダを書き込む時に一度だけMCLRに接続すれば、その後のファーム書き
    換えにはMybootが利用できるので、この作業は不要になります。