「マイクロチップUSBフレームワーク(MCHPFSUSB Framework)」
PIC18F2550のUSBファームウェアの開発には、マイクロチップ社が提供する「マイクロチップUSBフレームワーク(MCHPFSUSB Framework)」
を使用することができます。
「マイクロチップUSBフレームワーク(MCHPFSUSB Framework)」には、USB機能を内蔵したPICマイクロコントローラのUSB機能を
使用するためのライブラリとサンプルのアプリケーションが含まれています。このサンプルアプリケーションを参考、
または修正することにより目的のファームウェアを開発できるようになっています。
「マイクロチップUSBフレームワーク(MCHPFSUSB Framework)」はマイクロチップ社のウェブサイトから無料でダウンロードすることができす。
入手先:MCHPFSUSB Framework v2.4
USBマスストレージ・サンプルアプリケーションの選択
「マイクロチップUSBフレームワーク(MCHPFSUSB Framework)」のインストールが完了すると"Microchip Solutions"という
フォルダがCドライブに作成されます。"Microchip Solutions"フォルダの中には"Microchip"フォルダを含めて数多くのフォルダ
が存在します。"Microchip"フォルダ以外のフォルダはサンプルアプリケーションのフォルダであり、フォルダ名でどのような
機能のサンプルなのかが分かるようになっています。
"Microchip"フォルダにはUSBの様々なクラス機能やFATファイルシステムなどのソースコードやヘッダファイルが格納されており、
必要に応じてこれらのファイルをプロジェクトに追加して使用します。
作成したいファームウェアに完全に合致したサンプルアプリケーションがあれば一番楽なのですが、残念ながら今回の目的に
完全に合うサンプルアプリケーションはありませんでした。そこで、数あるサンプルアプリケーションの中から一番改造しやすそうな
ものを選んで改造することになります。"Microchip Solutions"フォルダの中でUSBマスストレージデバイスに対応しているサンプル
アプリケーションは以下の3つです。
- USB Device - Mass Storage - Internal Flash
- USB Device - Mass Storage - SD Card data logger
- USB Device - Mass Storage - SD Card reader
この中から一番改造しやすそうなサンプルアプリケーションを選びます。それぞれのフォルダの中にあるプロジェクトファイル
(拡張子がmcp)やリンカースクリプトファイル(拡張子がlkr)から、対応しているMCUを把握することができます。今回使用する
PIC18F2550に対応したものがあればよいのですが、これも残念ながらありませんでした。しかし"USB Device - Mass Storage - Internal Flash"
ではPIC18F4550に対応しています。PIC18F4550はピン数と一部機能を除いてPIC18F2550とほぼ同じです。よって、このサンプルアプリ
ケーションから目的のファームウェアを生成することとします。
USBマスストレージ・サンプルアプリケーションの改造指針
- PIC18F2550に対応させる:
"USB Device - Mass Storage - Internal Flash"のプログラムコードは複数のMCUに対応するように構成されています。
これは、コンパイル対象MCUによって条件つきコンパイルが分岐することにより実装されています。
今回の用途では、基本的にはMCHP FS USB デモボード用、つまりPIC18F4550を使用するときと同じコンパイルが行われれ
ば良いので、PIC18F2550を対象MCUとした場合にMCHP FS USB デモボード用のコンパイルが行われるように修正します。
- SDメモリカードを対象にする:
"USB Device - Mass Storage - Internal Flash"は本来、内蔵EEPROMを読み書きの対象とするUSBマスストレージデバイスの
ファームウェアなので、これをSDメモリカードを読み書きの対象とするUSBマスストレージデバイスとするための修正をおこないます。
PIC18F2550に対応させるための修正
PIC18F2550に対応させるための修正手順を以下に示します。
- "USB Device - Mass Storage - Internal Flash"フォルダを一旦別のフォルダに移動してフォルダ名を
"Mass StoragePIC18F2550"に変更後、"Microchip Solutions"フォルダに戻します。
(インストールしたフォルダをそのままとっておきたいので)
- "Mass StoragePIC18F2550"フォルダ内に有る"Firmware"フォルダ内の不要なファイルを削除。
削除ファイル一覧
(必要なファイルを明確にすることと、目的のファイルを探しやすくすることが目的なので必ずしも
ファイルの削除が必要なわけではありません。)
- MPLABを起動して"Firmware"フォルダのUSB Device - Mass Storage - Internal Flash Demo - C18 - PICDEM FSUSB.mcp
プロジェクトを開く。
- メニューのConfigure→DeviceSelectでDeviceをPIC18F2550に変更する。
- ブートローダーを使用しないように、また、PIC18F2550に対応するようにリンカースクリプトを修正します。
Mass StoragePIC18F2550のリンカースクリプトファイル
- HardwareProfile.hの
#if defined(__18F4550) を #if defined(__18F2550)に修正。
ここまでの手順を終えてコンパイルすると内蔵EEPROMを読み書きの対象としたUSBマスストレージデバイスのファームウェア
が出来上がります。
実行ファイルをPICに書き込んでUSBケーブルでPCに接続すると大容量記憶装置として認識されます。
WindowsXPのエクスプローラではマイコンピュータの中に"Drive Name(F:)"というドライブが追加され、その中に"FILE.TXT"という
ファイルが入っていることが確認できます。
SDメモリカードに対応するためのプロジェクト構成の変更とソースコードの修正
- MPLAB IDE のプロジェクトウインドウで"Source Files"の"MDD File System"の中から"InternalFlash.c"を除外して
代わりに"C:\"Microchip Solutions\Microchip\MDD File System"内の"SD-SPI.c"を追加。
- MPLAB IDE のプロジェクトウインドウで"Header Files"の"MDD File System"の中から"InternalFlash.h"、"FSIO.h"、
"FSDefs.h"を除外し、"C:\Microchip Solutions\Microchip\Include\MDD File System"内の"SD-SPI.h"を追加します。
- MPLAB IDE のプロジェクトウインドウで"Source Files"の中から"Files.c"を除外します。
- "main.c","HardwareProfile.h","FSconfig.h","HardwareProfile - PICDEM FSUSB.h"の内容を修正します。
詳細はこの
Mass StoragePIC18F2550プロジェクト
内のソースコードを参照ください。
以上のプロジェクトをコンパイル後、PIC18F2550に書き込むことでSDメモリーカード・リーダー/ライターが完成します。
|