嵌入式开发者社区
标题:
EDMA3中源地址和目的地址设置问题
[打印本页]
作者:
fanxuchao
时间:
2016-9-27 08:47
标题:
EDMA3中源地址和目的地址设置问题
" F4 e" f2 ~. k- L; N
用的创龙TL138-A3开发板,裸机,例程是EDMA3。
( U6 t2 v4 m# }% k& N
. I$ O# {! I, B
例程中可以看到数据的传输,但是貌似没有找到在哪里配置的SRC和DST。
6 @; L" I8 |7 G6 M0 F3 a/ ]- Y
- A- c) ?: N5 L# B
看了工程编译后的map文件,发现编译完后就已经分配好了,如下:
! ]. C% G. p* |* t: }
.bss 0 c000c500 000002ec UNINITIALIZED
8 V- {; f+ f* K
c000c500 00000194 system_config.lib : interrupt.obj (.bss:fnRAMVectors)
0 r' b9 I' [' J
c000c694 00000080 (.common:cb_Fxn)
7 f1 C) b. p) |0 b
c000c714 00000064 (.common:_dstBuff)
7 `1 D" r% I# J( L E# M* I5 g2 D
c000c778 00000064 (.common:_srcBuff)
3 k* ?; j/ J! {# X- v
c000c7dc 00000004 (.common:dstBuff)
6 ]' L! D! z+ o) S' p! V
c000c7e0 00000004 (.common:irqRaised)
' @; r& G- m5 @8 L: m
c000c7e4 00000004 (.common:regionId)
( u1 h$ Y* @/ p5 t$ n
c000c7e8 00000004 (.common:srcBuff)
( g+ e% x' I' @# D4 [
g, i- _1 \3 R1 e. ^& w) k& \
: m2 T' F/ k& [) \4 t: V9 _, U0 ^
如果我想人为的设置源地址和目的地址应该怎么做?
2 |: O2 V. z& A9 g
6 W2 e4 v$ l4 f- A2 B* f8 C
.init:{system_config.lib<init.obj> (.text)} > 0xC0000000
5 x5 p1 Q/ y/ o8 ^5 j; C( Q
.bss > DDR2 RUN_START(bss_start), RUN_END(bss_end)
. _9 _7 j4 p% s$ h# H
.far > DDR2
% a* g9 Y6 u. e, R
! U( w9 B" U1 @2 A# T% p4 P0 O+ ]& m
还有一个问题就是想请问一下cmd文件中.bss里在DDR2后面的
RUN_START(bss_start), RUN_END(bss_end)
是什么意思?
. h/ E9 ?. V0 o8 P
$ [5 F0 Q/ ?8 I: I( |5 t
作者:
human
时间:
2016-9-29 09:42
默认的自动分配地址,你想人为的设置源地址和目的地址,在定义时指定地址就好
7 u0 {5 j2 B7 o% i! {
volatile char _srcBuff[MAX_BUFFER_SIZE];
" H) @7 R4 c. Z- f
volatile char _dstBuff[MAX_BUFFER_SIZE];
& _/ ?" N8 d4 U9 X' A
1 y _; V6 j( o
volatile char *srcBuff;
) P. ^ |: L+ P. \& ^( i! E
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,
2 E5 r+ _; B2 x, H0 v
地址在定义时如何具体指定?
4 ?1 W8 g3 o3 v( H6 n* W
我这样写是错的。。。
1 N* D- E! o1 I8 U, e( x
volatile char _srcBuff[MAX_BUFFER_SIZE] = (char*)0xc000c878;
6 b6 S5 l; S- \- x7 _
2 s0 [) L9 D" Z
作者:
liyulin
时间:
2016-9-29 14:18
如果数组地址的话,可以用#pragma DATA_SECTION来指定 ,放到CMD中定义的字段中。
: X' @: j: j* d/ N
如果是配置EDMA的目的和原地址 在EMDA 参数RAM里面配置。
作者:
fanxuchao
时间:
2016-9-29 16:11
标题:
RE: liyulin
: B0 j! V u# W' U$ i9 a! s8 G
) E$ N( N% X) O2 P9 ^5 _
嗯,我刚才试了一下,用
#pragma DATA_SECTION,然后在cmd文件中来指定数组地址是可以实现的。
h1 S9 a2 Q( S" d, P3 f B! N2 l
0 y7 f: A# H0 ~" ~8 h1 `+ f+ P
然而我真正的意图是你说的第二种,我看了参数RAM的配置,程序如下:
, {4 r+ E! {5 M4 v2 J: L; H! x
0 N! T9 z; t& ^7 {. J# d
// 给参数 RAM 赋值
6 |! M6 ~* D1 h# B9 Y
paramSet.srcAddr = (unsigned int)(srcBuff);
+ P) x& m: ~# z o1 D8 W ?
paramSet.destAddr = (unsigned int)(dstBuff);
' G0 \4 a7 d1 H6 D* w0 c
# i3 e# a$ F' @+ j0 A, b
paramSet.aCnt = (unsigned short)acnt;
! U" i) u% c; | i) B3 w3 T
paramSet.bCnt = (unsigned short)bcnt;
) T: Q$ r5 M2 e5 U; D% R0 P9 t
paramSet.cCnt = (unsigned short)ccnt;
1 p# Y1 U' M) Q; K
' G/ R4 ^& E* }. O
, G3 V9 t5 W3 l2 l2 q
// 设置 SRC / DES 索引
4 d& V% {- i' J. z8 d% C
paramSet.srcBIdx = (short)acnt;
0 Z4 u6 ^( b$ h) v8 l* _
paramSet.destBIdx = (short)acnt;
9 ]+ U0 E. }2 \/ l" \& b
: o s9 A( |9 w0 d7 C; q
) m( Q& L. j; p
还没想好在这里怎么人为的把地址给srcAddr和destAddr
8 m1 f6 _( [1 l1 Y$ V1 ^# D
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4