USB 受信
- 前回の通りで実装に成功. PCKSIZE を調整することで受信処理の効率化と安定化を確認.
- 受信側の汎用バッファはなくなったが、送信側の汎用バッファは0x200bytesも確保しているので RAM の 1/8 を浪費していることが判明. そのうち減らす.
- 0x80000 + 0x40000 bytes の ROM dump は前回は約3秒(実際には2.9 秒 だった)から 2.3 秒と早くなった. ROM dump ではMCUの受信は重要ではなかったので意外.
- 一方 programming は処理時間が変わらず. programming は fifo で待ち時間を許容できる仕組みなので仕方なし.
DMA descriptor
- 前回の通りで DMA descriptor の初期化処理を減らすべく、複数の descriptor を用意しておいて随時切り替える方式に変更.
- 昨日と本日の実装では... かなり難しくて嫌になってくる. polling 間隔の効率化で、次回設計分の基板にむけさらに複雑になるであろう descriptor 管理システムのことを考えると気が重い.
- 現状複雑になっているのは DMA controller から SPI module へ 16 bit address を increment pattern で出す部分.
- increment pattern は RAM 上 (DMA の source は RAM が必須で ROM におけない) に 0x100 bytes を確保し、address 下位 8 bits が 0xff -> 0x00 になる時点で descriptor を address上位下位で更新するので 2 個消費する.
- これを主に使うのは dump で、DMA により 0x478 bytes の RAM buffer に書き込み、address += 0x478; して dma descriptor を再構成して再度 DMA を動かすを繰り返す.
- adrdress = 0x8000, length = 0x478 で descriptor は 5 x2 個いる.
- その次は address = 0x8478, length = 0x478 で descriptor は 6 x2 個いる.
- descriptor の更新は増えることを想定してなかったので1度の DMA での read cycle length を 0x100 byte 単位にして descriptor が増えることを予防するしかない.
- programming fifo の容量確保よりも、消費量が多くなるであろう DMA descriptor の確保のほうが重要かもしれない.
その他
- 当分先の拡張性に関して外形デザインについてアイディアが思いつく. 難点は太いケーブルがいる.