開発日記

DMA descriptor

用途によって分かれる descriptor 群をあらかじめ3通り用意しておいて、DMAC->BASEADDR だけを書き換えようという案. これを作るのに手間取った. シミュレータ上はそれとなくできたが、MCU で動かすと下記の問題が判明.

  • DMAC->BASEADDR は DMAC->CTRL.DMAENABLE が 0 のときのみ更新可能.
  • ソフトが生成した descriptor は DMAC によって更新されてしまう (なんのために writeback があるの?)
  • そもそもボトルネックが descriptor の再生成かちゃんと調べてない.

descriptor の更新は想定していなくて、DMAC が更新しない前提で処理の軽減化を狙っていたので困った. どういう値に更新しているか調べる. そしてどの処理の処理時間が長いか調べる必要がある(かなり面倒くさい).