STM32F7を使ってみる13 -STM32F769I-Discoveryを動かしてみる2-
>ARM、禿に喰われる
>ARMはもう終りDA!
うろたえるな小僧共ー!
(↑C.V.牡羊座のシオン様で)
禿の習性からして中身ろくに見ないでまーた買い物のための買い物やっただけだから
アリババの時みたいにどうせすぐにリリースしちゃうでしょう。
ていうか"買収する"と言ってるだけで20160803の時点で買収が完了"した"とは
言ってないのでまだ禿に喰われてすらいない段階ですね。
こと電子工作で使用するARMマイコンの範囲においてはまったく何の影響も出ない
と思います。尤もARMが禿に衰退させられるような程度のジョンブル野郎だったの
ならねむいさんのほうからお断りで自然歩道一本に絞ってこのぶろぐ続けます。
というわけでこの件についていろいろ質問もらったので虹裏メイドねむいさんとしての
見解をさせていただきました。かしこ。
20160906追:
正式に買収完了と同時に上場廃止になりました。
ねむいさんとしても今後の禿の動向に注視いたします。
最悪のシナリオは小規模マイコン向けのコアIPが捨てられることです。
20160906追:
20170411追:
少し前の話ですが予想通り早々に4分の一を売却するそうです…
ねむいさんの予想以上に売るの速かったわ!
今度はアラビアンARMになるのですね…
20170411追:
20230918追:
ARMが小文字armになって幾数年…
armは再び再上場する運びになりました!!
20230918追:
すみませんうっかり本日のぶろぐ終わらせそうになってしまいました。
今回は主に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
しかもっていない・・・!なんていう方も安心です♥
次回は真面目にブログ更新します!!!!!!!!!!!
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (80)
- STM8 (2)
- Wirelessなアレ (16)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (7)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.
Comments
Post a Comment