STM32F7を使ってみる13 -STM32F769I-Discoveryを動かしてみる2-

>ARM、禿に喰われる
>ARMはもう終りDA!

うろたえるな小僧共ー!

(↑C.V.牡羊座のシオン様で)

禿の習性からして中身ろくに見ないでまーた買い物のための買い物やっただけだから
アリババの時みたいにどうせすぐにリリースしちゃうでしょう。
ていうか"買収する"と言ってるだけで20160803の時点で買収が完了"した"とは
言ってないのでまだ禿に喰われてすらいない段階ですね。
ほんとに買い物のための買い物(しかも高額な買い物するそぶり)ですわこれ。


こと電子工作で使用するARMマイコンの範囲においてはまったく何の影響も出ない
と思います。尤もARMが禿に衰退させられるような程度のジョンブル野郎だったの
ならねむいさんのほうからお断りで自然歩道一本に絞ってこのぶろぐ続けます。

というわけでこの件についていろいろ質問もらったので虹裏メイドねむいさんとしての
見解をさせていただきました。かしこ。





































すみませんうっかり本日のぶろぐ終わらせそうになってしまいました。

今回は主にSTM32F769I-Discoveryに実装されたAudioCodecを利用してサウンド
再生機能つけるべく頑張ってみました。

●STM32F4-Discoveryからのサウンド再生機能の移植

STM32F769I-Discoveryはご覧のとおりAudioCodec(WM8994)とは生粋のI2Sでは
無くSAI(SerialAudioInterface)のI2S機能から接続されています。
基本的なものはSTM32F4-Discoveryの時と同じなので基本的な部分を押さえつつ
F7のHALに合わせるよう移植していきました。


困ったのがサンプルレートから実際のI2S用のクロックを生成する関数で既存の
BSPの関数を流用すると何でか2倍速で再生してしまうという現象にぶち当たって
しまったことです。
これなんとなくHALのバグっぽいな〜と思っているのですがeMMC対応したとき
かなり時間を喰って懲りているので深追いはせず、自作のテーブルを参照して
適切なPLL値をPLLI2Sに付与する関数を経由させるようにしました。
ややこしいですがSAIのクロック元はPLLI2Sから供給しています。BSPもそのように
なっています。


ていうわけで2作業日くらいで移植完了です。
画像はmp3ファイルを再生しているところです。画面のIART,INAMはID3v1もしくは
ID3v2タグを解析し表示しております。aac,wavファイルも同様に再生できます。


最初にmp3を移植した頃は良く分からなくて実装していなかったのですが、ID3に
格納されている"UTF-16LE"の文字列をChaN氏のFatFsに収録されているff_convert()
関数を用いてS-JIS形式の2バイト文字に直して表示するようにしました。もちろん
ascii形式でも崩れないように対策済みです★
ていうかID3関連はかなり長い期間適当に作って放置しててID3タグ解析の段階でコケて
mp3/aac形式ファイルが再生できない場合があったのず〜〜〜〜〜〜っと放置してました
ごめんなさいごめんなさい!!!!!
STM32F4のほうも今回の修正は横展開しておきましたのでご安心ください。

STM32F769I-DiscoveryなんてもってないYO!という方もご安心ください!
makefileの定義を変えるだけで秋月さんのところで購入できるSTM32F746G-Discovery
でも同じようにオーディオファイルの再生が可能です!



そいえばビットレートが高いデータをサーキュラDMAでバリバリ送る使い方すると
SDIO/SDMMCのDMA転送に干渉してコケる問題はSTM32F7になっても解消されていない
のでmp3/aac/wav形式対応にした場合SDMMCはDMAでは無くFIFOのポーリングで転送
するようにしておりますorz

さらにポーリングの場合はSDIOのクロック周波数が高い場合受信時のアンダー
フローが起こりやすいのでハードウエアフローコントロールを有効にするように
しました。STM32F4ではエラッタで使用不可とされてきましたがF7シリーズでは
解禁です★

さらにさらにですが昨年STM32F4で行ったアライメントズレ対策をSTM32F7に展開
して実装した際に大バグを作りこんでいた事が発覚しコレも修正しています・・・
一年以上ほっぽっていましたが皆raspberryに逝っちゃってSTM32F7に見向きも
しなかったのでばれずに助かりました・・・これもID3タグ解析の実装見直したときに発覚orz



●画面がでかくなったからでかいサイズの動画再生してみる
ChaNさんのLPC2388向けFatFs移植例には独自形式で動画を再生できる機能がありま
した。ねむいさんはこれを他マイコン向けに拡張しつつ使い続けてきました。

STM32F769I-Disccoveryになって画面サイズが800x480に一気に広がったので、
少しデカめのファイルを作ってちゃれんぢです。

とある動画からAVCフォーマットでエンコードされたmp4形式のファイルをAviutilで
無圧縮aviにしてそこからChaN氏のツールで独自形式のファイルに直します。

