|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 A6 X% m9 [$ C) G, ^% h0 }- [code]EDMA sample test application+ H+ z1 q6 R' B/ B. @, s- M& f
- /*/ e h, z. \4 i7 c, n! w: y7 Y
- * edma_test.c$ w4 k5 C, I, P
- ** H- [1 H6 A; z, a) e+ w
- * brief EDMA3 Test Application- z8 l* V2 e2 k% ~5 u& w @& p
- *4 w$ C$ ^$ h3 K1 k. v) ^) a! A, p
- * This file contains EDMA3 Test code.; X) L. v; [; t) K/ i U: C; a3 E
- *
( s+ Y# X ~& G6 g2 B - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE4 N; D6 p4 ^) Q8 s* T3 r5 b. Y
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT; s/ N: @! U3 X% P& O) d$ @
- * TO CHANGE.
r# p4 E/ v- x" Q# p& w - *
* w4 F# Z) T9 m' w - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/9 }- H* R& d' P0 V2 {
- *
3 M, }. J: Z2 Z - * This program is free software; you can redistribute it and/or) o5 s _5 O: y. y4 T
- * modify it under the terms of the GNU General Public License as
6 f! [6 W. ]* G$ V' W7 j - * published by the Free Software Foundation version 2.
- w0 r+ R8 [4 y7 I) s - *' \8 s% {4 ]* v2 f6 i% V2 [
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any+ x6 J) W; E: h8 P% E
- * kind, whether express or implied; without even the implied warranty) e" L" D1 q7 r7 a% h
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
. ^* t7 V% X- q0 m/ I, m4 ? - * GNU General Public License for more details.7 ?1 {/ [ i% @2 `4 r" q
- */. R! T* O( q/ F
) }4 ?7 A7 e; j& w! U, b8 Y v- #include <linux/module.h>
( e9 L/ r$ p/ M - #include <linux/init.h>7 t, w% S6 k" |4 L* w5 Z/ Y3 J
- #include <linux/errno.h>
& ~ q* K0 f: R" G4 \6 | - #include <linux/types.h>
- F9 o1 }5 T& P- a$ a+ A0 ~! t - #include <linux/interrupt.h>0 {( {! M. O# B8 r, K
- #include <asm/io.h>6 p5 ]( c/ j1 b9 J" G
- #include <linux/moduleparam.h>- G0 } o. D7 X+ M6 T- t
- #include <linux/sysctl.h>
" J3 A, W% A- I; q X - #include <linux/mm.h>
5 h0 _; l( y! d& Y- N - #include <linux/dma-mapping.h>
' I* k( f) n. i5 Z( I
9 p. N3 L7 w1 h; V- #include <mach/memory.h>
* o. x' t* w4 v8 P9 R4 j3 y2 R1 I - #include <mach/hardware.h>
* u/ x7 ~' B$ \' _3 T - #include <mach/irqs.h>1 m5 |* M; ^8 G' O: S! F$ x. j1 n
- #include <asm/hardware/edma.h>
: B5 O6 B% G8 R/ a! f2 J! v% G
. A; ]7 U; s# b5 X" h& ?9 b; [- #undef EDMA3_DEBUG) E* Y/ A" {9 f) D/ O5 j, x
- /*#define EDMA3_DEBUG*/# G. U4 V% W5 ^ c) R. l8 {" K
6 U* [+ j0 |# v9 Q- #ifdef EDMA3_DEBUG
$ v$ R! `* r' a4 W/ l - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 R: m4 m# ^) \' U) e: _0 v" R
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
. O' `$ Q. q' ^# _% M# l8 C$ f - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
- ~( q6 V+ m5 |4 J5 r I# \ - #else( ^4 V4 z7 h$ D* ]/ C$ h: Q
- #define DMA_PRINTK( x... )# Z; `4 j+ Q# o6 Z5 O3 f
- #define DMA_FN_IN
& M) f8 M' V3 N2 Q6 w - #define DMA_FN_OUT1 q0 o2 j) b9 K! v) u
- #endif
4 h1 G; l9 p" m
9 L7 J2 I" a( ?7 ^- #define MAX_DMA_TRANSFER_IN_BYTES (32768)8 V/ A% ~" L( R, z! l; Z( }/ _+ R
- #define STATIC_SHIFT 3' b8 x8 U8 R3 i, _! \4 }
- #define TCINTEN_SHIFT 20) h4 G: m* G& D' Y# B0 f
- #define ITCINTEN_SHIFT 21
0 H3 n8 {) t% ~* p3 V - #define TCCHEN_SHIFT 22 L) F; z6 N: c( _* m1 J5 D
- #define ITCCHEN_SHIFT 23
4 v% t1 g" `. H
; S" V+ F) F \, X9 d7 m- static volatile int irqraised1 = 0;$ Y1 O& h: A: r6 c: e, w
- static volatile int irqraised2 = 0;
* x, v1 B4 g# d F - J* {8 K9 E! ]7 V+ _
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 y: p: c7 V( `0 S
- int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
6 C4 e# L: g5 O- f8 m - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 Q* G) p( F1 S3 L9 p7 F2 v+ n
/ ^' y) q0 e5 ]- B- dma_addr_t dmaphyssrc1 = 0;
* ^* D+ G e) O, w4 f! C - dma_addr_t dmaphyssrc2 = 0;
5 @) ]: ~; Q5 V& s - dma_addr_t dmaphysdest1 = 0;; @- N1 o4 o$ _; r# N4 h; J
- dma_addr_t dmaphysdest2 = 0;$ P9 D( w8 ]4 d7 m3 X Q9 m9 g1 X
& n' d# n# w, y+ @3 {% I3 b- char *dmabufsrc1 = NULL;
$ b; M" \. Y: G; W - char *dmabufsrc2 = NULL;5 @ J, s4 F5 R8 b0 i
- char *dmabufdest1 = NULL;" [# l" \# s7 D! p) |
- char *dmabufdest2 = NULL;
3 e# ]& {/ I K) {9 N0 ] - # W' i4 q% W! N6 {+ s- X
- static int acnt = 512;
+ P9 ^/ G9 m6 L2 V& J9 B% ^ - static int bcnt = 8;9 U K; M4 s) @! ^3 N- _. u6 ?
- static int ccnt = 8;
0 i9 \+ X. {1 Q+ y - " Q* a9 \4 V, m2 i- k+ K- p, R
- module_param(acnt, int, S_IRUGO);
A9 d8 H4 H) p7 i - module_param(bcnt, int, S_IRUGO);* Z. z5 d4 W* d) p& Y3 `
- module_param(ccnt, int, S_IRUGO);
复制代码 9 o1 P4 w4 ~% A
; q& V# X* ]0 }! L5 m2 B( K
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 @; F$ H# j) J* zarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
: p2 e" R" y5 z# ?7 e* u. H 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。$ |& o4 F7 Z _6 o {& B$ L+ i! U
" `' m/ S3 S# P- L3 X7 L0 c9 O* a' M% `' m& Q2 Z5 W- Y6 r
|
|