嵌入式开发者社区
标题:
在ARM端和DSP端都使用EDMA
[打印本页]
作者:
lizhaoheng
时间:
2016-3-22 16:21
标题:
在ARM端和DSP端都使用EDMA
我目前使用OMAPL138芯片开发,在ARM端和DSP端都需要使用EDMA,不知道是否可行?是否有什么影响?
5 q. t& y# O D% w
作者:
teddy
时间:
2016-3-22 16:26
可以的,通道分配好,不用两个核使用同一通道就行,本身设计就支持双核,放心使用。
作者:
leyiran
时间:
2016-8-18 14:41
teddy 发表于 2016-3-22 16:26
" F9 x% s& u2 f4 |) w
可以的,通道分配好,不用两个核使用同一通道就行,本身设计就支持双核,放心使用。 ...
# e& A: C# A8 i6 z( _. }
具体在内核中怎么修改?哪个文件?
作者:
teddy
时间:
2016-8-23 08:59
arch/arm/mach-davinci/devices-da8xx.c:
; S! Z4 i1 E4 L# n) s
) w+ Z. }8 U' [. k5 Y6 O: Z/ [3 Q
static const s8 da8xx_queue_tc_mapping[][2] = {
! W2 j E8 b$ h7 }; T8 K
/* {event queue no, TC no} */
0 N& c K6 ~6 v7 ?0 N" R9 v
{0, 0},
& W- @2 x$ ]$ \
{1, 1},
$ f5 ^9 D3 X) f5 j S# i' u
{-1, -1}
. ?, o/ O/ ?. p3 {+ ?! g$ |- O
};
* D; p" l; ]3 n9 d) y
% y& ~) m) H' `: f
static const s8 da8xx_queue_priority_mapping[][2] = {
8 ~4 B( y$ g' j. m( d2 Y: `1 b
/* {event queue no, Priority} */
% E2 s0 N& S$ t' l. _
{0, 3},
$ y* c. j8 D' \6 F
{1, 7},
( Y6 q" U4 Z! {& x: h w# k2 I7 ?
{-1, -1}
: Z. O0 R9 J. {! p. m3 p, X# s
};
! A# R0 r; Y% o
# b4 S3 X1 i2 ]1 E" ^3 c7 s$ N
static const s8 da850_queue_tc_mapping[][2] = {
/ L5 y1 n- u) e R! q5 Y4 z3 m
/* {event queue no, TC no} */
5 ]; m& Y) N6 _. K% K) h3 T9 W
{0, 0},
7 @& ?2 F, w& N8 W
{-1, -1}
6 s5 D* X% q; L% C( {! X( k G8 Y
};
- F% n5 x; \% b' Q
& `4 \5 B' V0 v
static const s8 da850_queue_priority_mapping[][2] = {
* `1 Y9 D- e/ @! o6 C
/* {event queue no, Priority} */
! _+ h' w% W3 @6 ]! a' t, d
{0, 3},
q( Q6 N- I$ b% B- N+ R7 @1 P5 C
{-1, -1}
: o: [* M" ]0 {2 v3 Y% t
};
7 g7 K, l# S; }! O+ F$ I2 R
作者:
teddy
时间:
2016-9-14 10:27
在linux内核源码里面,对edma的通道做了分配,把dsp可能用到的edma通道预留出来,意味着,在dsp里面可以使用到这些通道。
2 C) O3 V0 g- b9 R
arch/arm/mach-davinci/board-da850-evm.c
) O* Q( P6 Y6 L" Y. j
/*
4 s1 I, G8 q9 J; Z& W+ g
* The following EDMA channels/slots are not being used by drivers (for
9 n8 ]4 P. T2 J8 i+ A" W6 y
* example: Timer, GPIO, UART events etc) on da850/omap-l138 EVM, hence
0 A L+ _, h/ Y7 y, u+ K: x, @
* they are being reserved for codecs on the DSP side.
0 Y+ Y$ ?: `4 R, e% s _. j
*/
$ v' R$ a! m2 h) g) e% d
static const s16 da850_dma0_rsv_chans[][2] = {
1 ?. `/ b* m, |0 h- O
/* (offset, number) */
N' }7 ?1 I l0 k4 ^6 i9 L' K; E, M
{ 8, 6},
9 t0 |% K% ^& u) ^
{24, 4},
: {( V7 A# R8 P# K6 Y% v
{30, 2},
5 m1 ~. d3 M8 o* R, }" U6 f8 P" V
{-1, -1}
5 P! w4 i3 @6 h# c: R
};
* h' X9 Q) j! a |
$ k& @3 B+ N" f& t w
static const s16 da850_dma1_rsv_chans[][2] = {
9 R8 Z! d% W9 W5 E) |
/* (offset, number) */
& @% ^2 g5 [+ z
{ 0, 28},
: Z' u# G' A+ v- V# ^3 h$ p3 x
{30, 2},
' [2 V5 q6 N# P
{-1, -1}
/ L* o/ z# k4 N
};
) K& m; `9 [% U. S* e) }7 B
* }( Q! m, ^" H2 v3 T
上面的代码表示,如图片,EDMA CC0红色方框的通道预留给dsp,EDMA CC1除开红色椭圆MMCSD1其它通道dsp端都能使用。
( F2 `& v$ @6 U5 M" o, l
欢迎光临 嵌入式开发者社区 (https://www.51ele.net/)
Powered by Discuz! X3.4