ちなみに独自形式に変換するavi2imgはChaN氏のFatFs実装例ffsample.zip内¥lpc23xx¥tools¥にあります。
今回のねむいさんの移植例ではDMA2Dの関係でビッグエンディアンが要求されるので
avi2imgを自前でビルドしなおさなければなりません。さらに最大サイズも変更する必要が
あります。真似される方はご注意ください。


再生するプログラムのほうも少し手を加えました。
ファイル名と現在フレーム/総フレームを表示できるようにしておきました。

また、display_basis.hのENABLE_PERFORMANCE_MEASUREMENTのdefineを有効にすると
上記の代わりに一秒あたりのフレーム数を表示できるようにしました。


この動画は640x360サイズあります。一ドットあたりRGB565の16bit=2バイトあるので
一画面あたりのバッファサイズは640*360*2=460800byte必要です。そこから30fpsの
動画を表示せしめようとしたら460800*30=13824000(byte),つまり約13.8MByte/Sec
の速度で読み出さないといけないためSDMMCのNomalSpeedMode(MAX12.5MByte/Sec)
ではまったく歯が立ちません。


この動画はオリジナルは29.97fpsとなっており、そこから生成されるimgファイルも
同じく29.97fpsのためノーマルスピード(ねむいさんの移植例ではSDMMC用のベース
クロックがPLLSAIから生成される48MHzからのため最大12MByte/Sec)では先に述べた
とおりまったく足らず20fps前後しか出ません。


SDMMCのクロックをハイスピードモード対応(ねむいさんの移植例では最大24MByte/Sec)
にすると転送が余裕で間に合うためきっちり29.97fpsが出ます♥
う↑ま↓ぃ↑やったぜー
さすがにこれ以上のサイズだと転送サイズも肥大化していくためスムーズな再生は
難しくなりますがねむいさんはタイチョウの作る動画がオリジナルサイズとFPSで再生でき
ればそれで満足なのでコレでよしとします。ぜんぜんよくないですけど。
使用するSDカードそのものの転送速度も重要になるはずなのでこちらを熟読して、
私の真似される方はカードもしっかり選んでみてください。







・・・ぇ?元の動画を見てみたいですって?・・・まあ別にいいですけど動画内コメントに
警告がありますが桁外れにヤバイ内容なので無理だと感じた方はすぐにブラウザを
閉じて退避した方がいいと思います

"すぐに"を具体的に言うと最初の3フレームめまでです。時間で言うと100mSec以下の
反応速度でブラウザを閉じれば安全となります。ねむいさんのぶろぐを会社や学校
から見ているクレイジーな方々はuSecオーダーで超反応できる人間だらけなので
多分大丈夫と思います。ちなみにねむいさんのSTM32F7のサンプルから再生した場合、
タッチパネルの読み込みが100mSec間隔のため逃れられません。覚悟してください。

ねむいさん的にはゼEROの中でもコレはテーマ性・ストーリー性・変態性・音楽性・
危険性・テンポ・○ンポの全てが危険水準を大きく逸脱した迷作中の冥作であり、
634タイチョウの無限の可能性と危険性を垣間見ることが出来る貴重な作品であると確信
しているのですがリアルタイムで投下されたときはこの人本当に気が狂ってしまった!
と思ったのですがこんなヤバイ動画ばっかり作っててラブライバーに自爆テロ食ら
わないのかYO!大丈夫か曜!とか思っているのですがねむいさんもイケナイお口のほむコラばっかり
やっててやってる事あんまし変わらないかもと思っているのです!
が!
虹裏メイドねむいさんは「ラブライブ!サンシャイン!!」を応援しております!
.見ないと注↑射↓なんですぅ♥










戯言はこの辺にしてちょっと早いですが上記の更新を追加したSTM32F7のいつもの
をいつもの場所に上げておきます
。この一ヶ月間でFatFsにも大量にぱっちが
当たってR0.12aになっていますので全て適用しております★
上のほうでも述べましたがSTM32F4にも横展開しましたのでSTM32F4-Discovery
しかもっていない・・・!なんていう方も安心です♥


次回は真面目にブログ更新します!!!!!!!!!!!

STM32F7を使ってみる12 -STM32F769I-Discoveryを動かしてみる-




超忙しい状態が続いてるせいかせっかく買ったのに半月ほど寝かせてたらその間に
円安が進んで損したF**K!!

それはおいといてSTM32F769I-Discoveryを私も手に入れました★昨年販売された
STM32F746G-Discoveryを機能的に踏襲しつつ新たな機能が更に盛り込まれています。


今回の目玉はMCUのF7系最強のSTM32F769Iなわけですが、今回ついに、ついに倍精度
浮動小数点ユニットが搭載されることとなりました!!長かった・・・
ついでに細かいCortex-M7のエラッタがさりげなく直されていますがあとで紹介します。



ハードウエア的には前回は16bit分減らされて容量も半分しか使えなかったSDRAMが
32bit分全開使えて容量もアップした事とすっかりおなじみになったQSPIも64Mbyte品
に容量アップでまさに最強に強まっています!!!


では早速電源投入を・・・
・・・ぁ・・・microUSBコネクタだ・・・


microUSBケーブルを引っ張り出してきて改めて電源投入!


