嵌入式开发者社区
标题:
EDMA3中源地址和目的地址设置问题
[打印本页]
作者:
fanxuchao
时间:
2016-9-27 08:47
标题:
EDMA3中源地址和目的地址设置问题
* V/ p1 s5 b0 u1 F0 U+ O' B
用的创龙TL138-A3开发板,裸机,例程是EDMA3。
7 s8 z v H1 E' N8 H) a
4 a" V' n8 [) [" @1 v8 }! S
例程中可以看到数据的传输,但是貌似没有找到在哪里配置的SRC和DST。
. h7 w9 z. c) ?( U# O/ X
: U, E$ O* d+ H8 I( K6 g
看了工程编译后的map文件,发现编译完后就已经分配好了,如下:
8 ^8 ^% h: B0 A# N( _5 i: {1 x
.bss 0 c000c500 000002ec UNINITIALIZED
# n( y( t$ O; ^8 P
c000c500 00000194 system_config.lib : interrupt.obj (.bss:fnRAMVectors)
{' N9 d% S! M, j7 J* M4 i% B5 D
c000c694 00000080 (.common:cb_Fxn)
. A$ B7 v/ y9 }/ ]2 [7 l$ \" |8 S
c000c714 00000064 (.common:_dstBuff)
$ u9 b. g* v3 C4 q
c000c778 00000064 (.common:_srcBuff)
5 E3 Z0 l# S5 v1 V4 ^, x
c000c7dc 00000004 (.common:dstBuff)
% `6 d* k4 L; i) n6 I1 U! {/ G
c000c7e0 00000004 (.common:irqRaised)
- K4 ^8 c5 I Y4 G. {
c000c7e4 00000004 (.common:regionId)
& O: v1 |& b! H/ A
c000c7e8 00000004 (.common:srcBuff)
& y4 D6 X( M) F
3 r/ B( J4 I2 C" G& n" |
9 q8 B8 k; I5 ] ]
如果我想人为的设置源地址和目的地址应该怎么做?
3 ?; q* F7 j+ b# u
h& r- b% F( F# J: r& x* I
.init:{system_config.lib<init.obj> (.text)} > 0xC0000000
) g7 O( L$ l- q! J0 \
.bss > DDR2 RUN_START(bss_start), RUN_END(bss_end)
+ b) L1 V0 F0 B; Z2 o/ s2 ^
.far > DDR2
* Y7 z- P% F8 D
5 v" X# ]: ^3 c }5 g6 b" j0 f5 n
还有一个问题就是想请问一下cmd文件中.bss里在DDR2后面的
RUN_START(bss_start), RUN_END(bss_end)
是什么意思?
# Q% R$ s5 c3 _( s, j( A
; t8 a/ W$ W# l
作者:
human
时间:
2016-9-29 09:42
默认的自动分配地址,你想人为的设置源地址和目的地址,在定义时指定地址就好
3 u7 F9 H2 U( Q7 y( P2 J
volatile char _srcBuff[MAX_BUFFER_SIZE];
! t. L0 U) A: [( w! _- h
volatile char _dstBuff[MAX_BUFFER_SIZE];
4 `2 N# }8 G/ d- K' k) Y% Q
( e7 Q/ F; L2 O y, Y# ~8 A$ W
volatile char *srcBuff;
0 n4 k% L+ L9 [) A; f( R
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,
, R/ f& _4 ^* {6 D% @. O
地址在定义时如何具体指定?
6 C; R! V$ S5 G$ H; Y+ Z) k/ W% o
我这样写是错的。。。
1 O$ R5 P% a4 W+ X+ T3 g2 Y6 @+ _
volatile char _srcBuff[MAX_BUFFER_SIZE] = (char*)0xc000c878;
9 a0 m$ p3 `% o. H- H
* @+ @% N/ j( _& x
作者:
liyulin
时间:
2016-9-29 14:18
如果数组地址的话,可以用#pragma DATA_SECTION来指定 ,放到CMD中定义的字段中。
4 f# k+ H# O/ F6 Z3 D
如果是配置EDMA的目的和原地址 在EMDA 参数RAM里面配置。
作者:
fanxuchao
时间:
2016-9-29 16:11
标题:
RE: liyulin
' w8 v5 k9 h5 P1 n! _9 K
& \' g5 m' ~, e( g1 A* N
嗯,我刚才试了一下,用
#pragma DATA_SECTION,然后在cmd文件中来指定数组地址是可以实现的。
6 s6 B7 v7 w" N5 b3 T7 H
8 Z- `) s- x, P4 Q4 Y' ~- d
然而我真正的意图是你说的第二种,我看了参数RAM的配置,程序如下:
- D! f0 k9 A4 k
% t* ]3 Q/ P) M5 l' a$ G
// 给参数 RAM 赋值
9 ^9 f, h- B, ]! e/ {8 M8 v& b
paramSet.srcAddr = (unsigned int)(srcBuff);
6 ]. U" `# K- J
paramSet.destAddr = (unsigned int)(dstBuff);
4 m3 `5 G* r. m- C# v
2 ~( o* b) L( y0 P
paramSet.aCnt = (unsigned short)acnt;
( F2 U2 k0 h- p- Z- o* b. J; f, ^
paramSet.bCnt = (unsigned short)bcnt;
o6 J; @3 q2 _8 t3 }
paramSet.cCnt = (unsigned short)ccnt;
6 N5 ~% O' _/ t
+ o8 s7 m; t( j0 h0 I+ M
& d1 U4 h! h+ y
// 设置 SRC / DES 索引
/ E6 v$ W7 i9 [7 x. H) _
paramSet.srcBIdx = (short)acnt;
+ ]5 C* M, U( z4 V2 V* r
paramSet.destBIdx = (short)acnt;
- M) U1 u2 b7 L; c5 b" M+ g
! @5 @! t- @, o) b& z
) Q! l- ?. E/ E6 H
还没想好在这里怎么人为的把地址给srcAddr和destAddr
! L9 a! W% E, o$ b: Z
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4