いつもありがとうございます
SMD工房です
ゲームレジェンド32 (63a) に参加します。
前回の更新から活動の内容を紹介します。
■作成したもの: Visual Memory Console (SDRAM版)
MFT2019で展示したVMCはROM格納エリアとしてQuadSPI EEPROMを搭載していたのですが、
実際に動作させてみると、たまにハングアップするという謎の不具合に悩まされていました。
そのため、ROMはMain Flash ROMの一部を格納領域としていましたが、容量の関係で512kByteまでに制限しています。
つまり、512kByteを超えるROMは動作させることができませんでした。
Main Flashは2MByteあるのですが、プログラムの格納領域に加え68kのJumpテーブルやFM音源用テーブルなど、合計で1.2MByteくらい消費しています。
(RAMを節約するための対策がROMを圧迫するという結果に・・・)
これらを解消するためQuadSPI EEPROMの代わりにSDRAMを搭載したVMCを作成しました。
初STM32F7だったのでプログラムの作りが悪いのかどうかの検証も目的としてます。
<主な部品>
・画面 : H163QLN01 1.63inch 320x320 OLED
・CPU : STM32F7 LQFP 176pin SDRAMを付けるには十分なPin数であった
・DAC : ALC5628
・Memory : MT48LC16M16A2 4Mbitx16bitx4bank 256Mbit PC133 SDRAM
<部品を実装した基板(表)>手はんだです
<部品を実装した基板(裏)>手はんだです
<結果>
512kByteを超えるROMでも全く問題ありません。
一番ハング率の高かったSonic3(ROM容量2MByte)でも全く問題なし。
<問題点>
せっかく広大なRAMが手に入ったので、VRAMをSDRAM上に移してDual Bufferにすればティアリングが除去できるんじゃね?
と思い、VRAMをSDRAM上に移しました。
しかし、かなりの頻度で画面がチラチラします。
試しにROMをSDRAMに置かずにVRAMのみをSDRAMに置いたところ、チラツキは発生しませんでした。
チラツキが発生するのは、VRAMを表示するための帯域が確保できていないことが原因と思われます。
チラツキ問題は対処方法が思いつかないので、ROMとVRAMを両方SDRAM上に置くのは諦めました。
(しかしi815とかPC100でUMAを使用してもXGA解像度を余裕で表示できたはずなのですが・・・)
このことから、このティアリング問題は別なアプローチとして、LTDCを使いこなすことでSRAM上にVRAMを2画面分確保して解消しています。(対処方法を解説すると長くなるのでここでは割愛)
また、体感で稼働時間が短くなっている気がします。
消費電力が増えているかもしれません。
SDRAMのデータシートを見ると100mA消費するようです。
(ちなみにEEPROMはRead時に10mA)
そこで、実際に構成毎に消費電流を測ってみました。
| SDRAM | 190mA |
| 内蔵Flash | 180mA |
| QSPI | 196mA |
| LCD | 210mA |
| PIC32MZ | 250mA |
内蔵Flashが一番省エネは良いとして、QSPIよりSDRAMの方が省エネだったとは!!!
(QSPIは2個使いなので、1個あたり8mAの消費だということがわかります)
データシートと合わないのは気になりますが、実際には問題なさそうです。
現在は400mAhのバッテリを搭載しているので、約2時間持つ事になります。
MFT2019のデモでも、だいたい2時間で電池を充電していたので、体感と一致します。
<感想>
MFT2019から3ヶ月も経つわけですが、1つ1つの問題対処に多大な時間を費やしてしまったので、
進捗としてはあまり変わり映えのしないものとなってしまいました。


