|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
! r: e' n9 N, x8 c& ~- W9 A- [code]EDMA sample test application2 d' M) R& v2 D! ?/ M
- /*- D1 V! O, ?1 T+ G; W* i# P' u
- * edma_test.c- r( t# {# h$ w K
- *0 ~) p C: _8 k' d$ W$ p5 d
- * brief EDMA3 Test Application
# U% s4 T, H; e8 |3 [0 `3 \% o+ u - *
6 K/ [/ p: D5 f+ Z7 G( D I( C+ Q - * This file contains EDMA3 Test code.% t& }" d, n& j
- *
$ |$ Y( y4 F1 V& C. @ - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: a+ i; o( C; y7 P/ K
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
4 r6 F, S5 o, Z2 | - * TO CHANGE.- ]: }6 F8 P1 z: S% ^, i" z
- *4 [! p2 c6 t- E( z5 r% M6 a, p
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/& b0 a4 G! Q- ~* f$ K/ r' n# }
- *
k: J0 d ^. c - * This program is free software; you can redistribute it and/or
0 h: Y* c4 w$ K+ z- V - * modify it under the terms of the GNU General Public License as
& Q% w4 v" Q( Q" _( w; v - * published by the Free Software Foundation version 2.5 ^% x; Y7 b$ j, t( U3 q/ C2 T) g
- *; Z" _. P: B, {. E [
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
% |2 z2 Y7 W, g% }3 G# M - * kind, whether express or implied; without even the implied warranty; K9 C+ O* f1 p H3 ]% k
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* m7 u% k0 {$ g) X) I& Q* ]3 f) }
- * GNU General Public License for more details.
0 a2 K+ }) k$ r# ^" o4 l$ M9 G - */) K) W5 Y6 F! @, V5 h5 m
1 c* G1 E! x5 ^1 @& Y# U1 B" c- #include <linux/module.h>; f5 q7 g, H" ]' s* E' y% q$ n
- #include <linux/init.h>
6 u+ l. }8 x; x - #include <linux/errno.h>
9 M2 o3 E( M& _: U. D, a2 ~$ x - #include <linux/types.h>3 s: L3 v8 F. \8 ?6 V+ |/ _+ r
- #include <linux/interrupt.h>
( c3 H1 g+ a& v7 D1 ]2 {& V2 k - #include <asm/io.h>
\# g Z( p9 B$ d - #include <linux/moduleparam.h>' N' _5 j; f0 o
- #include <linux/sysctl.h>% \8 g8 i1 d3 j# b. B' @
- #include <linux/mm.h>! ]) P. h( [3 W, U* Y3 i
- #include <linux/dma-mapping.h>4 }1 L+ m; [3 f" L" r% y
1 N# s. C0 h0 L' @0 f- #include <mach/memory.h>9 k! m% R4 T- M5 `+ E
- #include <mach/hardware.h>
3 x- V" F3 z1 d8 i/ _( t) ] - #include <mach/irqs.h>' m0 x$ Q _) W o. \/ W
- #include <asm/hardware/edma.h>
2 ]# N7 i( K. q+ {8 e4 W - / E0 a& k# n! k- C( Q
- #undef EDMA3_DEBUG
9 L) |8 k: v: q W2 L8 b: ?/ ^ - /*#define EDMA3_DEBUG*/
4 u C4 N! X4 I - / O; e4 n9 T/ \' U4 J5 l6 L* N
- #ifdef EDMA3_DEBUG+ y7 j) P6 M, V7 u0 ] {# O- K
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)+ Q! q. o# N+ v2 I
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
& c6 D: U( R3 Z- K7 X. ^2 I - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
. A. {6 [0 R, `) M! C - #else
2 C3 O7 i4 o: [* u) y. d' ~+ m. Y8 N - #define DMA_PRINTK( x... )
& N6 J7 @: b" g% @( U: }6 i - #define DMA_FN_IN+ k' \9 }& p4 ?$ u; G' _ [
- #define DMA_FN_OUT/ i7 F! D3 z1 r9 U6 w4 R* Y
- #endif; t) e: R l; j A+ @ t
& F, v" R2 t" }. Q% j- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
+ m0 [8 J& D% v9 B% w - #define STATIC_SHIFT 3$ `7 r- o6 ?( _
- #define TCINTEN_SHIFT 20
3 o: k" k! E5 U9 ` - #define ITCINTEN_SHIFT 219 k" w5 w6 w, w) j
- #define TCCHEN_SHIFT 22: u6 t2 t8 K2 k) F$ q: r% C
- #define ITCCHEN_SHIFT 23
" a1 k, u/ p' }4 n) K1 d) {5 d8 \ - 2 _+ C# S% U2 @& n
- static volatile int irqraised1 = 0;7 f: K |. G0 i, J
- static volatile int irqraised2 = 0;# H6 W8 w, y1 |% l
# @2 v* {4 W0 }' ?1 W8 O- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
: [' w( n" g( |% z( k - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# V1 j7 ?- c$ c& Y9 A' z9 p
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
+ `" P0 `( \* d4 S' f - $ {$ g& x7 I c2 ?2 i" m% b1 O
- dma_addr_t dmaphyssrc1 = 0;
$ I' q) P, U5 Z2 k% j# [ - dma_addr_t dmaphyssrc2 = 0;3 f' E x" A8 S0 a/ e, Z# O" d
- dma_addr_t dmaphysdest1 = 0;
) f# R# ^! ^; ] - dma_addr_t dmaphysdest2 = 0;6 H: j% u: x, [1 [
4 v8 L* I' s: s6 {/ y# t% Q& M- char *dmabufsrc1 = NULL;
, @# m( y4 h. O: S/ ~2 }9 b, w - char *dmabufsrc2 = NULL;
) P6 C; f3 [7 c; G. w) U - char *dmabufdest1 = NULL;# e- e, N' ~5 D( p% w
- char *dmabufdest2 = NULL;) N9 o( R( C+ C& a. a! b6 ]# `
- " y& h" {' s/ T) E/ m/ \: o
- static int acnt = 512;
" w# ?) x) j5 v8 x, z8 @4 Y2 ^ - static int bcnt = 8;, \0 b8 K `3 k
- static int ccnt = 8;
, A# `: s/ x( w$ v8 n - 2 N4 [; V6 {: ?- D2 W" I& e5 O1 j: ]
- module_param(acnt, int, S_IRUGO);. Z1 |1 p: _5 P% z8 ?
- module_param(bcnt, int, S_IRUGO);+ ]0 y& `+ @% G( a
- module_param(ccnt, int, S_IRUGO);
复制代码
1 @0 } O r3 e- [, c$ V' Z* ~3 `2 B+ L( y8 i' T0 h
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" b/ k3 L2 B; K% `3 n* { j$ qarm-none-linux-gnueabi-gcc -I /home/tl/omapl138/linux-3.3/arch/arm/include -I /home/tl/omapl138/linux-3.3/include EDMA3test.cpp -o EDMA3这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。; {! l% ^) P. h' Y
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
' ^" H+ |9 k5 R( n6 Z7 r( W9 p# l) b; S( R; E
' D4 L2 h% u; M' Z$ |& _! t |
|