嵌入式开发者社区
标题:
在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/ R
static 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, hence
3 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