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
編集
差分
PIC32MXcust の編集
-- 雛形とするページ --
(no template pages)
[[PIC32MX]] ''--*-- 勝手に改蔵 --*-- 勝手に改蔵 --*-- 勝手に改蔵 --*--'' *MicroChipのサンプルソースの動かし方・コツ [#r5968174] ここでは、MPLABやMicrohip Application Library (USB Framework)を''普通のgcc''と''普通のmake''を使ってコンパイルするコツを伝授します。 ~ ''その1)開発環境を準備する。'' -Pinguino、MPLAB v8.89、Microhip Application Library の順にWindowsにインストールします。 -準備できたら、[[USBホスト>USB_HOST]]のページにあるusbhost.zipを入手して展開し、ビルドが通ること を確かめておきます。 ~ ''その2)MicroChipのサンプルソースを持ってくる。'' -usbhost.zipを展開したディレクトリに丸ごとソースを上書きします。 -HardwareProfile.hは上書きせずにusbhost.zipのものを置いておきます。(追記する必要はあるかもしれません) -MPLABのプロジェクトファイル *.mcp を参考にしながら、Objs.mak を書き換えます。 -とりあえず、ここまで出来たらビルドしてみます。 ~ ''その3)MicroChipのpic32-gccと、Pinguinoのmips-gccの違い。'' Pinguinoのmips-gccは、 - #pragma が使えません。 -- #pragma config にてConfig Fuseを設定している部分については、 config.c に別の記述方法で書く必要があります。 -- しかし、Fuseの設定などはアプリごとにそんなに変わるものではありませんから、usbhost.zipのconfig.c をそのまま流用すれば大体OKです。 -- Fuse以外のpragmaは使われていないようなので無視します。 -- #pragma で始まる行はmips32-gccでは丸無視しますので、わざわざ消さなくても大丈夫です。 ~ - リンカースクリプトがやや違います。 -- これもアプリごとにそんなに変わるものではありませんから、usbhost.zipのリンカースクリプト をそのまま流用すれば大体OKです。 ~ - 割り込みベクターの記述が微妙に違います。 -- pic32-gccでは、関数 __attribute__ により、割り込み応答関数を割り込みベクターの番地に置くことが出来るようですが・・・ -- そもそも、割り込みベクターは1エントリー16byte程度しかありませんので関数実体をそこに置くのは無理があります。 -- ですので、mips-gccで書くときは割り込み応答関数には __attribute__((interrupt,nomips16))だけを与えて、 ROM上のどこにあっても良いようにしておきます。 -- 割り込みベクターから応答関数へのジャンプは、アセンブラで記述することにします。(現在はとりあえずcrt0.S内に書いています) --参考ファイル:[[vgagfx.zip:http://psp.dip.jp/web/upload.cgi/PIC/vgagfx.zip]] の中にある、crt0.S を参考にしてください。 --%%BOOT-ROM領域からFLASH-ROM領域への(1命令) jmpは届きませんので、なんらかの工夫が必要です。%% --%%($k0,$k1レジスタはコンパイラが使用しないことが一応保証されていますので、これを使用してセグメントを跨ぐ分岐を書きます。)%% -上記問題を回避するためは、 _CP0_SET_EBASE(ebase_address); -を実行して、割り込みベクターを(例えば)9D00_1000〜に置くか、BOOT_ROM上でもkseg0上(9FC0_0000〜)に置くようにすると、普通のjmp命令1個で分岐出来ます。 -(_CP0_SET_EBASEを呼ばない場合は、割り込みベースがBFC0_0000になっていると思いますので、$k0,$k1を使用して分岐するようなコードを書く必要があります。) ~ ~ ~ *Pinguinoのサンプル・スケッチをC言語の普通のソースツリーにして取り込む方法。 [#y0b049fb] ''その1)あらかじめPinguinoのGUIを起動して、スケッチをビルドしておく'' -C:\PinguinoX.3\source\ ディレクトリに、C言語に変換されたあとのスケッチが残りますので、これを拾ってきます。 main32.c <=== メインルーチン user.c <=== main32.c がmain()関数の直前にインクルードする。 -そのままビルドツリーに突っ込んでもビルド出来ますが、(というかGUIはsource/ディレクトリで実際にビルドしているだけなので) -「CソースからCソースのインクルード」が嫌いな人は、以下のようにします。 ~ -C:\PinguinoX.3\include\pinguino\core\*.c の中で、main32.c がインクルードしているソースを個別に拾ってくる。 -main32.c でソースを全部インクルードするのはやめて、各ソースを個別にコンパイルするように改造する。 ~ ''その2)DIPマイコンPIC32MX220F032Bに対応させる'' -Pinguinoの現状の問題点として、MX220F032Bに完全には対応していないことがあります。 -Pinguinoの本家の基板はMX460とか795のような大規模Chipに対応しているようなので、MX220で動かそうとすると全然ピン数が足りなかったりとか、ピン割り当てが違ってるとか、ピンコントロールするsfrレジスタがそもそも無かったりとか微妙です。 -ですので、ビルドでエラーするところをMX220対応させるために手直しします。 -そして、実際に動かしてみると、いろいろチップの違いで動かないことがあったりピン割り当てが違ってたりするので、そこも手直ししていきます。 -やっと動くようになります。 ~ -このチップ間移植問題は、Pinguinoのライブラリでも発生しますが、同様にMicroChipのサンプルソースでも発生します。 -コンパイラの変更や、ビルド環境の違いを吸収する作業よりも、チップの差異によるサンプルソース非互換問題を解決するほうがずっと手間が掛かります。
タイムスタンプを変更しない
[[PIC32MX]] ''--*-- 勝手に改蔵 --*-- 勝手に改蔵 --*-- 勝手に改蔵 --*--'' *MicroChipのサンプルソースの動かし方・コツ [#r5968174] ここでは、MPLABやMicrohip Application Library (USB Framework)を''普通のgcc''と''普通のmake''を使ってコンパイルするコツを伝授します。 ~ ''その1)開発環境を準備する。'' -Pinguino、MPLAB v8.89、Microhip Application Library の順にWindowsにインストールします。 -準備できたら、[[USBホスト>USB_HOST]]のページにあるusbhost.zipを入手して展開し、ビルドが通ること を確かめておきます。 ~ ''その2)MicroChipのサンプルソースを持ってくる。'' -usbhost.zipを展開したディレクトリに丸ごとソースを上書きします。 -HardwareProfile.hは上書きせずにusbhost.zipのものを置いておきます。(追記する必要はあるかもしれません) -MPLABのプロジェクトファイル *.mcp を参考にしながら、Objs.mak を書き換えます。 -とりあえず、ここまで出来たらビルドしてみます。 ~ ''その3)MicroChipのpic32-gccと、Pinguinoのmips-gccの違い。'' Pinguinoのmips-gccは、 - #pragma が使えません。 -- #pragma config にてConfig Fuseを設定している部分については、 config.c に別の記述方法で書く必要があります。 -- しかし、Fuseの設定などはアプリごとにそんなに変わるものではありませんから、usbhost.zipのconfig.c をそのまま流用すれば大体OKです。 -- Fuse以外のpragmaは使われていないようなので無視します。 -- #pragma で始まる行はmips32-gccでは丸無視しますので、わざわざ消さなくても大丈夫です。 ~ - リンカースクリプトがやや違います。 -- これもアプリごとにそんなに変わるものではありませんから、usbhost.zipのリンカースクリプト をそのまま流用すれば大体OKです。 ~ - 割り込みベクターの記述が微妙に違います。 -- pic32-gccでは、関数 __attribute__ により、割り込み応答関数を割り込みベクターの番地に置くことが出来るようですが・・・ -- そもそも、割り込みベクターは1エントリー16byte程度しかありませんので関数実体をそこに置くのは無理があります。 -- ですので、mips-gccで書くときは割り込み応答関数には __attribute__((interrupt,nomips16))だけを与えて、 ROM上のどこにあっても良いようにしておきます。 -- 割り込みベクターから応答関数へのジャンプは、アセンブラで記述することにします。(現在はとりあえずcrt0.S内に書いています) --参考ファイル:[[vgagfx.zip:http://psp.dip.jp/web/upload.cgi/PIC/vgagfx.zip]] の中にある、crt0.S を参考にしてください。 --%%BOOT-ROM領域からFLASH-ROM領域への(1命令) jmpは届きませんので、なんらかの工夫が必要です。%% --%%($k0,$k1レジスタはコンパイラが使用しないことが一応保証されていますので、これを使用してセグメントを跨ぐ分岐を書きます。)%% -上記問題を回避するためは、 _CP0_SET_EBASE(ebase_address); -を実行して、割り込みベクターを(例えば)9D00_1000〜に置くか、BOOT_ROM上でもkseg0上(9FC0_0000〜)に置くようにすると、普通のjmp命令1個で分岐出来ます。 -(_CP0_SET_EBASEを呼ばない場合は、割り込みベースがBFC0_0000になっていると思いますので、$k0,$k1を使用して分岐するようなコードを書く必要があります。) ~ ~ ~ *Pinguinoのサンプル・スケッチをC言語の普通のソースツリーにして取り込む方法。 [#y0b049fb] ''その1)あらかじめPinguinoのGUIを起動して、スケッチをビルドしておく'' -C:\PinguinoX.3\source\ ディレクトリに、C言語に変換されたあとのスケッチが残りますので、これを拾ってきます。 main32.c <=== メインルーチン user.c <=== main32.c がmain()関数の直前にインクルードする。 -そのままビルドツリーに突っ込んでもビルド出来ますが、(というかGUIはsource/ディレクトリで実際にビルドしているだけなので) -「CソースからCソースのインクルード」が嫌いな人は、以下のようにします。 ~ -C:\PinguinoX.3\include\pinguino\core\*.c の中で、main32.c がインクルードしているソースを個別に拾ってくる。 -main32.c でソースを全部インクルードするのはやめて、各ソースを個別にコンパイルするように改造する。 ~ ''その2)DIPマイコンPIC32MX220F032Bに対応させる'' -Pinguinoの現状の問題点として、MX220F032Bに完全には対応していないことがあります。 -Pinguinoの本家の基板はMX460とか795のような大規模Chipに対応しているようなので、MX220で動かそうとすると全然ピン数が足りなかったりとか、ピン割り当てが違ってるとか、ピンコントロールするsfrレジスタがそもそも無かったりとか微妙です。 -ですので、ビルドでエラーするところをMX220対応させるために手直しします。 -そして、実際に動かしてみると、いろいろチップの違いで動かないことがあったりピン割り当てが違ってたりするので、そこも手直ししていきます。 -やっと動くようになります。 ~ -このチップ間移植問題は、Pinguinoのライブラリでも発生しますが、同様にMicroChipのサンプルソースでも発生します。 -コンパイラの変更や、ビルド環境の違いを吸収する作業よりも、チップの差異によるサンプルソース非互換問題を解決するほうがずっと手間が掛かります。
テキスト整形のルールを表示する
ログインまたはアカウント作成