嵌入式开发者社区
标题:
EDMA3中源地址和目的地址设置问题
[打印本页]
作者:
fanxuchao
时间:
2016-9-27 08:47
标题:
EDMA3中源地址和目的地址设置问题
& f4 ?; s4 H b! `& m+ A0 x; m
用的创龙TL138-A3开发板,裸机,例程是EDMA3。
! v& C" T7 E. @* s6 V: Q
% Y( v4 L4 y4 B5 K! u, D
例程中可以看到数据的传输,但是貌似没有找到在哪里配置的SRC和DST。
5 n1 F. p- P& O$ T0 i
0 B; H l6 L" n( ^( N
看了工程编译后的map文件,发现编译完后就已经分配好了,如下:
4 t, s! D& H5 d/ S- w# c
.bss 0 c000c500 000002ec UNINITIALIZED
4 D: [) p3 w' O: x @
c000c500 00000194 system_config.lib : interrupt.obj (.bss:fnRAMVectors)
. H/ S, a2 B9 k" e0 S3 ^! |
c000c694 00000080 (.common:cb_Fxn)
+ @0 g1 f( e6 ?# [6 t3 x9 g
c000c714 00000064 (.common:_dstBuff)
, c" @+ {- a+ X: ]' E
c000c778 00000064 (.common:_srcBuff)
% N3 _5 J3 _* i$ x" h+ @! r8 M
c000c7dc 00000004 (.common:dstBuff)
$ p+ n8 K; [9 a/ |/ i0 I" i$ J
c000c7e0 00000004 (.common:irqRaised)
/ o1 u. }; J# q- ?. I5 @
c000c7e4 00000004 (.common:regionId)
1 F2 P v+ ^) B- Y3 {2 W n" F
c000c7e8 00000004 (.common:srcBuff)
$ d. b/ B; r# V8 ]
" G# e9 ~/ G" D1 l# |* a
( C+ S9 L5 X9 h+ d s8 \% N
如果我想人为的设置源地址和目的地址应该怎么做?
, B( G: R/ C! f
3 D6 p& V6 l4 s
.init:{system_config.lib<init.obj> (.text)} > 0xC0000000
; h9 s" P2 f( I4 ^3 e) h1 B
.bss > DDR2 RUN_START(bss_start), RUN_END(bss_end)
. u: ~3 s/ M' x6 U7 N: O9 N
.far > DDR2
1 r5 `6 J# H' v$ {& l7 C
' b# k0 k+ [/ W3 X
还有一个问题就是想请问一下cmd文件中.bss里在DDR2后面的
RUN_START(bss_start), RUN_END(bss_end)
是什么意思?
7 P3 Q1 T8 T6 }, P& x- ^- r3 S, ~
: l& g/ P( X; a) K/ {$ z, q
作者:
human
时间:
2016-9-29 09:42
默认的自动分配地址,你想人为的设置源地址和目的地址,在定义时指定地址就好
9 ^5 S/ i1 g7 x" \# k
volatile char _srcBuff[MAX_BUFFER_SIZE];
& r4 }+ t- v7 a4 \# t# j6 n E5 j
volatile char _dstBuff[MAX_BUFFER_SIZE];
% ^+ _8 g: M- u6 T) n4 n
- R, u7 A+ q7 v7 E) @& f' D
volatile char *srcBuff;
" `" O& \: L! k% c! p x5 h" q3 b5 Z
volatile char *dstBuff;
作者:
human
时间:
2016-9-29 10:17
CMD文件的相关介绍,请关注
http://51dsp.net/forum.php?mod=v ... &extra=page%3D1
作者:
fanxuchao
时间:
2016-9-29 13:48
标题:
RE: human
请问human,
7 L) }0 ^3 [3 C. S4 u4 C
地址在定义时如何具体指定?
# M' T3 I7 k H# @! c0 ~0 X
我这样写是错的。。。
4 x' L8 z# P" b+ T/ N
volatile char _srcBuff[MAX_BUFFER_SIZE] = (char*)0xc000c878;
* k, P0 O6 t1 | o
, y& q2 N# Z5 q; Q$ T
作者:
liyulin
时间:
2016-9-29 14:18
如果数组地址的话,可以用#pragma DATA_SECTION来指定 ,放到CMD中定义的字段中。
$ {7 |: o& j' p0 ~7 R
如果是配置EDMA的目的和原地址 在EMDA 参数RAM里面配置。
作者:
fanxuchao
时间:
2016-9-29 16:11
标题:
RE: liyulin
2 l6 B* V. V1 Q
7 O) v7 u) Y( A! p1 `
嗯,我刚才试了一下,用
#pragma DATA_SECTION,然后在cmd文件中来指定数组地址是可以实现的。
1 M. `3 r1 Q% H5 o
! j! z# o" a. o; T$ r
然而我真正的意图是你说的第二种,我看了参数RAM的配置,程序如下:
8 [$ r: q- q, _3 {; t
' J6 p N5 ^5 S- |
// 给参数 RAM 赋值
% U( N5 V c* E2 `2 W* ?
paramSet.srcAddr = (unsigned int)(srcBuff);
3 ]& I: U2 s+ b2 Z8 I
paramSet.destAddr = (unsigned int)(dstBuff);
. N: g: l& k/ j" e6 ]4 b
; r; C% N8 V( \( q; f
paramSet.aCnt = (unsigned short)acnt;
1 ]" |6 f2 |1 H( c
paramSet.bCnt = (unsigned short)bcnt;
J. P, ]# Z7 k+ a7 z! m6 |! ^
paramSet.cCnt = (unsigned short)ccnt;
# N5 f( f7 S2 f7 s3 z! n8 M
# i; F' u9 |4 T. \* L1 g1 {
# J- W* N' Q1 i" E9 B, K& I8 D
// 设置 SRC / DES 索引
4 E9 M( C2 E/ Y& v
paramSet.srcBIdx = (short)acnt;
" s& \; ^1 _4 ^. B* i. M% c
paramSet.destBIdx = (short)acnt;
7 g+ ^ v6 h X( Q
& i3 n, n/ o1 }) q
1 D9 f# B6 H' ~8 y" C
还没想好在这里怎么人为的把地址给srcAddr和destAddr
: w* S' z) t, w
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4