嵌入式开发者社区

标题: 在ARM端和DSP端都使用EDMA [打印本页]

作者: lizhaoheng    时间: 2016-3-22 16:21
标题: 在ARM端和DSP端都使用EDMA
我目前使用OMAPL138芯片开发,在ARM端和DSP端都需要使用EDMA,不知道是否可行?是否有什么影响?
5 f/ Q/ y6 w3 b
作者: teddy    时间: 2016-3-22 16:26
可以的,通道分配好,不用两个核使用同一通道就行,本身设计就支持双核,放心使用。
作者: leyiran    时间: 2016-8-18 14:41
teddy 发表于 2016-3-22 16:26
. p* O0 Q- J( {% a$ ?可以的,通道分配好,不用两个核使用同一通道就行,本身设计就支持双核,放心使用。 ...

& Y" B0 |+ d, K' B( E4 W具体在内核中怎么修改?哪个文件?
作者: teddy    时间: 2016-8-23 08:59
arch/arm/mach-davinci/devices-da8xx.c:+ O' {% n2 q( e. Z5 s# w

* K/ j: A  I2 x# K1 F% h1 T1 ^static const s8 da8xx_queue_tc_mapping[][2] = {' w5 x4 `6 D2 O1 R4 H! J$ C
        /* {event queue no, TC no} */& S0 Q3 x* u, M8 l6 \" V4 s
        {0, 0},
3 H5 H0 h; G5 Y        {1, 1},- g0 U0 n3 T. X$ F7 a/ `  Q
        {-1, -1}  }. r; q7 U5 T  Q& E7 M
};: c! g$ q* I$ D3 @, `; L' c& E
$ o3 a; t- \/ Q8 V3 V
static const s8 da8xx_queue_priority_mapping[][2] = {$ [1 Q6 B: p! j" W( F- M9 _
        /* {event queue no, Priority} */
1 p9 Q& R5 _; T        {0, 3},! E9 v  s1 c& M: Q4 P" O
        {1, 7},% p+ |# n0 h6 s1 N! ^8 h
        {-1, -1}
  f& l( m0 Q" t  l};6 H' ?) C$ M, \& l/ [: {" f  x

2 o. ^0 H4 n& v/ Rstatic const s8 da850_queue_tc_mapping[][2] = {
# U" N- `1 f# u% P        /* {event queue no, TC no} */
" }0 w1 K: C+ v3 [- M: x        {0, 0},
4 m5 o. a3 Z, e; d1 M. M3 p        {-1, -1}* d8 ~$ h  t" Z% \
};
/ D" ?: a3 n) N' J. v: ]8 Q& ]
" A" `/ @- d6 X+ I# Z) K6 j5 S4 [static const s8 da850_queue_priority_mapping[][2] = {5 d, E9 z7 B# f1 \) d* ~
        /* {event queue no, Priority} */
% |; r( W: u* \; E" A        {0, 3},
- l% {( s* N) |( e8 \, i/ ]        {-1, -1}' G0 B0 `# r; S+ c; {
};
, i# `  o0 I" G
作者: teddy    时间: 2016-9-14 10:27
在linux内核源码里面,对edma的通道做了分配,把dsp可能用到的edma通道预留出来,意味着,在dsp里面可以使用到这些通道。; b/ @& ?* v. B5 L" z+ G
arch/arm/mach-davinci/board-da850-evm.c- ~" ?/ d8 I6 ~
/*
$ P7 J" O7 N2 X' C2 K7 D5 e * The following EDMA channels/slots are not being used by drivers (for+ H1 \7 m$ f: p+ j
* example: Timer, GPIO, UART events etc) on da850/omap-l138 EVM, hence3 V; m' `# [. Y1 o  w2 e
* they are being reserved for codecs on the DSP side.$ H. i) x% M8 }
*/: m/ O; p$ I& j  {$ A0 R
static const s16 da850_dma0_rsv_chans[][2] = {/ E1 w1 P$ r) i8 T& k# O. z4 D
        /* (offset, number) */
: x$ ]1 H4 q6 g, z        { 8,  6},# W4 ?+ m* y# r% B9 v, F
        {24,  4},+ e. c) a& w4 G2 x5 i7 T
        {30,  2},
+ G( v5 v5 U: Y        {-1, -1}+ j) {3 A& S) T+ A1 ^. U! ]& H
};
  ]% w( c9 o& E# c1 k; F: H/ Y/ J% r! w0 w
static const s16 da850_dma1_rsv_chans[][2] = {. R7 i3 G7 {- B) y2 m  W" F  t/ D
        /* (offset, number) */
4 D& [# v* _0 k        { 0, 28},
7 y& E- i8 c; D6 z- N4 S        {30,  2},
+ c  y7 G* `0 l" F7 V% n# W# Q        {-1, -1}. ]7 _: ?0 q/ m2 n
};
) n4 R0 z% G0 ]" w5 l( c. T% u+ E+ c& j) y* E2 z2 d1 u
上面的代码表示,如图片,EDMA CC0红色方框的通道预留给dsp,EDMA CC1除开红色椭圆MMCSD1其它通道dsp端都能使用。
1 H8 m# ^" ~$ j- m6 K




欢迎光临 嵌入式开发者社区 (https://www.51ele.net/) Powered by Discuz! X3.4