なんかTouchGFXというのとEmbeddedWizardとかいうのが新たにメニューに追加
されていますね。


TouchGFXのBirdtheCoinとかいうのをやってみましょ


・・・!!!
クソゲーすぎる・・・
DMA2Dのパフォーマンステスト兼ねてるみたいですね。


さてお次はEmbeddedWizardです


容量性タッチパネルコントローラの機能を最大限に生かした入力デモが利用できます。


このようなオシロ風表示もらくらくです★




お遊びはこの辺にして私のいつものをF769Iに移植してみました。

移植に関してですがF746シリーズと決定的に違う点は内蔵RAMが増量、PLL-Rが追加
されているのと倍精度浮動小数点演算ユニットの対応です。
newlibで倍精度演算ライブラリを利用できるようにするためにはGCCコンパイラに
"-mfloat-abi=hard -mfpu=fpv5-d16"を渡すべきです。

後は液晶表示のためのペリフェラルがRGBでは無くDSIを利用している点です。
DSIは速度が速すぎるため、他ポートとの兼用はしておらず完全独立しております!
DSIの叩き方等の見本はBSPが充実していますのでライセンスに乗っ取ってまるっと
利用させてもらいます。

そんでもってSDMMCのポートは二つに増えましたがこのボードではSDMMC2のみを
SDカード用のポートとして利用していますのでこちらに替えるようにします。


そしてOpenOCDでビルドしたバイナリを焼く・・・!
ねむいさんのおきぱのOpenOCDバイナリはSTM32F76x/77x系にすでに対応しています★


いつものが無事起動しました。SDカードもしっかり見えてディレクトリを読めています!


libjpeg,giflib,libpng等の画像デコードもいつものように無事に表示できてます♥
でも展開時の表示がなんかもたついてる感じがするんですよね・・・
解像度が800x480に上がったせいかはたまたDSIとDMA2Dの連携が上手くいってないのか
この辺の調査は次回に繰り越します。


あと今回重要なポイントは冒頭で述べたCortex-M7コアのエラッタでデバッグ時に
ペンディングビットが立った状態だとブレークポイント張ってないのにもかかわらず
強制的にその割り込み処理の先頭でブレークしてしまうと言うちょっと厄介な
エラッタが修正されています。
画像はF746におけるUART割り込みでブレークポイント無効なのに何故かUARTの割り
込み処理の先頭でとまっちゃているのが分かると思います。


というところで駆け足で紹介しましたが今からF7に入門される人たちは上記エラッタが
修正されたSTM32F769が搭載されているSTM32F769I-Discoveryを購入して遊ぶのが
最も最適かと思います。

んでもって私のF7のサンプルはすでにSTM32F769I-Discoveryに対応している(もちろんmake
fileの設定でF746-G化も可能です)ので手前味噌でありますがどしどしご利用ください!


GPS/GNSSモジュールを試用する15 -Gms-g9改めTitan3のファームウエアを更新する(ついでにTG-4のGNSSの性能も見る)-

今から去ること3年前、Gms-g9のファームウェアを更新しましたが2016年の今
改めてファームをアップデートしてみました。


この数年間で色々ありましてGms-g9もTitan3なる名前に変わり(パーツナンバは
Gms-g9のままですが)リニューアルしております。同モジュール内のメインチップ
MT3333のリビジョンやGNSSパッチアンテナは多少は変わっているでしょうけども
基本的なハードウエアの土台ついては変わっていないはずです。

勿論私ができるのはファームウェアの更新だけなのでGtopにアポイントメントを
とって2016年版の新ファームを作成してもらいました。



そしてもらったら即・更・新!!!


前回のファームウエアバージョンストリングは

だったのですが

今回は

こんな感じです。

メジャーバージョンはAXN3.20からAXN3.80までアップしています。
両者の大きな違いは送出されるセンテンスです。AXN3.80ではNMEA4.10に準拠
したトーカIDとなっていて以下のように変化しております。
(Titan3 データシートVOGより抜粋)


GPS+QZSSしか使用しない場合は従来の$GP***ですがGLONASS,Beidou,Galileo
のいずれかを有効にしていると$GN***に完全に変わってしまうので自作の
ロガーを使用されている方は各自ファームを修正しましょう。
ちょっと困ったのはカシミール3Dが現状まだGN系センテンスに対応していない
ので、GPSbabelを使用してNMEAを再翻訳して吐かせないとNMEAを取り込みでき
ない状態でめどいです。これについてはカシミール3Dのアップデートに期待です。

