• 車種別
  • パーツ
  • 整備手帳
  • ブログ
  • みんカラ+

marumonのブログ一覧

2012年10月27日 イイね!

PIC32MX250B128B USB Bootloader動いた

ここ数日、毎度のことながら完膚なきまではまり込んでいるのが、SDカードの読み書き。結局microchipのライブラリは動かず!3日以上無駄にしてる。
こういうときは最後の頼みと、ChaNさんのライブラリ使ったら、あっさり読める。
なにそれ? ホントmicrochip純正のライブラリ類は、この前のサンプルといい、昔々のAD変換ライブラリの勝手にコンフィグといい、まともに動かない!っていうか、ハードもエラッタありまくりだし、特にひどいのは、PIC32MX1xx/2xxのAD変換のスピードの500kHz制限。チップのうたい文句に1MHzまでいけるって謳ってるのに、エラッタで動きません、とは不当表示で公正取引委員会に捕まるレベルと思うのだけどなー。

それに引き換え、ChaNさん凄すぎ。microchipの公式webサイトにも紹介されているし、そりゃ、ChaNさんのライブラリのほうが動くもんなー。

--------------------------------------------------------------------
それより、SDカードの読み書きをテストしてるうちに、pickitのロジアナがどうもうまく動いていないような気がするのだ。クロックを見ても、ちゃんとパルスを拾っていないみたい。せっかくだし、自作してみるかー、と思い立ったけど、、
ロジアナの開発では、当然SDカード担当のpicも同時開発になるので、pickit2差し替えるの面倒。となると、ロジアナはブートローダで、開発しよう。
なら、まずブートローダを試さないと。
と言う論法で、ブートローダのお勉強。

ブートローダ本体は、この前のUSBを内蔵FRCで何とかするコードを入れたら、割とあっさり動き出した。ついこの前、microchipのライブラリのバージョンが上がって、PIC32MX1xx/2xxもこうやれば動くよ、なんて説明がつくようになっていて、ちょっと親切かも、と思った。

しかし、それに乗せるアプリケーションの方は、ちょっとはまった。
Link Error: Could not allocate program memory
説明どおりにリンカスクリプト入れ替えても、エラーが出る(;_;)

/* User has to modify the LENGTH of kseg0_program_mem based on the Flash Size available in the chosen part number.*/
kseg0_program_mem (rx) : ORIGIN = (0x9D006000 + 0x1000 + 0x0 + 0x490), LENGTH = 0xB70

リンカスクリプトには、このように変更しろとはあるけど、どうやるの?もう、pic32になると、仮想メモリだ、バスマトリクスだと、だんだん手におえなくなってきているのに、リンカスクリプトもよくわかりませーん。


で、こういうときはひたすら眺めるに限る。


まず、コンパイラではメモリスペースは、0x20BF0となっている。


で、xc32のdefaultリンカスクリプト(らしきもの)では、、、、
うーん、なんとなく0x1F000+0x1000 = 0x20000だよな。
0x760+0x490は0xBF0

なんとなくあたりかも。つまり、0xBF0=3056となって、ブート領域の+3kのメモリサイズと思われ。0x20000が本体の128Kではないかと。

そうであるなら、本来0x20000あるけど、スタート位置がそれぞれのセクション分ずれているので、LENGTH = 0x18B70が正解ではないかと。。

まあ、ちょっと多めにしておいても、どうせメモリいっぱいになるようなプログラムは作らないだろうから、動いたしいいや。


Posted at 2012/10/27 17:25:29 | コメント(0) | トラックバック(0) | 電子工作 | 日記
2012年10月20日 イイね!

PIC32MX220F032B mips16使えないとUSBホストちょっと終了かも

今日は、時間掛けてXC32の最適化の具合を試してみました。というのも、以前PIC32MX220F032Bにbluetooth乗せようといろいろやっていたとき、確かもう少しで32kに収まりそう。なんてやっていたのに、USB Host - Mass Storage - Thumb Drive Data Loggerがぜんぜんサイズでかいのはちょっとおかしいと思うのですね。

