おはよーございます.年末は趣味の回路です.仕事で使いたいアイテムでもあるがな.
STM32H723の内蔵RAMはtotal 500kBぐらいなので足りないんでPSRAMで増量したいのです.それで2024年11月12日に、STM32H723にPSRAMを取り付けようとして挫折しました.こちら
方法は、OCTOSPIでこういうSerial RAMを取り付けます.64Mbit品ですので、成功すれば一気に8MBものメモリ空間を手中にできてウハウハでやんす~
Adafruit Industries LLC 4677 PSRAM 64MBIT SPI 133MHz
今回は成功したのですが、差異はなにかというと、、、
・失敗 中華通販のIC
・成功 digikeyで買ったもの
う~ん、粗悪品でしたか....
というわけで、リベンジの第2期はちゃんと動かしてみたいです.
速度、DMAなどをチェックするです.
ーーーー
ところがどうも変.メモリマップドモードで使うとき...
1)for loop内でpsramエリアに代入すると、後にreadしても壊れている
2)for loopでなくpsramエリアに代入すると、後のreadで正常に読める
3)refresh時間逸脱のせいではない
4)2LINEかQUADかに依らない
5)clk speedに依らない
OCTSPIのadressingがなんかbugってるっぽい.
ーーーー
翌朝.
STM32H723のエラッタを見るとOCTOSPIに20個ぐらいリストされています.
ちゃんと動くこともあるんですがね.
for(i=0;i<......){
psram[i]=YY
HAL_Delay(5000);
ZZ=psram[i];
}
↑こうゆう近い距離でWRすると完璧に動きます.delayを長くしてもOKなのでrefreshもちゃんと動いてるらしい.
ところが、そのすぐ下で別のloopで読むとデータが化けてる.この症状から回復できてません.エラッタに登場するDQSやstronglyの件を実装済でもダメです.
for(i=0;i<......){
ZZ=psram[i];
}
加えて、代入のときfor loopを使わなければ正常だという謎現象もあります.
STM32H723でメモリマップドは無理ゲーなのかもしれません.
第2期も撤退か?
ーーーー
メモリマップドモードを使わずに普通のアクセスを試みましたが、動作せず.
撤退します.
STM32H750ならメモリマップドでPSRAMを動かせるらしいので、そっちで試します.
あでゅ~
>PSRAM 64MBIT
返信削除これって、「ESP32-WROVER-E」でも使われてる、有名なチップですね。
(Espressif Systems社製なので、「Made in CHINA」です。)
※このチップにも「海賊版」があるなんて・・・・スゴイな。
STMicro や、TI のチップ(海外製)ならまだしも「自国製」まで海賊版があるなんて、筋金入りにも程がある(笑)
動いたと書いておきながらまだ不調なのですが、
削除・refreshが死んでて消えてる
・アドレッシングがなんかへん
このどっちかっぽい
ESP32は新しい設計だからかPSRAMにしっかりと対応しているようで美味しいですね
>ESP32は新しい設計だからかPSRAMにしっかりと対応している
削除まず、「ESP32-WROVER-E」の中では、Clock は、
・40MHz or 80MHz
でしか使っていません。あと、規格を見ると、
https://cdn-shop.adafruit.com/product-files/4677/4677_esp-psram64_esp-psram64h_datasheet_en.pdf
の、5ページ
SPI mode:Standard / Quad SPI
までしか、対応して無いです。(Oct SPI には、対応していない。)
※Clock は、規格上「133MHz」まで対応ってありますが、あまりマージンが無いのかも知れませんね。
規格書をよく見ると、Noteにいろいろ書いてあるので、細かいアクセスタイミングの制限とか、あるのかも知れません。
これ中身は「D-RAM」だったハズなので「リフレッシュの時間」とか、必要なはずだし。(リフレッシュ自体は「Auto」だったはずですが。連続アクセスの制限とか、あるのかも知れません。)
CSがdeassertの最中に自動refreshが行われます
削除があまり長時間CSをassertしないように時間制限する機能がOCTSPIにあります
なんか、ここにコワいこと書いてますね。
削除ESP-PSRAM64H and STM32H743 QSPI mode
https://community.st.com/t5/stm32-mcus-products/esp-psram64h-and-stm32h743-qspi-mode/td-p/205754
>the ESP-PSRAM64H is only supporting ESP32
>If I connect a logic analyser to the qspi bus, I see the data going from processor to spi ram is occasionally corrupt: when I do a write, sometimes some bytes still have the value from before the write. This seems to be a cache issue. I'm not aware of a workaround. Correct me if I'm wrong.
(ロジック アナライザを qspi バスに接続すると、プロセッサから spi ram に送られるデータが時々破損していることがわかります。書き込みを行うと、一部のバイトに書き込み前の値が残っていることがあります。これはキャッシュの問題のようです。回避策はわかりません。間違っていたら訂正してください。)
※もしかして、この現象が起きてる?
ここには、解決方法は書いてないみたいですが。
なんか、
削除>PSRAM では、QSPI は使えない
って、書いてますね。
※オクタル (APSxx08x-xOBx-xx) PSRAM は使えるから、そっち使え、って読める。「Oct SPI モード」で、使えってことみたい。
(勿論、ESP-PSRAM64H では使えない・・・・)
「QSPI は使えない」は、エラッタってあるけど、直って無いのかな?この投稿は、2021年のだし。
でも、
削除> (これは STM によって正式にサポート/テストされていません。正式には RAM ではなく NOR をサポートしていますが、Quad PSRAM に使用しているお客様が複数います)
ってあるから、クロック下げると使えるのかな?
それとも、Quad SPI ジャナクテ Standard モードで、使ってる?(勿論、スピードは 1/4 になるけど。)
OCTSPIはバグバグらしいんです
削除いけるのか?
途中から書くと分かんなくなりますね。
削除>メモリマップ書き込みモードが必要ない場合は、STM32H743 の NOR メモリ コントローラを使用して Quad PSRAM を駆動できます (これは STM によって正式にサポート/テストされていません。正式には RAM ではなく NOR をサポートしていますが、Quad PSRAM に使用しているお客様が複数います)
※つまり、「メモリマップモード(通常の拡張RAMとして使う)」ではなくて、「NOR PROM」として扱う(WRピンは、ソフトで制御すると言うことですね。)だと、Quad SPI として使えるということみたい。
※まぁ、そもそも「想定外」の使い方してるから、コマンドやシーケンスが合わないんだろうな。
「メモリマップモード」じゃない時の書き込みはどうやるんだ?
削除これだけじゃ、良く分んないな。同時に「ビットIO操作」って出来るのか?
>NOR メモリ コントローラは、同時に「ビットIO操作」って出来るのか?
削除です。
「ビットIO操作」
削除というか、
「コマンド操作」
が、正しいな。読み書きって、コマンドベースだし。
そう、ただのSPIメモリとしてなら、コマンド送ってRWをごにょごにょできるんですけど、それじゃぁあまり楽しくないんです
削除>それじゃぁあまり楽しくない
削除まぁ、そうですよね・・・・
ちなみに、↑ のフォーラムの中にリンクがありますが、
STM32H723 - Problem with Serial RAM in memory mapped mode
https://community-st-com.translate.goog/s/question/0D53W00000iCq1hSAC/stm32h723-problem-with-serial-ram-in-memory-mapped-mode?_x_tr_sl=auto&_x_tr_tl=ja&_x_tr_hl=ja&_x_tr_pto=wapp
によると、
・QSPI DDR
なら、いけるみたいです。
https://community.st.com/t5/image/serverpage/image-id/23431iF505952B9D76CEE8/image-size/large?v=v2&px=999
(ESP-PSRAM64H は、恐らく「QSPI SDR」)
※あるいは、「STM32L4P5」「STM32L5」「STM32U575/585」を、使うか。
「STM32H72x」は、ダメっぽい。(エラッタを直すつもりが無いみたいですね・・・・)
※まぁ、STM32H系は、「設計も古い」し、
削除・コレは仕様です
と言うことにしたんだろうな。(変に直すと「別のバグ」を、生みそうだから、止めたのかも知れない。)
というワケで、
・ESP-PSRAM64H は、「QSPI SDR」を「メモリマップモード」では使えない
ようです。
※「対応するメモリ」(QSPI DDR or OCT SPI)を買ってくるか、「CPU を、アップグレードする」しか無いみたいですね。
※SPI RAM は「規格があるようで無い」んですよね。私も、以前ハマったことがあります。コマンドとかシーケンスの互換性が無い。
「SPI PROM」としてなら、大概使えるんですが。
(「PSRAM」も、「PROM」として扱えばいいのか。「書き込み」は特殊処理で、「1バイトだけ書き換え」とか、出来なくなるけど。)
>「1バイトだけ書き換え」とか、出来なくなる
削除これじゃぁ、プログラムから、
・ふつうの配列として扱えない(「固定テーブル」なら、使えますが)
から、あんまり意味無いですね(笑)
H723のOCTOSPIのエラッタを見ると20個ぐらいあるかんじ
削除こりゃ無理ってかんじ~
メモリマップドはとりあえず諦めます
バーストでRWする構造にするとして、倉庫へ入れて、倉庫から出して、演算してから再び倉庫へ戻す
ある程度まとまった量のシーケンシャルアクセスのみで良いので原理的には倉庫方式でも良いのですが、時間が持つのかどうか?
「STM32L4P5」「STM32L5」「STM32U575/585」
削除はいまいちCPUが弱いのでなんだかなー
読者 祝1日目 午後から (やる気がない)
削除↑ の図を見ると、
削除・QSPI SDR → 72MB/s
・QSPI DDR → 166MB/s
ってあるから、「バスサイクルスピード」が、コレに引っ張られるのを嫌ったのかも知れませんね。(倍くらい違うし・・・)
(メイン命令実行クロックと、非同期にすればいいんだけど、そういうロジックを「入れたく/入れられ無かった」んだろうな。
まさに「無関係なところまで影響を受けるのを嫌った」
(そこまでの大規模変更は「新規別シリーズ」でやった)
ってことだと思います。
以前に「実は STM32 は、『何でこれ出来ないの?』が、多くて困る、と、外人が嘆いてた」というのも分かるな。
しかし、↑ のフォーラムの会話って、「FMC」とか「OCTOSPI」とか「マニュアルを読み込んでないとわからない会話」ばかりで凄いな。丁度この辺「マニュアルを読み込んでた」から、すぐ分かったけど(笑)
あと、こう言うの、
・全く「日本語の資料」
が、ググっても出て来ない(笑)
※日本製の、こういうCPU、どこかで開発してくんないかな・・・・まぁ、ムリだろうけど(笑)
>バーストでRWする構造にするとして
削除コレ実際は、
・ファイルシステム
作ってるのと同じなんだよな・・・・
※「SDカードインターフェース」のようなもの。まぁ、どっちも「EEPROM」を相手にしているという点でも同じ。
そっちの方が、「簡単」かもです。ライブラリとか無かったっけ?
↑ に書いてあった「NOR EPROM」の代わりに使う、も、そういう意味だったりして。
日本語の情報見つかりました(笑)
削除STM32でQSPI接続のPSRAMを使いたい
https://blog.haru3.me/posts/2024/20240513-stm32-qspi-psram/
※当然ですが、やはり、
・読出しは「メモリマップモード」
・書込みは「メモリマップドモードを解除した上で上記の関数などを用いる必要があります」
・本当はDMAでやりたかったのですが、色々触ってもちゃんと動かなかったので断念しました。
と、ありますね・・・・残念
このページは参考になります
削除いろんな話を総合すると、
削除・書き込みキャッシュ周り
の、問題のように思えます。
(なので、「特定のアドレス」だと「OK/NG になる」のような現象が起きる。多分「キャッシュに収まる範囲」で、読み書きする分にはOKだけど、アドレスが「範囲外」になった時に、キャッシュクリアが上手くいかなくて「変なアドレス」のデータを引っ張って来るとか。)
Intel のもそうだけど、
・人類は、まだ「キャッシュを扱うには早すぎた」
のかも知れません・・・・(笑)
STM32H5はメモリマップドがうごくんだとか ふむぅ
削除しかしこの件、
削除・世界中の人が、同じことを「トライアンドエラー」してる
(「車輪の再発明」どころの騒ぎではない(笑)
のが、スゴイですね。
つかもう、これ、
4Mx1ビットDRAM(60nS)HM514100CLZ6
https://akizukidenshi.com/catalog/g/g104156/
でいい気もする。
(多分、このチップは FMC で繋げられますね。パラレル接続になりますが(笑)
※やっぱりダメだ、これ「VCC 5V」だったわ(笑)
電圧変換 IC つければ使えるけど、意味無いですね(笑)
「STM32H7『Rx/Sx』」も、動くみたいですね。
削除https://community.st.com/t5/stm32-mcus-products/stm32h723-problem-with-serial-ram-in-memory-mapped-mode/td-p/229476/page/2?lightbox-message-images-663408=73247iDD1082B70AE58010
※何が違うかよくわからない。STM32 は、ファミリを増やし過ぎ(笑)
STMのlineupの多さはもはや鬼畜ですね
削除同一packageならpin assignも同一だとうれしいのですが、微妙に違うんですよね
電源pinからして違うのは萎えるぜ(しかも隣ぐらいの微妙さ)
STM32はけっこう5VトレラントなのでそのDRAMもなんとか繋がるかもしんない
ただ、FMCってやたらピンの本数が多くて他の機能と衝突してしまったりとかするこれまた鬼畜
pin assign的にFMCが最も鬼畜かもしんないなぁ
だいたいOCTOSPIがオクトパシーみたいで名前がタコいのが悪い
>名前がタコい
削除ちなみに、
・(バカにする意味での)このタコ!
と言う表現は、「世界的に」通じるみたいです。
※昔の「linux 界隈」から、広まったみたい。なので、
>OCTOSPIがオクトパシーみたいで名前がタコい
は、多分、外人にも通じる(笑)
Yeah!
削除Sushi. Sashimi.
>STM32H5はメモリマップドがうごく
削除実は、「STM32H5」は、「STM32H7」よりも、
・最近発表されたシリーズ
みたいですね。
※この、もはや
・(性能とか含めて)「番号の大小も関係ない」
というのも、
>STMのlineupの多さはもはや鬼畜
に、通じてますね。
※まぁ「組み込み系」なんて、そもそも種類があり過ぎて
・きれいなラインアップは作れない
と思いますが。ソレにしてもなー、と言う気はする。
つか、「High Performance 系」は、とっとと「64bit 化」して、
削除・STM64
とか、作ればいいのに(笑)
※Raspberry Pi は、Ver3(2016年)辺りで「64bit 化」したんだよな。もう8年経つのか。
>STM64
削除「著作権か何か」に、引っかかるのかも知れない・・・・
STMとは?
https://e-words.jp/w/STM.html
※ここで、「STM-64」が定義されてる。
何故か「STM-32」ダケは無い(笑)だから「STM32」って、ブランド名にしたのカモですね。
※「STM(Synchronous Transport Module)」って、「ATM(Asynchronous Transfer Mode)」の対義語かと思ったら、違いました(笑)
まぁ、両方とも「通信系用語」ではありますが。
>タコ
削除http://www.amy.hi-ho.ne.jp/lepton/program/prog/prog90.html
多分、私が聞いた話の出典はコレ。
※これもう、「20年くらい前の話」なので、今は通じない話かもなー。世代交代されてて、当時を知る人はもう誰も居ない、とか。
「TurboLinuxをインストールしたのですが、文字の画面しか表示されません。助けて下さい」
削除↑神々しいほどの大ダコ
読者 それは おそらく ubuntsu.linuxにする いや xwindowsをたちあげる xinit とかではないかな 明日たまたまコミケなのでソフトの配置で暇そうなunix売り場のひとに聞くと教えてくれるんじゃないかな もしダム端末でシリアル接続だったら 正常です(そういうんじゃない)しかし 質問は まぢなのか しゃれなのか わからないですねえ たまごさけがいいらしいです
返信削除コミケで病原体をまき散らしてやった方が速く治ったに違いない
削除ゲホゲホ
読者 栄養不足なら人参短冊切にしておおきさは割りばしくらいでたべるか ジューサーですりおろして水か牛乳で飲めばビタミンA不足で口の端がきれたときなんか効果ありますだいたい人参日本を1日で取るくらい
削除感染の場合 なおるのをまつしかない 熱がでているので インフルか 流行り風邪っぽいですね 1年前にうなったときは頭痛がひどくて 痛み止めを3時間おきに飲んでました 市販薬なのでもっと飲めたらしい。 医者でもらったほうがよくきく痛みどめがでるのですが 医者にいくのも面倒で寝ている場合は そんなもんです でも10年ぶりの悪さ加減でした
あとは 内臓が悪い場合 ご愁傷さまです(医者じゃないからわからんよ)
そぅだ、ビタミンCのキレートレモンを飲もうそうしよう
削除賞味期限切れでおかしくなってたみたいなので捨てました
削除読者 本日の経過 やる気があるのか ないのか 14時から うろうろしました
返信削除叡智小説 サエコ仮名嬢がいたので 2.5次元やってきました
うーん これは叡智小説だと思ひました
自分の新発見
「ストライクゾーン広いぞ」 というか がばがば だ
「直球ストライク」いっぱい来たー!
「グラビアやってます」「今日はじめて」
が最後でしたが アマチュアの野球に大谷が来るくらい反則だーと
思ひました
どれくらいかというと ファンタジー0話切りだけど 叡智キャラなので OKみたいな (中華アニメ同様 さっぱりわからん 比喩でござります)
1年くらいまえから 胸を強調する偽もののかぶせもの(ほぼ顎したからへそ?くらいまでの おそらくシリコン製の女性のたにまのひょうげんする造形物) なくてもいいのに どういうことか聞くに聞けない かつらと同じ意味なのだろうか
サワコに優しくしてもらいたい・・・
削除読者 叡智小説
削除サワコ譲もいました ムチムチでまあ それでも なんというか 自分の生存本能なのだろうか
サエコ嬢をみて おー(これでは小説家になれない 貧相な表現であります たまにみるビデオの女優さんとよくにた歯並びできらきらしていて
ぼーぼぼぼ ぼーぼぼ のビュティと魚雷ガールをみて ぼーぼぼぼ 叡智小説と思った
読者 リコリコ見ました おもちゃのぎんだまてっぽうもって
削除リコリコをここで話きいていなかったらきづけないかも
読者 モルダー「本当にコ〇ケにいっていたんだ信じてくれ」
削除スカリー「モルダーあなた疲れているのよ」