実はこっそりbeidouに対応してたりしますがGms-g9はGPS+QZSS+GLONASS専用の
パッチアンテナとなっていて前途のとおりパッチアンテナがbaidou専用の物
じゃないとマトモに測位できないのでやっぱりGPS+QZSS+GLONASSが日本国内では
鉄板です。そんでもってgalileoファームも(ry



ていうわけで近畿自然歩道で早速実践検証!!!そして・・・
しかし・・・

測位結果がほぼぴったり…
ねむいさんはね、Gms-g9が圧倒的に優れているっちゅう結果が欲しいのですよね…
市販品と同じじゃわざわざ自作してまでGNSSロガー作る意味がないのですよぅ!
あなたもそう思うでしょ!?



てわけで仕切り直し!!!!1!!1

さっきのは生駒山脈の北端でしたが今回はそのすぐ近くの矢田丘陵という
標高200〜300m程のトレイルを走りました。上り下りの傾斜角が少なく、
人もまばらなためトレラン野郎たちの聖地でもあります。


ついでに今回は今年のGWに賀茂川の藻屑と消えたTG-3の代わりに購入した
Olympus Stylus TG-4のGNSSの測位性能も評価してみます!!!!


てわけで白庭台という住宅地からスタートです!!
ダメダメなTG-4は置いといてGms-g9の立ち上がりの測位性能はGP-102と比べると
格段ですね★


破線から矢田丘陵の北端に取り付くことができるはずだったが・・・
フェンスに完全阻止されて断念orz


仕方ないのであすか野の総合公園の峠を越えて矢田丘陵遊歩道に向かいます。
これは途中の総合公園の近くにある行者山三角点です。
車道に戻ったところでGms-g9が測位を大きくはずしている気がしますが
見なかったことにします・・・


矢田丘陵遊歩道です。整備されたトレイルはここから始まります。


しばしの間快適なトレイルを楽しみます★


ドンデン池です。


阪奈道路をまたぎ、矢田丘陵遊歩道の次の区画に向かいます。


椚(くぬぎ)峠です。


ここから榁ノ木(むろのき)峠へ取り付く道が分からなくて言ったり来たりしていたの
ですが、帝塚山大側のフェンスに矢田丘陵を南下するトレイルの階段があることに
気付きました・・夏になると藪で気付かないかも・・・



ぬぉぉ走れ走れ!!!



神武峯というピークに三角点があるようなのでよってみる事にしましたが・・



私が三角点と思っていた石柱は境界柱で後で調べたらすでに通り過ぎた後でしたorz


榁ノ木峠手前の開けた場所では生駒山が一望できます。


榁ノ木峠です。


近くにある弘法大師堂にもよりました。


車道を少し走ってからまた矢田丘陵のトレイルに入りますが・・・あれ・・・?


ごちゅい・・・



さらにトレイルを走っていくと矢田山頂上と展望台に着きます。


生駒山も良く見えます。


矢田峠です。ここから少し降ります。


降りていくと弘法の井戸があります。良く冷えててとても美味いです♥



お次は松尾山・松尾寺へ向かいます。
途中には奈良盆地を一望できる展望台があります。



松尾山です。
頂上部にはTVの中継局があります。




このあと道なりに進んでしまうと近畿自然歩道を逆走して白石畑方面に行って
しまうので注意してください・・間違えたorz
とにもかくにも七曲道の岩の切りとおしをこえるとお寺が見えてきます。


松尾寺です。


高台には松尾山神社があります。



南側出口から松尾寺を後にします。


七曲道の交差点には舎人親王伏し拝み伝承地なる場所があります。



ゴルフ場の敷地に入ると道はアスファルトに変わります。



ため池の傍にある斑鳩神社です。


今度は法隆寺境内に入ります。



法隆寺本堂は建て替え中でした。
ちょっとだけ五重の塔も敷地外から見えます。



法隆寺の長い長い参道を走って国道25号線も横切ります。


JR法隆寺駅でゴールの予定だったのですがちょっと気が変わって竜田川沿いに
王子駅まで向かう事にしました。


龍田神社です。



途中にあった標高89mの三室山に挑みます!!2分くらいで頂上です。


頂上から外れたところに神社が祀られていました。


王子駅まであと少し。



大和川を越えます。



丁度いい時間帯に王子駅に到着です★



さて、GNSSロガーの軌跡の結果は・・・

TG-4を除いてGms-g9+STM32Primer2もGP-102+も大きな違いはないように見えますねorz
トレイル中では双方とも測位をはずした時は正しい座標に戻るまでに結構時間がある
感じです。一度ずれたら長い間ずれっぱなしになるかも。街中ではGP-102を大きく
抑えてGms-g9が圧倒的に強いです。細い道でも左右に寄った動作まで分かっちゃいます。

また、GP-102はかなりフィルタリングが効いているのか鋭角かつ素早い動作をした
時は外れてしまいます。その点Gms-g9は10Hz(標準1Hz)まで対応してるのでピーキーな
測位結果を期待したい人はこれしか選択肢は無いでしょう。

GP-102の電池切れのときにとても厄介な問題があるのでロギング特化では手前味噌
ですがねむいさん作成のGms-g9+STM32Primer2のGNSSロガーに軍配が上がるかなと
感じます。かぁ〜っ!(地獄のミサワみたいな顔で)


あ、忘れてました。TG-4の測位性能ですけど山中ではTG-3と同じくロガーとしては
全く使い物にならないのでロガー機能は封印してGPS時刻あわせ機能でとどめておいた
ほうがおいでしょう。TG-3で発生していたロガー機能有効時に電源ボタン連打で
フリーズするオリンパスのデジカメ特有の現象はようやく治ってるみたいですけど
無理してロガー機能使おうとせず餅は餅屋で専用のGPS/GNSSロガーを携行しましょう。



♥おまけ♥

王子駅に鎮座しているゆるきゃららしき生命体、
こいつこわいんですけぉ!!1!!1!1

いろいろ試す23

せっかく貴重なGWの休みだというのに何をやっているんだ私は・・・
でもこれを消化しないと先に進めないというBADハマリ状態なのです・・・




●FTDIのFT232Rはぱちもんを撥ねるドライバが出てFT232Rの安いぱちもん
 使えなくなったから中華製のCH340G使おうぜムーブメント

みなさんはすでにご存知のこととは思いますがFT232Rはぱちもん対策が仕込んで
あってあんなことこんなことでぱちもんを使えなくさせています。
中華製のFT232R基板はまずぱちもんなのが前提だそうでぱちもん愛好家の方には
FTDIのドライバ改変で使えなくなるのは死活問題なのは必須です。そういうわけで
中華製のUSB-シリアル変換ICであるCH340Gを使おうという動きがあるようです。

ねむいさん的には何か大前提が思いっきり間違ってる気がしますが「自己責任
なら良いのではないでしょうか自己責任なら」といい居たいところですが大抵は
ぱちもんに分かって手出す人はケチなくせに文句だけは百人前でそういう人に
関わると時間と金を浪費してしまいますので皆様方はそういう人種を機敏に察知し
いち早く距離を置かれることが良いと思います。

…すみません話がそれてしまいましたが残念ながらCH340Gにもぱちもんが存在している
ようです。こちらをご覧ください。真ん中あたりにくわしい解説の画像があります。

CH340Gのぱちもんの見分け方として1Pinのマーキングの丸の削りが大きく広い
物が正規品で丸が小さくクレーター状に削られてるものがぱちもんだそうです。


ねむいさんも何故かCH340Gの出来合いボード持ってました・・・そして・・・

ぱちもんでしたー!!!!
クソァ!!1!1!!1



ちなみにぱちもんCH340Gは公式のドライバ宛がっても上手く動作しないようで
やっぱし中華メーカといえどもしっかりドライバでぱちもん対策してるようです。
このへんFTDIやProlificも同じなのでたとえイタチごっことなろうとも
メーカの自衛策としてぱちもん対策を仕込むのは必然となっているようですね。

安物買いの銭失い、安全/安心は金で買うものとはよく言ったものです。
たまにその売り物の安全安心すらぱちもんのことがありますけど…ふふふ。

20160512追:
こちらの方のブログのコメントに具体的な情報を見つけました。以下引用。

Commented by 中華マニア at 2015-04-24 10:11 x
CH340G自体にも通電していると内部のボンディングワイヤが焼き切れて
すぐ使えなくなる粗悪な偽物があふれかえっているそうです。

あれ…副業先で生産が間に合わず海外の別ルートで購入したNxP(xは伏字のx)製の
FETで似たような経験したような…


●FatFsが0.12にアップデートしてついにexFATに対応!!
GW前にChaN氏のFatFsがexFATに対応してアップデートしておりました。
64GByte以上のSDXCカードが安価で販売されるようになった今、exFATへの対応は
必然であるといえるのです!
・・ぇ?FAT32で無理やりフォーマットできるですって!?それはおいといて・・・

ところでSDHCとSDXCの違いは何か、どうやって見分けるのかという素朴な疑問が
わきますが規格では64GB以上の容量を持つカードがSDXCとなっています。
一般の方が単純明快に見分けられるたった一つの方法です。
SDHCはどう頑張っても32GBどまりです。この辺はこちらの方の解説が詳しいです。
逆に言うと128GBのSDHCとかは絶対に存在しないのでぱちもんであるとわかります。
海外通販でだまされないように注意してください。

ソフトウェア的に見分ける方法はいくつかあって前回もさらっと触れましたが
SCRを読み出しSD_Securityフィールドの値を見ることでも簡単に判別できます。
SDXCはここの値が必ず4になっています。ここの値はSD_SpecのVerには関係あり
ませんのでSDSpecのVerが4でもSDHCだったり3のカードでもSDXCなのが存在する
のは前回の読み出し比較でご存知だと思います。


さて、exFATにすることでFatFsがどういう挙動になるかを実際にフォーマット別
に比較してみました。使用するカードは前回へなちょこ判定したSuperTalentの
64GBのカードです。


前回無理やりFAT32にフォーマットして使ったといいましたがWindows上ではSDXC
カードはほぼ強制的にexFATでフォーマットされてしまうのでParagonHardDiskManager
を使いFAT32にフォーマットして使いました。
exFATのフォーマットについてはもちろんおなじみのSDFormatterV4.0です。

というわけでChaN氏のFat情報を読み出すfsコマンドといつものシーケンシャル
リードの速度比較を行ってみました。STM32F7-Discoveryで行ってます。

※FAT32フォーマット
FatFs module test terminal for STM32F746NGH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : May 4 2016
>fs
FAT type = FAT32
Bytes/Cluster = 16384
Number of FATs = 2
Root DIR entries = 0
Sectors/FAT = 30576
Number of clusters = 3913672
Volume start (lba) = 2048
FAT start (lba) = 2080
DIR start (lba,clustor) = 2
Data start (lba) = 63232

Volume name is SDXC_64GB
Volume S/N is 7022-3F80
...
19 files, 520994673 bytes.
2 folders.
62618752 KiB total disk space.
62109728 KiB available.
>fg piano
rc=0 FR_OK
>fo 1 ftbt.mp3
rc=0 FR_OK
>fr 132949600
132949600 bytes read with 15414 kB/sec.

※exFATフォーマット
FatFs module test terminal for STM32F746NGH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : May 4 2016
>fs
FAT type = exFAT
Bytes/Cluster = 131072
Number of FATs = 1
Root DIR entries = 0
Sectors/FAT = 16384
Number of clusters = 489208
Volume start (lba) = 32768
FAT start (lba) = 49152
DIR start (lba,clustor) = 4
Data start (lba) = 65536

Volume name is SDXC_64GB
Volume S/N is DF51-7DE4
...
19 files, 520994673 bytes.
2 folders.
62618624 KiB total disk space.
62107904 KiB available.
>fg piano
rc=0 FR_OK
>fo 1 ftbt.mp3
rc=0 FR_OK
>fr 132949600
132949600 bytes read with 18442 kB/sec.

なん・・・だと・・・!?
exFATにしたらへなちょこじゃなくなった・・・!?
exFATになってクラスタサイズがデカイのが効いているのかもしれません。

FatFsのexFATの対応はまだ始まったばかりでバグも洗い出されて洗練されて
いく真っ最中ですのでこれからの発展に期待ですね。


ついでにFatFsのexFAT対応する時の注意点をいくつか・・・
1.常にLFN対応が必須
 exFATはロングファイルネームしか存在しないためです。それに伴って従来の
 8.3形式ファイル表記に頼ったプログラムだと既存のものから0.12にアップ
 デートする際にかなりの改修が必要です。

2.そんなわけでメモリ消費量が多くなる
 これも致し方ないですね。SRAM容量32kByte以下の小規模マイコンはexFAT
 対応はやめたほうが無難でしょう。尤も32GB以下のSDHCもまだまだ生産されて
 流通しているのでSDXCしかカードが無い!って事態は当分の間無いといえます。
 無理にexFAT対応にするべきではありません。ライセンスの問題もありますから。


・業務連絡・
ChaN様へ
もしここ見てたら"Well written implementations for STM32F/SDIO and LPC2300/MCI"
の"STM32F/SDIO and LPC2300/MCI"のところを"STM32F/SPI & SDIO and LPC4088/SDMMC"
に書き換えておいてください・・・。

↑ご協力ありがとうございました(ぺっこりん


皆様へ、
おきぱSTM32F4STM32F7向けのいつものはFatFs0.12に対応してすでに公開
しております!もちろん0.12向けのパッチも適用済なのでどしどしご利用ください!



●4GBのSDカード
かつて4GB以上の容量をサポートするSDHCの規格が登場し実際に市場に出回り
はじめる過渡期に4GBの容量を持ちながらSDv1規格で動作するいわゆる"規格外"の
SDカードが存在していました。

いったいこのカードはどのような動作をするのか!?実際に現在でも流通している
カードを購入して調べてみることにしました。


ebayでドイツの販売主から購入しました。SDV1.1規格の4GBのSDカードでSDHCに対応
しないちょっと昔の機器で活躍するかも!ていう触れ込みです。

さっそくねむいさんのいつものでSDカードの情報を読み出してみました。
が・・・・
>ds 0
rc=0
Drive size: 7784448 sectors
Erase block size: 8192 sectors
Default r/w block size: 512 bytes
Card type: SDv2(Block)
CSD:
00000000 40 0E 00 32 5B 59 00 00 1D B1 7F 80 0A 40 00 39 @..2[Y.......@.9
CID:
00000000 1B 53 4D 46 46 46 46 46 10 00 00 20 46 00 FC F3 .SMFFFFF... F...

Parsing SD CID Register
Manufacturer ID :0x1B
OEM/Application ID :SM
Product Name :FFFFF
Product HwRev :1
Product SwRev :0
Serial Number :0x00002046
DateCode.Month :12
DateCode.Year :2015

OCR:
00000000 C0 FF 80 00 ....
SD Status:
00000000 80 00 00 00 02 00 00 00 04 04 90 00 08 05 00 00 ................
00000010 00 00 00 00 00 00 00 00 00 53 4D 49 00 00 00 00 .........SMI....
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
SCR:
00000000 02 35 80 00 00 00 00 00 .5......

Parsing SCR
SD Spec Version :2
SD Spec Version 3 :1
SD Spec Version 4 :0
SD Security :3
SD Bus Width :5

SD_Spec V3.0x!
Detected as SDHC Card!

・・・
なんですかこれ単なるSDHCじゃないですかーヤダー!!!
・・・ちなみにh2testwでも調べましたがカードとしてはちゃんと4GBの容量をもった
"SDHC"でした・・・ビキビキ


ぱちもんつかまされたと思って捨てるのもあれなので副業先の修理品撮影用でぢかめ
の記憶素子として利用することになりました。
が・・・
後輩から「ねむいさんこのカード1GBしか認識しないんスけど?」と文句を言われ
このカードのホントの力を知ることになります。

後輩が撮影した画像データを取り出すために使っていたUSBカードリーダーは10年
以上前の骨董品で、4GBに替える前のでぢかめ用SDも時代遅れの1GBでした。
もちろんこのカードリーダはSDHCを一切認識しないため私が提供した4GBのカードが
容量が変だとはいえ認識すること事態がおかしいのです。

ねむいさん後輩からそのカードを取りかえし、デバッガで動きを追ったところ以下の
事実が分かりました。

1.イニシャライズ時に最初にCMD8(SDv2専用の初期化コマンド)を投げていると
 SDHCとしてブロックアドレッシングモードで動作する。
2.CMD1もしくはACMD41(SDv1の初期化)をいきなり投げるとSDSCとしてバイトアドレ
 ッシングモードで動作する

つまり新旧の初期化方法のどちらでも正しくカードを初期化できて正しく動作する
ように作られたいわば魔法のカードだったのです!!!

ねむいさんのおきぱのFatFsの移植サンプルはSDカードの初期化手順がCMD0->CMD8->
ACMD41というSDv2もSDv1も包括する流れだったので必ずSDHCとして初期化されて
しまうのでぱちもんだー!と誤認してしまいました。

以下に通常のSDv2の初期化とわざとCMD8を飛ばしてSDv1で初期化したときのカード
情報の違いの差を示します。
・SDv2
FatFs module test terminal for STM32F746NGH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : Apr 28 2016
>fl
----A2011/07/27 23:51 351416 0c4f42da.jpg
----A2015/03/03 15:07 307254 1c3e744f.bmp
----A2010/07/20 13:52 1993197471 91sp2_quartus_free.exe
----A2011/06/04 06:07 324588 1c3e744f.jpg
----A2010/03/24 17:47 132389 002.jpg
----A2016/01/30 10:54 244527 2d35e710.jpg
----A2013/06/20 22:49 47566 2ecd0b3e.jpg
----A2010/03/24 17:48 198903 003.jpg
----A2011/05/25 01:11 53023 3c3ba2bd.jpg
----A2010/03/24 17:48 137038 004.jpg
----A2013/05/29 21:02 22235 4b62585a.jpg
----A2012/09/19 23:32 80490 4db4ceb4-d00d-5891-b900-4f97ec745309.image.jpg
----A2010/12/02 23:28 102769 4e61b17f.jpg
----A2010/03/24 17:48 148307 005.jpg
----A2015/07/08 14:32 318848704 install_sw4stm32_win_32bits-v1.2.exe
----A2016/02/26 11:57 421760368 MDK518.EXE
----A2008/09/12 20:19 47341 2005-03-24otter02.jpg
17 File(s),2736004389 bytes total
0 Dir(s), 1239515136 bytes free
>fs
FAT type = FAT32
Bytes/Cluster = 32768
Number of FATs = 2
Root DIR entries = 0
Sectors/FAT = 948
Number of clusters = 121334
Volume start (lba) = 8192
FAT start (lba) = 14488
DIR start (lba,clustor) = 2
Data start (lba) = 16384

No volume label
Volume S/N is 3688-4D7E
...
17 files, 2736004389 bytes.
0 folders.
3882688 KiB total disk space.
1210464 KiB available.
>ds 0
rc=0
Drive size: 7784448 sectors
Erase block size: 8192 sectors
Default r/w block size: 512 bytes
Card type: SDv2(Block)
CSD:
00000000 40 0E 00 32 5B 59 00 00 1D B1 7F 80 0A 40 00 39 @..2[Y.......@.9
CID:
00000000 1B 53 4D 46 46 46 46 46 10 00 00 20 46 00 FC F3 .SMFFFFF... F...

Parsing SD CID Register
Manufacturer ID :0x1B
OEM/Application ID :SM
Product Name :FFFFF
Product HwRev :1
Product SwRev :0
Serial Number :0x00002046
DateCode.Month :12
DateCode.Year :2015

OCR:
00000000 C0 FF 80 00 ....
SD Status:
00000000 80 00 00 00 02 00 00 00 04 04 90 00 08 05 00 00 ................
00000010 00 00 00 00 00 00 00 00 00 53 4D 49 00 00 00 00 .........SMI....
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
SCR:
00000000 02 35 80 00 00 00 00 00 .5......

Parsing SCR
SD Spec Version :2
SD Spec Version 3 :1
SD Spec Version 4 :0
SD Security :3
SD Bus Width :5

SD_Spec V3.0x!
Detected as SDHC Card!


・SDv1
FatFs module test terminal for STM32F746NGH6
LFN Enabled, Code page: 932
AppVersion : W.I.P
Build Date : Apr 28 2016
>fl
----A2011/07/27 23:51 351416 0c4f42da.jpg
----A2015/03/03 15:07 307254 1c3e744f.bmp
----A2010/07/20 13:52 1993197471 91sp2_quartus_free.exe
----A2011/06/04 06:07 324588 1c3e744f.jpg
----A2010/03/24 17:47 132389 002.jpg
----A2016/01/30 10:54 244527 2d35e710.jpg
----A2013/06/20 22:49 47566 2ecd0b3e.jpg
----A2010/03/24 17:48 198903 003.jpg
----A2011/05/25 01:11 53023 3c3ba2bd.jpg
----A2010/03/24 17:48 137038 004.jpg
----A2013/05/29 21:02 22235 4b62585a.jpg
----A2012/09/19 23:32 80490 4db4ceb4-d00d-5891-b900-4f97ec745309.image.jpg
----A2010/12/02 23:28 102769 4e61b17f.jpg
----A2010/03/24 17:48 148307 005.jpg
----A2015/07/08 14:32 318848704 install_sw4stm32_win_32bits-v1.2.exe
----A2016/02/26 11:57 421760368 MDK518.EXE
----A2008/09/12 20:19 47341 2005-03-24otter02.jpg
17 File(s),2736004389 bytes total
0 Dir(s), 1239515136 bytes free
>fs
FAT type = FAT32
Bytes/Cluster = 32768
Number of FATs = 2
Root DIR entries = 0
Sectors/FAT = 948
Number of clusters = 121334
Volume start (lba) = 8192
FAT start (lba) = 14488
DIR start (lba,clustor) = 2
Data start (lba) = 16384

No volume label
Volume S/N is 3688-4D7E
...
17 files, 2736004389 bytes.
0 folders.
3882688 KiB total disk space.
1210464 KiB available.
>ds 0
rc=0
Drive size: 7784448 sectors
Erase block size: 512 sectors
Default r/w block size: 2048 bytes
Card type: SDv1
CSD:
00000000 00 0E 00 32 5B 5B 03 B6 1D B3 FF 80 0A C0 00 E9 ...2[[..........
CID:
00000000 1B 53 4D 46 46 46 46 46 10 00 00 20 46 00 FC F3 .SMFFFFF... F...

Parsing SD CID Register
Manufacturer ID :0x1B
OEM/Application ID :SM
Product Name :FFFFF
Product HwRev :1
Product SwRev :0
Serial Number :0x00002046
DateCode.Month :12
DateCode.Year :2015

OCR:
00000000 80 FF 80 00 ....
SD Status:
00000000 80 00 00 00 00 00 00 20 04 04 90 00 08 05 00 00 ....... ........
00000010 00 00 00 00 00 00 00 00 00 53 4D 49 00 00 00 00 .........SMI....
00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
SCR:
00000000 02 25 80 00 00 00 00 00 .%......

Parsing SCR
SD Spec Version :2
SD Spec Version 3 :1
SD Spec Version 4 :0
SD Security :2
SD Bus Width :5

SD_Spec V3.0x!
Detected as SDSC Card!


もちろんどちらの初期化手順でも得られる使用可能総容量はCSDレジスタの値自体が
アジャストされ変化するためSDv2,SDv1のどちらの初期化手順でもまったく
同一の容量となり、さらにバイト/ブロックアドレッシング両方の読み書きも
すべて正しく行えております。
しかもご丁寧にSCRのSDSecurityのバージョンまでちゃんとアジャストして
SDv1で初期化したらちゃんとSDSCとして認識されるという充実ぶりです!!



ついでですがその他の"4GBのSDカード"も調べてみました。これはTOPRAM製の
カードです。結果から言うと同じく初期化手順の違いでSDSCにもSDHCにも化ける
タイプでした。



こちらは規格外カードの本家ともいえるTranscendの4GBカードです・・・がUSEDで
しか手に入らなかったのでなんか茶色いのがいっぱいこびりついててきちゃない・・・

中華からかった中古なので何がついてる分からずIPAでよごれをこすって落とし
まくって2時間後にようやく動作確認・・・


こいつこそホントに単なるSDHCでした!!!!!F**K!
20160512追:
後でさらに調べて分かりましたが"SD Compatible"とパッケージにはっきり
書かれたものでない限りはSDHCの表記が無くてもただのSDHCでSDv1の
初期化は一切通らないそうですF++K!!!



というわけで規格外な"4GBのSDカード"は規格外ながらも今日もどこかの
ちょっと古い機材で活躍しているかもしれません。


●秋月の006Pリチウム電池
テスタの電池用に秋月さんの006P型リチウム電池を購入してみました。


一般の006Pと比べるとやたら軽くちょっと大きく見えて不安になります・・・


一応無理なく収納できました★


動作も問題ありません♥
実はもう4ヶ月近く使用していますが今のところ電圧が出なくなったり爆発
したりとかはなく、至って問題なく使用できています。このリチウム電池は一
般的な006P型乾電池と比べると電流容量はかなり低いですがテスタのような
消費電力が低い機器で使用する分にはまったく問題は無いのでオススメです♥

Go to top of page