で、何でサイズでかくなるのかと言うと、XC32 v1.11だと Pro Compiler option (mips16 mode) ignored due to an invalid license となぜかevaluation licenseでもmips16のオプションが効かないからですね。

と言うわけで、知り合いに頼んでv1.10を借りてコンパイルしてみると、やはりこちらのバージョンでは、mips16通ります。出来上がったサイズは、mips16 Os で32kをちょっと超える程度でした。さらに、FSconfig.hをいじって、file serach と dir と realtimestamp をやめてみると、、、


見事32kに収まりました。一応uartも少し入っているので、ロガーとして何とか使えるように出来そうです。

さらに今度はmips16はなし、Osだけでコンパイルすると


やはり、32kの壁を越えてしまいました。そりゃそうでしょう。mips16は単純に32bit命令を16bitに置き換えるんですから、コードサイズは半分、、、とは行かなくても小さくなるはずです。それを使えないのは、やはりつらい。さらに、free licenseで許される O1だと


実はこっちの最適化は、あんまり変わらないと言うか、もともと32k超えちゃってるんで、もうどうでもいいかも(^^;;;

と言うわけで結論、mips16の最適化コンパイルライセンスが、使えなくなった XC32 v1.11の環境では、PIC32MX220F032BをUSBホスト関係で使うのは、かなり無理がある、と思います。せっかくクリスタル無しで使えるようになったのに~。

あと、pinguinoで使ってる、mips-gccだと、mips16も使えるはずですが、なんせ敷居が高すぎて、素人には使いづらい。素直にPIC32MX250F128Bに退避しておいて、どなたかが素人でもmips-gccを使えるようにしてくれる日を待つのが吉かと。というか、mplabxで使えるようにして欲しいな~。
Posted at 2012/10/20 16:09:18 | コメント(0) | トラックバック(0) | 電子工作 | 日記
2012年10月19日 イイね!

PIC32MX250B128B クリスタルなしでUSBメモリの読み書き成功

PIC32MX250B128B クリスタルなしでUSBメモリの読み書き成功昨日に引き続いて、PIC32で今度は、USBメモリに挑戦。まず、クリスタルありで、サンプルのUSB Host - Mass Storage - Thumb Drive Data Loggerをビルドして書き込む。電源を入れて4GBのUSBメモリを差し込むと、あっさり成功。昨日からなんかうまく行きすぎ。ならと、今度は100均で買ってきた、SDカードリーダーで、SDカードの読み書きさせると、、、さすがにうんとも言わない。USBに供給してるのはpickitからの3.3Vなので、パソコンのUSBから取った5VをUSBカードリーダーに供給して再度挑戦してみると、これまた成功。どうしたんだ、オレ。

さらに、これまた100均のmicroSDカードリーダーと、確か千石で買った99円だったかのカードリーダも動く。クリスタルありなら、問題ない。

さて、ファーム的には問題ないので、懸案の内蔵FRCで動くかどうかだけど、配線変えてコンフィグを変えて、とやると、これまたあっさり動いた。ホストの方がUSBのタイミング的には、厳しいのかゆるいのかわからないけど、これで昨日のデバイス側と合わせて、PIC32のUSBは内蔵FRCで動かせる、と言っていいと思われ。

で、昨日はPIC32MX220B032Bが、デバイス側としてが動いたので、こっちも試そうとしたら、コンパイル後のコードサイズが大きすぎ(64K近くある)。そういえば、コンパイラの60日ライセンス切れで、最適化が効かなくなっているわけで、とmicrochipのサイトを覗くと新しいXC32があったのでそれを試す。が、あんまり小さくならない。しかも、新しいバージョンはmips16のオプションが、無料ではなく最初から有料になってるっぽい。

pinguinoのコンパイラならmips16やら最適化オプション使えるそうで、落としてみたけど、mplabxはツールチェーンとして認識しないので、コマンドラインでmakeしないといけないようで、使い方がいまいちわからん。

うー、ようやくはまってきたかも、と考えながら、そういえば、SDカードならSPIでも読めたっけと、MDD File Systemのマニュアル見たら、PIC32だと、SDの読み書きするだけでコードサイズが32k超えそう=PIC32MX220B032Bでは無理。

まあ、今のところ、PIC32MX250B128Bが10個もあるから、無理せずこれで、USB使ってればいいか、と言うことで、本日のお勉強終わり。
Posted at 2012/10/19 14:00:22 | コメント(0) | トラックバック(0) | 電子工作 | 日記
2012年10月18日 イイね!

PIC32MX220F032B クリスタル無し、内蔵FRCでUSB

220円と安いUSBホスト機能付きのPIC32MX220F032Bだけど、せっかく安いのにPIC24FJ64GB002と違って、内蔵FRCではUSBを動かせない残念な仕様。クリスタルつけてコンデンサを2つ、となると、120円かかる気がするので、せっかくの安さが台無しに。

で、何とかできないか、と作戦を練っていたら、ふと覗いたmicrochipのフォーラムに no crystal usb なんて、まんまそのままのトピックが。なるほど、REFCLKOを使えばいいのか。オレはPBCLKをCLKOから出して、ECに入力して、、、と考えていたけど、おしかった(^^;; 。投稿主はわざわざFRCチューンのパラメータを変えて、クロックを遅くしたり早くしても、ちゃんと動くよ、なんてテスト済み。すばらしい。でも、コードは載ってないのよね。

と言うわけで、試してみようとしたけど、調べてみると、PIC32MX220F032Bでは、REFCLKOは独立したPINではなく、PPSの管轄。
となると、、、最初に何らかのクロックで立ち上げて、REFCLKOやPPSを設定して、それからクロックを切り替えて、走らせてやらないといけない。
というわけで、クロックの切り替えをまずテスト。CSECMDとCSDCMDの違いを始めてわかった。 FRCで立ち上げた後、そのクロックをREFCLKOに出して、ECPLLに切り替え。切り替え後もFRCは動き続けて、REFCLKOにクロックを出し続けてる模様。
次に、クリスタルを使って、CDCシリアルがちゃんと動くことを確認。
いよいよ、内蔵FRCに切り替えて、CDCシリアルが、、、動きました。結構さくっと動いた(^^)/

もちろん、同じようにPIC32MX250F128Bでもいけるはず。これで、USB工作捗るぞ~

ちなみに、コードはつぎのとおり
PPSOutput(3, RPA4, REFCLKO)としているので、RA4とCLKIを配線する必要あり。(あと電源とかレギュレータのコンデンサとかもね)

// DEVCFG2
#pragma config FPLLIDIV = DIV_1
#pragma config FPLLMUL = MUL_20
#pragma config UPLLIDIV = DIV_1
#pragma config UPLLEN = ON
#pragma config FPLLODIV = DIV_2

// DEVCFG1
#pragma config FNOSC = FRC
#pragma config FSOSCEN = OFF
#pragma config IESO = OFF
#pragma config POSCMOD = EC
#pragma config OSCIOFNC = ON
#pragma config FPBDIV = DIV_1
#pragma config FCKSM = CSECMD

int main(void) {

mSysUnlockOpLock( {PPSOutput(3, RPA4, REFCLKO);});

  OSCREFConfig(OSC_REFOCON_FRC,
 OSC_REFOCON_OE | OSC_REFOCON_ON, 1);

mSysUnlockOpLock(
{OSCCONbits.NOSC = 3; //ECPLL
OSCCONbits.OSWEN = 1;}
);

while(OSCCONbits.COSC != 3) ;  //念のため入れてみた
SYSTEMConfigPerformance(40000000);

  // これで、システム40MHz USB48MHz できあがり
}

Posted at 2012/10/19 00:21:24 | コメント(0) | トラックバック(0) | 電子工作 | 日記
2012年10月16日 イイね!

ミシュラン最新スタッドレス「X-ICE XI3」、ロング・ロングモニター!

■昨シーズン装着していたスタッドレスタイヤのメーカーをお答えください
(装着していた方のみ)

BS revoGZ

■これまでにミシュランのスタッドレスタイヤを履いたことがありますか?

XI2

■その時の印象はどのようなものでしたか?
(ウインタードライブでのエピソード等がありましたら、併せてお答えください)

当時のフェアレディZにXI2の組み合わせは、関西圏に住むスキーヤーにとって、究極の選択の一つだったと思っている。どこのスキー場に行くにも、まずドライな高速道路を延々と走るわけだから、高速でいかに快適に走れるか、それが重要なのだ。
もちろん、スキー場が近くなれば、雪道になるわけだが、見通しの良いコーナーでは、入り口でちょっとハンドルを切ってきっかけを作ってやり、後はアクセルでテールを滑らせて出口に向かう、なんてFRならではのドライブが楽しめたのも、雪道でしっかりグリップするタイヤに対する信頼感があればこそだった。


■愛車情報ならびにタイヤサイズをお答えください。
メーカー/車名/年式:ホンダ フリードスパイク4WD/2011
タイヤサイズ(前):185/65R15
タイヤサイズ(後):185/65R15

■X-ICE XI3を履かせた愛車の使用用途を教えてください。
(ex.通勤、通学、帰省、スキーなどのレジャー)
また、氷雪路面とドライ路面を走行する割り合いをおおまかに教えてください。
(ex.氷雪路面:ドライ路面=3:7)

ほぼスキー専用。
今年は、八方に通う予定もあるので、
氷雪路面:ドライ路面=1:9 位になると思う

※この記事はミシュラン最新スタッドレス
「X-ICE XI3」、ロング・ロングモニター!
について書いています。
Posted at 2012/10/16 23:18:19 | コメント(0) | トラックバック(0) | タイアップ企画用

プロフィール

「[車中泊6泊目]今日は寒かったー http://cvw.jp/b/1110950/39009397/
何シテル?   12/15 18:05
marumonです。よろしくお願いします。
みんカラ新規会員登録

ユーザー内検索

<< 2012/10 >>

 123456
789 1011 1213
1415 1617 18 19 20
212223242526 27
28293031   

リンク・クリップ

友情パワーよ、ありがとう(^^) 
カテゴリ:その他(カテゴリ未設定)
2012/11/08 22:46:45
自作ハザードイルミ点滅 
カテゴリ:その他(カテゴリ未設定)
2012/04/17 19:25:27

愛車一覧

ホンダ フリードスパイク ホンダ フリードスパイク
主にスキー用。たまに、自転車運びます。

過去のブログ

2025年
01月02月03月04月05月06月
07月08月09月10月11月12月
2024年
01月02月03月04月05月06月
07月08月09月10月11月12月
2023年
01月02月03月04月05月06月
07月08月09月10月11月12月
2022年
01月02月03月04月05月06月
07月08月09月10月11月12月
2021年
01月02月03月04月05月06月
07月08月09月10月11月12月
2020年
01月02月03月04月05月06月
07月08月09月10月11月12月
2019年
01月02月03月04月05月06月
07月08月09月10月11月12月
2018年
01月02月03月04月05月06月
07月08月09月10月11月12月
2017年
01月02月03月04月05月06月
07月08月09月10月11月12月
2016年
01月02月03月04月05月06月
07月08月09月10月11月12月
2015年
01月02月03月04月05月06月
07月08月09月10月11月12月
2014年
01月02月03月04月05月06月
07月08月09月10月11月12月
2013年
01月02月03月04月05月06月
07月08月09月10月11月12月
2012年
01月02月03月04月05月06月
07月08月09月10月11月12月
2011年
01月02月03月04月05月06月
07月08月09月10月11月12月
ヘルプ利用規約サイトマップ
© LY Corporation