Top
HIDaspx
DownLoad
HIDasp高速化
制作
AVR関係
AVR_Monit
AVR_term
W32_term
HIDmon88
HIDtester
usbRS232
Arduino2313
デジタルテスター
ATmega88生活
KeyBoardマニア
KeyBoardマニアII
Arduino400
PICライター
ARMライター
赤外線リモコン
ARM
STM32ブートローダー
STM8S-Discovery改造
STM8S-OpenOCDライター
LPCXpresso
LPC用ブートローダー
NXP用LPCUSB
NXP用ブートローダー
MARY基板
LPC1114FN28
OpenOCD JTAGアダプター
OpenOCDビルド方法
arm-gccビルド方法
mapleIDEの改造
libmapleで仮想COM
PIC32
PIC32MX
Pinguinoで遊ぼう
ブートローダーを作る
シリアルブートローダー
USB仮想シリアル
USBカスタムデバイス
USB簡易モニター
USBオシロスコープ
USBホスト
PIC32でBluetooth
USBAudio
USBStudy
VGA出力に挑戦
BASICを動かす
WinUSB
勝手に改蔵*PIC32
PIC18F
HIDブートローダー
AVR/PIC両用ライター
ARMライター
usb汎用クラス
usbシリアル変換
usbキーボード変換
sdccを使いこなす
mcc18を使いこなす
HIDmon-2550
HIDmon-14K50
PICmonitor
試行錯誤の記録
UBWを試す
旧HIDboot
PIC18F2550試用記
PIC18F4550試用記
その他マイコン
NEC78K
RX62N
SH2A
H8
FM3
XPからubuntuに乗り換え
Android
Xen-hypervisor
Windows8カスタマイズ
開発日記
2015-04
ノウハウ
AVRUSB_Tips
HIDasp情報
汎用USB-IO
・
リンク
フリースペース
ゲストブック
旧コンテンツ
WinVista
インターフェース考
最新の20件
2022-07-25
2008-10
HIDasp高速化
H8/3048F
AutoTicketLinkName
2021-12-11
FormattingRules
2021-12-08
PukiWiki/1.4/Manual/Plugin/O-R
PukiWiki/1.4/Manual/Plugin/L-N
PukiWiki/1.4/Manual/Plugin/V-Z
PukiWiki/1.4/Manual/Plugin/A-D
PukiWiki/1.4/Manual/Plugin/E-G
PukiWiki/1.4/Manual/Plugin/S-U
PukiWiki/1.4/Manual/Plugin/H-K
2020-02-23
YukiWiki
PHP
PukiWiki
WikiWikiWeb
2018-12-19
SandBox
InterWiki
2015-05-07
2015-04
2015-05-02
MenuBar
編集
差分
mcc18 の編集
-- 雛形とするページ --
(no template pages)
[[2009-08:http://psp.dip.jp/web/log/2009-08.html]] [[PIC日記:http://psp.dip.jp/web/log/2009-05PIC.html]] [[PIC18F2550]] [[PIC18F4550]] [[HIDmon-2550]] [[HIDmon-14K50]] [[sdcc]] ---- **MicroChip C18 Compilerを使いこなす [#qdd17ecb] -MicroChip C18 Compiler は評価版と称して事実上無償配布されています。((これは適切な表現ではありません。))((Lite版は無償無期限で使用できます。評価版は60日だけ使用できます。期限の切れた評価版はLite版と同等の機能に格下げになります。))((評価版はVerup版が出るたびに古いものをアン・インストールして、インストールしなおすことが出来るので、改版のタイミングから2ヶ月は最適化ありの状態で使用できるといった具合です。))((Lite版と、期限の切れた評価版は最適化なしになりコードサイズが2割以上大きくなりますが、))((それ以外の制限は無く普通に使用できます。そういった意味では無償配布です。)) -MicroChip が用意しているUSBアプリケーションフレームワークは、基本的に C18 Compilerでコンパイルできるように記述されています。 -しかし、普通のMakeが通りません。Makefileも整備されていないようです。 http://psp.dip.jp/web/jpg/PIC/14k50.jpg -MicroChip が用意しているUSBアプリケーションフレームワークを[[sdcc]]に移植するのは茨の道です。MicroChipのバージョンアップに追いつけません。 -現状、[[sdcc]]はCコンパイラとしての基本性能に問題があります。もちろんC18にも問題はあります。 --結局、どちらがましか、という議論になると、C18のほうがましであるという結論に達しました。 [[Audinさんのサイトのまとめ記事:http://mpu.seesaa.net/article/1187467.html]]が非常に参考になります。 ---- 目次 #contents ---- *とりあえず、Make環境を整備。 [#i4b38a52] ■ ビルド環境の構築の手引き (1) まず、WinAVR(GNU Make) をインストールします。 http://sourceforge.net/projects/winavr/ インストール先は、通常なら C:\WinAVR\ になります。 WinAVR/utils/bin には、make.exe 以外にもunixシェルでよく使用する ls や cat , rm などといったお馴染みのツールのWin32バイナリーが含まれているので、非常に便利です。 (2) 次に、mcc18(Compiler)をインストールします。Standard-Eval VersionでOKです。 http://www.microchip.com/ URLはその都度変わると思いますが、ここです。 -http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=SW006011 -一番下にある |>Documentation & Software を展開すると、ダウンロードリストが出ます。 インストール先は、通常なら %%C:\mcc18\%% になります。 - ---> C:\Microchip\mplabc18\v3.47\ あたりになります。 (3) 続いて、MicroChipのサイトから、下記USBアプリケーションライブラリ、 MicrochipApplicationLibrariesv2009-07-10.zip もしくはそれより新しいバージョンを入手してください。 URLはその都度変わると思いますが、ここです。 -http://www.microchip.com/pagehandler/en-us/devtools/mla/ -Legacyの隣にある、Archivesのタブを開くと古いバージョンが入手できます。 準備が出来たら、パスを通します。 ・パスの通し方: PATH %PATH%;C:\mcc18\bin;C:\mcc18\mpasm;C:\WinAVR\utils\bin; ~~~~~~~~~ ~~~~~~~~ 下線部はmcc18のインストール先に応じて読み替えてください. 適当なバッチファイルを用意して呼び出すか、あるいはWindowsのシステムプロパティ -->詳細-->環境変数-->ユーザーの環境変数 PATH に C:\mcc18\bin;C:\mcc18\mpasm;C:\WinAVR\utils\bin を記述します。 インストール時にパスを通してしまった場合は、上記確認のみで結構です。 ''ダウンロード'' -[[mchip-hidboot.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-hidboot.zip]] -内容は[[千秋ゼミさんのサイト:http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews43]]に登録されているHIDBoot-14k50.zip とほぼ同じです。(千秋さん、ありがとうございました。) -Makefileを少し変更して汎用性を持たせてあります。 -ReadMe.txtドキュメントを追加しました。 ''これでやっとC18が使えるようになります'' -今まではC18でのビルド方法が全く不明(GUIは苦手です)だったのでどうすることも出来ませんでした。 ~ ~ ~ ~ ---------- *CDC Serial Emulatorをビルドできるようにしたい。 [#ba034a32] 出来ました。 ''ダウンロード'' -[[mchip-cdc14k.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-cdc14k.zip]] -PIC 18F14K50 をUSB-シリアル変換チップとして使用するためのファームウェアです。 -そのまま外部PICライターで焼いてよし、HIDmonブートローダーで書き込んでもOKです。 -コードはMicroChipオリジナルのままなので、19200以上のボーレートでの使用に若干不安があります。(未評価です。どなたか評価してみてください) -USBのポーリングとRxDデータのポーリングを交互に呼んでいるだけの構造なので、USBのパケット処理中にRxDデータが2バイト以上来るとハードウェアのUSART FIFOが溢れます。 -19200bpsは1秒に約2000文字のレートでシリアルデータが流れますので、2文字時間=1mSすなわちUSBの1フレーム相当になります。USBバルク転送が1フレームに1回は出来るはずなので、19200bpsで溢れることはないでしょう。 -しかし、その上の57600bpsでは2文字時間=0.3mSになるので、怪しいことになります。 -%%RTS/CTS/DTR/DSRなどの端子のサポートがありません。%% --よく調べたらありました。こいつです。この行のコメントアウトを取ります。 usb_config.h:130:#define USB_CDC_SUPPORT_HARDWARE_FLOW_CONTROL --DTRはRB6に割り当てられていました。 --ANSELHのゼロクリアは行われていました。 --UART_DTRの制御コードは書かれていました。 --しかし、RB6はHi-Zのままでした。 --UART_TRISDTRとUART_TRISRTSを0(出力)にセットするコードがどこにもありません。 -%%つまり、ハードウェア・フロー制御のサポートもありません。%%(接続先のAVRチップなどにもないので、不要と言えば不要です。) --あるにはあるのですが、MicroChipのソースのままでは機能しません。 usb_config.h:130:#define USB_CDC_SUPPORT_HARDWARE_FLOW_CONTROL -を有効にしても、バグにより機能しません。 -CTS,DSRは見てないような・・・。 ~ ~ ~ ~ ---------- * -*-勝手に改蔵-*-勝手に改蔵-*-勝手に改蔵-*- [#rcb8b02e] Serial Emulator : DTR/RTS出力可能版 ''ダウンロード'' -[[mchip-cdc14k2.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-cdc14k2.zip]] DTR信号をRB6端子に出力します。 ~ ~ ~ ~ ---------- *PICのボーレート計算式 [#taac70ff] 48,000,000 12,000,000 baud = ------------------------- = ------------ 4 x ([SPBRG:SPBRGH] + 1) (UBRR + 1) http://psp.dip.jp/web/jpg/PIC/baud.png -つまり、115200bpsでも分周レジスタは103であり、 -230kbps,460kbps,920kbpsくらいまでは楽勝のように見える。 -UBRR(と勝手に命名)を11にしたときに丁度1Mbps,5で2Mbps,1で6Mbps(!) -まだまだいけるじゃん。 -しかしSerialEmulatorのファームは115200以上はエラー扱いにしている。 -(つまり115200まではこのファームでいけると言うのか???) ~ ~ ~ ~ ---------- *Bootloader-Tips [#w80ed5f9] USB付きPIC18F用のBootLoaderは、今のところ4種類程度存在します。 -(1)MicroChip純正Bootloader(C18) -(2)MicroChip純正HID Bootloader(C18) -(3)diolan社がGPLで公開しているHID Bootloader(MPASM) -(4)このサイトで公開している [[HIDmon-2550]]/[[HIDmon-14K50]](MPASM) この4者は(残念ながら)''互いにプロトコルの互換性がありません。'' -(1)のみ、Windowsへのドライバー組み込みが必要です。(唯一、バルク転送を使用します) --(1)以外は、HIDデバイスなのでWindowsへのドライバー組み込み不要です。 -(2)のみ、ブートローダーのサイズが4kBになります。他は2kBに収まっています。 -(3)はPIC-18F4455のみサポートで14K50などには対応していません。 --また、転送プロトコルを暗号化する機能があります -(4)は18F2550/18F4550/18F14K50の3種類をサポートしています。 --bootloader機能以外に''PIC BIOS(printデバッグ)機能や、HIDmon(汎用USB-I/O)としても使用できます。'' ~ ~ ~ ~ ---------- *Bootloader-Tips2 [#t68f9553] アプリを書くときは当然エントリーアドレスと割り込みベクターを使用すると思いますが、 以下のように工夫することで、ブートローダー使用と単独書き込み実行の両対応が可能です。 -エントリー ORG 0 GOTO 0x800 -割り込み ORG 8 GOTO 0x808 ORG 0x18 GOTO 0x818 -実際のプログラムコード 0800: プログラムエントリー番地 0808: 割り込み処理0008のエントリー 0818: 割り込み処理0018のエントリー ・・・・ 3fff: 最大ここまで(18F14k50). -ブートローダーは0x0000〜0x800に常駐しています。 -ブートローダーがアプリを書き込むときは自分自身と重なるアドレスのデータを無視します。 -PICkit2などの外部ライターで書き込むときは全領域を書き込んでくれます。 実際には、割り込み発生時に1命令だけ無駄なジャンプが発生しますが、そのかわりに公開するHEXファイル は1種類で良いので混乱が少ないです。 ブートローダー(2)を使用する場合のみ、プログラムコード開始番地を0x1000〜に移動する必要があります。 ~ ~ ~ ~ ---------- *番外編: mcc18をLinuxで動かす。 [#z6f9375e] あまりお勧めできない方法ですが・・・。 -[[mcc18をLinux上で動かす。:http://psp.dip.jp/web/log/2009-09.html#v0d65843]] ~ ~ ~ ~ ---------- *参考リンク [#zfbe3d2d] (PICマイコンの小部屋)USB開発環境の構築 -http://www.mars.dti.ne.jp/~m7030/pic_room/usb_tool/ - 電気実験室 -http://www.geocities.jp/ii2duck/personal/s0744.html ~ ~ ~ ~ ---------- *予定 [#l7b89e5a] -汎用libusbデバイスのフレームワークもビルドしたい。
タイムスタンプを変更しない
[[2009-08:http://psp.dip.jp/web/log/2009-08.html]] [[PIC日記:http://psp.dip.jp/web/log/2009-05PIC.html]] [[PIC18F2550]] [[PIC18F4550]] [[HIDmon-2550]] [[HIDmon-14K50]] [[sdcc]] ---- **MicroChip C18 Compilerを使いこなす [#qdd17ecb] -MicroChip C18 Compiler は評価版と称して事実上無償配布されています。((これは適切な表現ではありません。))((Lite版は無償無期限で使用できます。評価版は60日だけ使用できます。期限の切れた評価版はLite版と同等の機能に格下げになります。))((評価版はVerup版が出るたびに古いものをアン・インストールして、インストールしなおすことが出来るので、改版のタイミングから2ヶ月は最適化ありの状態で使用できるといった具合です。))((Lite版と、期限の切れた評価版は最適化なしになりコードサイズが2割以上大きくなりますが、))((それ以外の制限は無く普通に使用できます。そういった意味では無償配布です。)) -MicroChip が用意しているUSBアプリケーションフレームワークは、基本的に C18 Compilerでコンパイルできるように記述されています。 -しかし、普通のMakeが通りません。Makefileも整備されていないようです。 http://psp.dip.jp/web/jpg/PIC/14k50.jpg -MicroChip が用意しているUSBアプリケーションフレームワークを[[sdcc]]に移植するのは茨の道です。MicroChipのバージョンアップに追いつけません。 -現状、[[sdcc]]はCコンパイラとしての基本性能に問題があります。もちろんC18にも問題はあります。 --結局、どちらがましか、という議論になると、C18のほうがましであるという結論に達しました。 [[Audinさんのサイトのまとめ記事:http://mpu.seesaa.net/article/1187467.html]]が非常に参考になります。 ---- 目次 #contents ---- *とりあえず、Make環境を整備。 [#i4b38a52] ■ ビルド環境の構築の手引き (1) まず、WinAVR(GNU Make) をインストールします。 http://sourceforge.net/projects/winavr/ インストール先は、通常なら C:\WinAVR\ になります。 WinAVR/utils/bin には、make.exe 以外にもunixシェルでよく使用する ls や cat , rm などといったお馴染みのツールのWin32バイナリーが含まれているので、非常に便利です。 (2) 次に、mcc18(Compiler)をインストールします。Standard-Eval VersionでOKです。 http://www.microchip.com/ URLはその都度変わると思いますが、ここです。 -http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=SW006011 -一番下にある |>Documentation & Software を展開すると、ダウンロードリストが出ます。 インストール先は、通常なら %%C:\mcc18\%% になります。 - ---> C:\Microchip\mplabc18\v3.47\ あたりになります。 (3) 続いて、MicroChipのサイトから、下記USBアプリケーションライブラリ、 MicrochipApplicationLibrariesv2009-07-10.zip もしくはそれより新しいバージョンを入手してください。 URLはその都度変わると思いますが、ここです。 -http://www.microchip.com/pagehandler/en-us/devtools/mla/ -Legacyの隣にある、Archivesのタブを開くと古いバージョンが入手できます。 準備が出来たら、パスを通します。 ・パスの通し方: PATH %PATH%;C:\mcc18\bin;C:\mcc18\mpasm;C:\WinAVR\utils\bin; ~~~~~~~~~ ~~~~~~~~ 下線部はmcc18のインストール先に応じて読み替えてください. 適当なバッチファイルを用意して呼び出すか、あるいはWindowsのシステムプロパティ -->詳細-->環境変数-->ユーザーの環境変数 PATH に C:\mcc18\bin;C:\mcc18\mpasm;C:\WinAVR\utils\bin を記述します。 インストール時にパスを通してしまった場合は、上記確認のみで結構です。 ''ダウンロード'' -[[mchip-hidboot.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-hidboot.zip]] -内容は[[千秋ゼミさんのサイト:http://www-ice.yamagata-cit.ac.jp/ken/senshu/sitedev/index.php?AVR%2Fnews43]]に登録されているHIDBoot-14k50.zip とほぼ同じです。(千秋さん、ありがとうございました。) -Makefileを少し変更して汎用性を持たせてあります。 -ReadMe.txtドキュメントを追加しました。 ''これでやっとC18が使えるようになります'' -今まではC18でのビルド方法が全く不明(GUIは苦手です)だったのでどうすることも出来ませんでした。 ~ ~ ~ ~ ---------- *CDC Serial Emulatorをビルドできるようにしたい。 [#ba034a32] 出来ました。 ''ダウンロード'' -[[mchip-cdc14k.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-cdc14k.zip]] -PIC 18F14K50 をUSB-シリアル変換チップとして使用するためのファームウェアです。 -そのまま外部PICライターで焼いてよし、HIDmonブートローダーで書き込んでもOKです。 -コードはMicroChipオリジナルのままなので、19200以上のボーレートでの使用に若干不安があります。(未評価です。どなたか評価してみてください) -USBのポーリングとRxDデータのポーリングを交互に呼んでいるだけの構造なので、USBのパケット処理中にRxDデータが2バイト以上来るとハードウェアのUSART FIFOが溢れます。 -19200bpsは1秒に約2000文字のレートでシリアルデータが流れますので、2文字時間=1mSすなわちUSBの1フレーム相当になります。USBバルク転送が1フレームに1回は出来るはずなので、19200bpsで溢れることはないでしょう。 -しかし、その上の57600bpsでは2文字時間=0.3mSになるので、怪しいことになります。 -%%RTS/CTS/DTR/DSRなどの端子のサポートがありません。%% --よく調べたらありました。こいつです。この行のコメントアウトを取ります。 usb_config.h:130:#define USB_CDC_SUPPORT_HARDWARE_FLOW_CONTROL --DTRはRB6に割り当てられていました。 --ANSELHのゼロクリアは行われていました。 --UART_DTRの制御コードは書かれていました。 --しかし、RB6はHi-Zのままでした。 --UART_TRISDTRとUART_TRISRTSを0(出力)にセットするコードがどこにもありません。 -%%つまり、ハードウェア・フロー制御のサポートもありません。%%(接続先のAVRチップなどにもないので、不要と言えば不要です。) --あるにはあるのですが、MicroChipのソースのままでは機能しません。 usb_config.h:130:#define USB_CDC_SUPPORT_HARDWARE_FLOW_CONTROL -を有効にしても、バグにより機能しません。 -CTS,DSRは見てないような・・・。 ~ ~ ~ ~ ---------- * -*-勝手に改蔵-*-勝手に改蔵-*-勝手に改蔵-*- [#rcb8b02e] Serial Emulator : DTR/RTS出力可能版 ''ダウンロード'' -[[mchip-cdc14k2.zip:http://psp.dip.jp/web/upload.cgi/PIC/mchip-cdc14k2.zip]] DTR信号をRB6端子に出力します。 ~ ~ ~ ~ ---------- *PICのボーレート計算式 [#taac70ff] 48,000,000 12,000,000 baud = ------------------------- = ------------ 4 x ([SPBRG:SPBRGH] + 1) (UBRR + 1) http://psp.dip.jp/web/jpg/PIC/baud.png -つまり、115200bpsでも分周レジスタは103であり、 -230kbps,460kbps,920kbpsくらいまでは楽勝のように見える。 -UBRR(と勝手に命名)を11にしたときに丁度1Mbps,5で2Mbps,1で6Mbps(!) -まだまだいけるじゃん。 -しかしSerialEmulatorのファームは115200以上はエラー扱いにしている。 -(つまり115200まではこのファームでいけると言うのか???) ~ ~ ~ ~ ---------- *Bootloader-Tips [#w80ed5f9] USB付きPIC18F用のBootLoaderは、今のところ4種類程度存在します。 -(1)MicroChip純正Bootloader(C18) -(2)MicroChip純正HID Bootloader(C18) -(3)diolan社がGPLで公開しているHID Bootloader(MPASM) -(4)このサイトで公開している [[HIDmon-2550]]/[[HIDmon-14K50]](MPASM) この4者は(残念ながら)''互いにプロトコルの互換性がありません。'' -(1)のみ、Windowsへのドライバー組み込みが必要です。(唯一、バルク転送を使用します) --(1)以外は、HIDデバイスなのでWindowsへのドライバー組み込み不要です。 -(2)のみ、ブートローダーのサイズが4kBになります。他は2kBに収まっています。 -(3)はPIC-18F4455のみサポートで14K50などには対応していません。 --また、転送プロトコルを暗号化する機能があります -(4)は18F2550/18F4550/18F14K50の3種類をサポートしています。 --bootloader機能以外に''PIC BIOS(printデバッグ)機能や、HIDmon(汎用USB-I/O)としても使用できます。'' ~ ~ ~ ~ ---------- *Bootloader-Tips2 [#t68f9553] アプリを書くときは当然エントリーアドレスと割り込みベクターを使用すると思いますが、 以下のように工夫することで、ブートローダー使用と単独書き込み実行の両対応が可能です。 -エントリー ORG 0 GOTO 0x800 -割り込み ORG 8 GOTO 0x808 ORG 0x18 GOTO 0x818 -実際のプログラムコード 0800: プログラムエントリー番地 0808: 割り込み処理0008のエントリー 0818: 割り込み処理0018のエントリー ・・・・ 3fff: 最大ここまで(18F14k50). -ブートローダーは0x0000〜0x800に常駐しています。 -ブートローダーがアプリを書き込むときは自分自身と重なるアドレスのデータを無視します。 -PICkit2などの外部ライターで書き込むときは全領域を書き込んでくれます。 実際には、割り込み発生時に1命令だけ無駄なジャンプが発生しますが、そのかわりに公開するHEXファイル は1種類で良いので混乱が少ないです。 ブートローダー(2)を使用する場合のみ、プログラムコード開始番地を0x1000〜に移動する必要があります。 ~ ~ ~ ~ ---------- *番外編: mcc18をLinuxで動かす。 [#z6f9375e] あまりお勧めできない方法ですが・・・。 -[[mcc18をLinux上で動かす。:http://psp.dip.jp/web/log/2009-09.html#v0d65843]] ~ ~ ~ ~ ---------- *参考リンク [#zfbe3d2d] (PICマイコンの小部屋)USB開発環境の構築 -http://www.mars.dti.ne.jp/~m7030/pic_room/usb_tool/ - 電気実験室 -http://www.geocities.jp/ii2duck/personal/s0744.html ~ ~ ~ ~ ---------- *予定 [#l7b89e5a] -汎用libusbデバイスのフレームワークもビルドしたい。
テキスト整形のルールを表示する
ログインまたはアカウント作成