3. DMAC1 メモリ間転送例
3.1 応用例の説明
3.1.4 参考プログラムのレジスタ設定
以下に本参考プログラムのレジスタ設定値を以下に示します。
チャネル
0の転送については,コマンドチェーンを使用して
2回転送を行っています。
表
3.1.4.1 DMAC1レジスタ設定値(チャネル共通)
レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’8000 0000 ・DMAの起動/停止
- 初期化処理時:DMA1E=1 DMA起動 DMAオペレーションレジスタ
(DMA1OR) H'FEA0 0010 R/W 32
H’0000 0000 ・DMAの起動/停止
- DMA転送完了時:DMA1E=0 DMA停止
表
3.1.4.2 DMAC1チャネル
0レジスタ初期設定値
レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 DMA1ソースアドレスレジスタ0
(DMA1SAR0) H'FEA0 0020 R/W 32 *1 ・転送元の開始アドレスを指定
DMA1ディスティネーション
アドレスレジスタ0(DMA1DAR0) H'FEA0 0028 R/W 32 *1 ・転送先の開始アドレスを指定 DMA1バイトカウントレジスタ0
(DMA1BCNTR0) H'FEA0 0030 R/W 32 *1 ・転送バイトカウントを指定
DMA1ストライドカウント
レジスタ0(DMA1SBCNTR0) H'FEA0 0034 R/W 32 *1
・ストライド/gather/scatter転送時,一 塊として転送されるデータ転送バイト 数の初期値設定
-初期ストライドカウンタ bit[32:16]= SBCINI - ストライドカウンタ bit[15:0]= SBCNT
*指定するアドレスは4バイト単位
DMA1ストライドレジスタ0
(DMA1STRR0) H'FEA0 0038 R/W 32 *1
・転送元アドレスのストライド幅を指定 bit[32:16]=SS
・転送先アドレスのストライド幅を指定 bit[15:0]=DS
*指定する各アドレスは4バイト単位
DMA1コマンドチェーンレジスタ0
(DMA1CCAR0) H'FEA0 0040 R/W 32 H’E500 E100
・最初のコマンドチェーンのコマンド列 のアドレスを指定(コマンドチェーン1)
*最後のコマンド列では,CCAは必ず
H’0000 0000を設定
DMA1チャネルコントロール レジスタ0 (DMA1CHCR0)
H'FEA0 0048 R/W 32 H’A000 0000
・DMA転送の許可/禁止,コマンド チェーンの有効/無効,転送元/転送先ア ドレスストライドレジスタイネーブル を指定
CHE(bit31) = H’1:DMA転送許可 CCRE(bit29) = H’1:コマンドチェー ン有効
DMA1チャネルステータス レジスタ0 (DMA1CHSR0)
H'FEA0 004C R/(W) 32 *1
転送元転送エラー割り込み 転送先転送エラー割り込み 転送元転送エラーフラグ 転送先転送エラーフラグ DMA転送完了割り込み DMA転送終了フラグ の状態を表示
*1 DMA1CCAR0,DMA1CHCR0
以外のレジスタは,コマンドチェーンのコマンド列フォーマットで設定さ
れます。コマンドチェーンのコマンド列フォーマットについては,「
3.1.5.1コマンドチェーンについて」を
ご参照ください。
以下にコマンドチェーンアドレス
1(H’E500 E100 – H’E500 E11C)に設定した各レジスタの設定値を以下に 示します。
表
3.1.4.3 DMAC1レジスタ設定値
1(チャネル
0コマンドチェーンアドレス
1)レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様
H’1400 E000
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1DAR0はDDR3を指定) DMA1ソースアドレスレジスタ0
(DMA1SAR0) H'FEA0 0020 R/W 32
H’0800 0000
・転送元の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1DAR0はOLメモリを指定) H’1400 E000
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1SAR0は,DDR3を指定) DMA1ディスティネーション
アドレスレジスタ0 (DMA1DAR0)
H'FEA0 0028 R/W 32
H’0800 0000
・転送元の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1SAR0は,OLメモリを指定) DMA1バイトカウントレジスタ0
(DMA1BCNTR0) H'FEA0 0030 R/W 32 H’0000 0040
・転送バイトカウントを指定 64バイト
*転送サイズは4バイト単位 H’0000 0000 ・連続領域の転送
SBCINI=0,SBCNT=0 H’0004 0004
・ストライド/scatter/gather転送の 転送サイズ4バイト
SBCINI=4,SBCNT=4 H’0008 0008
・ストライド/scatter/gather転送の 転送サイズ8バイト
SBCINI=8,SBCNT=8 H’0010 0010
・ストライド/scatter/gather転送の 転送サイズ16バイト
SBCINI=16,SBCNT=16 DMA1ストライドカウント
レジスタ0 (DMA1SBCNTR0)
H'FEA0 0034 R/W 32
H’0020 0020
・ストライド/scatter/gather転送の 転送サイズ32バイト
SBCINI=32,SBCNT=32
表
3.1.4.4 DMAC1レジスタ設定値
2(チャネル
0コマンドチェーンアドレス
1)レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’0000 0000 ・連続領域の転送
SS=0,DS=0 H’0008 0008
・ストライド転送の 転送サイズ4バイト SS=8,DS=8 H’0004 0008
・Scatter転送の 転送サイズ4バイト SS=4,DS=8 H’0008 0004
・Gather転送の 転送サイズ4バイト SS=8,DS=4 H’0010 0010
・ストライド転送の 転送サイズ8バイト SS=16,DS=16 H’0008 0010
・Scatter転送の 転送サイズ8バイト SS=8,DS=16 H’0010 0008
・Gather転送の 転送サイズ8バイト SS=16,DS=8 H’0020 0020
・ストライド転送の 転送サイズ16バイト SS=32,DS=32 H’0010 0020
・Scatter転送の 転送サイズ16バイト SS=16,DS=32 H’0020 0010
・Gather転送の 転送サイズ16バイト SS=32,DS=16 H’0040 0040
・ストライド転送の 転送サイズ32バイト SS=64,DS=64 H’0020 0040
・Scatter転送の 転送サイズ32バイト SS=32,DS=64 DMA1ストライドレジスタ0
(DMA1STRR0) H'FEA0 0038 R/W 32
H’0040 0020
・Gather転送の 転送サイズ32バイト SS=64,DS=32 DMA1コマンドチェーン
レジスタ0 (DMA1CCAR0)
H'FEA0 0040 R/W 32 H’E500 E120 ・次のコマンドチェーンのコマンド列
のアドレスを指定(コマンドチェーン2) H’A000 0000 ・連続領域の転送
CHE=1,CCRE=1 DMA1チャネルコントロール
レジスタ0 (DMA1CHCR0)
H'FEA0 0048 R/W 32
H’A300 0000
・ストライド/scatter/gather転送 CHE=1,CCRE=1,SARE=1,
DARE=1 DMA1チャネルステータス
レジスタ0 (DMA1CHSR0)
H'FEA0 004C R/(W) 32 H’0000 0000 ・各割り込みは未使用
以下にコマンドチェーンアドレス
2(H’E500 E120 – H’E500 E13C)に設定した各レジスタの設定値を以下に 示します。
表
3.1.4.5 DMAC1レジスタ設定値
1(チャネル
0コマンドチェーンアドレス
2)レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様
H’1400 E000
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1DAR0はDDR3を指定) DMA1ソースアドレスレジスタ0
(DMA1SAR0) H'1EA0_00020 R/W 32
H’0800 0000
・転送先の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1DAR0はOLメモリを指定) H’1400 E000
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1SAR0はDDR3を指定) DMA1ディスティネーション
アドレスレジスタ0 (DMA1DAR0)
H'1EA0_0028 R/W 32
H’0800 0000
・転送先の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1SAR0はOLメモリを指定) DMA1バイトカウントレジスタ0
(DMA1BCNTR0) H'1EA0_0030 R/W 32 H’0000 0040
・転送バイトカウントを指定 64バイト
*転送サイズは4バイト単位 H’0000 0000 ・連続領域の転送:
SBCINI=0, SBCNT=0 H’0004 0004
・ストライド/scatter/gather転送の 転送サイズ4バイト
SBCINI=4,SBCNT=4 H’0008 0008
・ストライド/scatter/gather転送の 転送サイズ8バイト
SBCINI=8,SBCNT=8 H’0010 0010
・ストライド/scatter/gather転送の 転送サイズ16バイト
SBCINI=16,SBCNT=16 DMA1ストライドカウント
レジスタ0 (DMA1SBCNTR0)
H'1EA0_0034 R/W 32
H’0020 0020
・ストライド/scatter/gather転送の 転送サイズ32バイト
SBCINI=32,SBCNT=32
表
3.1.4.6 DMAC1レジスタ設定値
2 (チャネル
0コマンドチェーンアドレス
2)レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様 H’0000 0000 ・連続領域の転送
SS=0,DS=0 H’0008 0008
・ストライド転送の 転送サイズ4バイト SS=8,DS=8 H’0004 000
・Scatter転送の 転送サイズ4バイト
SS=4,DS=8 H’0008 0004
・Gather転送の 転送サイズ4バイト
SS=8,DS=4 H’0010 0010
・ストライド転送の 転送サイズ8バイト SS=16,DS=16 H’0008 0010
・Scatter転送の 転送サイズ8バイト
SS=8,DS=16 H’0010 0008
・Gather転送の 転送サイズ8バイト
SS=16,DS=8 H’0020 0020
・ストライド転送の 転送サイズ16バイト SS=32,DS=32 H’0010 0020
・Scatter転送の 転送サイズ16バイト
SS=16,DS=32 H’0020 0010
・Gather転送の 転送サイズ16バイト
SS=32,DS=16 H’0040 0040
・ストライド転送の 転送サイズ32バイト SS=64,DS=64 H’0020 0040
・Scatter転送の 転送サイズ32バイト
SS=32,DS=64 DMA1ストライドレジスタ0
(DMA1STRR0) H'1EA0_0038 R/W 32
H’0040 0020
・Gather転送の 転送サイズ32バイト
SS=64,DS=32 DMA1コマンドチェーン
レジスタ0 (DMA1CCAR0)
H'1EA0_0040 R/W 32 H’0000 0000 ・次のコマンドチェーンのコマンド列
アドレスを指定(コマンドチェーン2) H’A000 0000 ・連続領域の転送
CHE=1,CCRE=1 DMA1チャネルコントロール
レジスタ0 (DMA1CHCR0)
H'1EA0_0048 R/W 32
H’A300 0000
・ストライド/scatter/gather転送 CHE=1,CCRE=1,SARE=1,
DARE=1 DMA1チャネルステータス
レジスタ0 (DMA1CHSR0)
H'1EA0_004C R/(W) 32 H’0000 0000 ・各割り込みは未使用
表
3.1.4.7 DMAC1レジスタ設定値
(チャネル
2)レジスタ名称(呼称) アドレス R/W サイズ 設定値 動作仕様
H’1400 E040
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1DAR2はDDR3を指定) DMA1ソースアドレスレジスタ2
(DMA1SAR2) H'1EA0_00220 R/W 32
H’0800 0000
・転送元の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1DAR2はOLメモリを指定) H’1400 E040
・転送元の開始アドレスを指定 OLメモリの場合
(DMA1SAR2はDDR3を指定) DMA1ディスティネーション
アドレス2 レジスタ2(DMA1DAR2)
H'1EA0_0228 R/W 32
H’0800 0000
・転送元の開始アドレスを指定 DDR3-SDRAMの場合
(DMA1SAR2はOLメモリを指定) H’0000 0064
・転送バイトカウントを指定 転送サイズが2バイト以下の時 100バイトを転送
DMA1バイトカウントレジスタ2
(DMA1BCNTR2) H'1EA0_0230 R/W 32
H’0000 0080
・転送バイトカウントを指定 - 転送サイズが4バイト以上の時 128バイトを転送
H’0000 0000 ・初期設定時:CHE=0 H’8000 0000 ・DMA転送開始時:CHE=1 DMA1チャネルコントロール
レジスタ2 (DMA1CHCR2)
H'1EA0_0248 R/W 32
H’0000 0000 ・DMA転送終了/中断時:CHE=0 H’0000 0000 ・初期設定時:TE=0
DMA1チャネルステータス レジスタ2 (DMA1CHSR2)
H'1EA0_024C R/(W) 32
H’0000 0001 ・転送終了時:TE=1
(転送終了時,自動的に1をセット) H’0000 0000 ・転送元DMA転送サイズ
- バイト単位
H’0000 0001 ・転送元DMA転送サイズ - ワード単位
H’0000 0002 ・転送元DMA転送サイズ - ロングワード単位 H’0000 0003 ・転送元DMA転送サイズ
- 8バイト単位 DMA1ソース転送サイズ
レジスタ2 (DMA1STRS2)
H'1EA0_0260 R/W 32
H’0000 0005 ・転送元DMA転送サイズ - 32バイト単位 H’0000 0000 ・転送元DMA転送サイズ
- バイト単位
H’0000 0001 ・転送元DMA転送サイズ - ワード単位
H’0000 0002 ・転送元DMA転送サイズ - ロングワード単位 H’0000 0003 ・転送元DMA転送サイズ
- 8バイト単位 DMA1ディスティネーション
転送サイズレジスタ2 (DMA1DTRS2)
H'1EA0_0270 R/W 32
H’0000 0005 ・転送元DMA転送サイズ - 32バイト単位