|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 |5 H# N. W; e2 j" e9 n
- [code]EDMA sample test application
A" n9 a; X0 M, ` - /*
: M6 P. t( V" l7 e3 m1 f8 @+ Y9 \4 Y - * edma_test.c) O" g, p9 `3 J5 }& V: Q% k3 D) F
- *
6 p% n$ K; e+ V+ G+ N - * brief EDMA3 Test Application
9 s& s6 w0 W5 p7 M - *5 n" J8 }& U, {# ]0 Z7 W$ U
- * This file contains EDMA3 Test code.
& g ]5 i; ^) `2 _7 q q - *5 b1 m/ C# }0 M) O1 G0 r, z% D+ q9 x
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE% f; L# X9 K# G/ h- X
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
: ~0 X( [* L1 z# a! d - * TO CHANGE.0 p' B4 E5 d* @
- *
' _- m* P) h7 ]5 ^, Z - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/; D4 `4 D% [, O7 \+ R1 W2 r( i
- *( [8 P0 {* q* p! I
- * This program is free software; you can redistribute it and/or) Q0 g2 M: Y- q y% ?' Z* C
- * modify it under the terms of the GNU General Public License as- d9 m- \' N+ Y6 z9 x
- * published by the Free Software Foundation version 2.
; q& I6 v: l6 @* I% [- L; e; v - *
% @( A' q& _1 T7 `6 t - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
, i: E$ v: W* D+ \ - * kind, whether express or implied; without even the implied warranty F/ j+ J$ Z1 G8 k
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ }0 e; I! k" ?+ m' R: @9 l: d, {
- * GNU General Public License for more details.1 q a) W5 G* ]5 X! f# r6 l* ~
- */
1 w# Z" l& d+ p - 1 f* n( V1 B- d6 a9 k- d; `+ x, }
- #include <linux/module.h>
; ^. o# o. P; l - #include <linux/init.h>! \1 Q; s5 P. T0 ~# Q
- #include <linux/errno.h>
5 H3 S- U" D. k$ f) t: { - #include <linux/types.h>
, J/ T- Y& \5 t$ r" S: w7 ? - #include <linux/interrupt.h>
+ y! ~9 O, } C, ?' G% [ - #include <asm/io.h>0 ]- h0 P/ L6 ~) [- R9 }
- #include <linux/moduleparam.h>7 L2 q0 P. p4 G0 u/ ^. l
- #include <linux/sysctl.h>
4 a5 q$ q4 w9 [6 m& u& ? - #include <linux/mm.h>) @* f4 \9 J! F
- #include <linux/dma-mapping.h>
5 \# A0 B! @. x" Z, ^3 b8 h+ ]: o - 1 ~, ]% s' `& s U. Y6 p
- #include <mach/memory.h>
. ]( m) p) K# _. T3 @2 O' ? - #include <mach/hardware.h>
* \/ a7 o% c2 T% t0 F+ ` - #include <mach/irqs.h>
5 ~3 T+ B2 i8 b5 \) a. g+ K - #include <asm/hardware/edma.h>
2 L, [. g; q$ P$ F) d/ h
% n; k0 `# o9 ^- d( c$ K- X- #undef EDMA3_DEBUG5 N3 e7 P. a1 l, ]
- /*#define EDMA3_DEBUG*/
) z- m9 p) X- K0 N
+ t3 d0 s+ |* h+ Y m! \- #ifdef EDMA3_DEBUG* ]; w# k7 A$ f0 [) @5 u
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
6 d% C8 y7 {7 F: H! m - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
$ ]' s4 ~( W/ u# Q3 L; f - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
+ J+ q# g8 O* G6 K# w& a5 w - #else4 ~7 d" W. d4 x' r! S1 ^( S" i) p
- #define DMA_PRINTK( x... )% h+ ^, ^! N4 V# U* f
- #define DMA_FN_IN
) m) b, Y4 K0 e& \2 R$ x2 l) F - #define DMA_FN_OUT' [, N# l. `; n1 ?7 @) e
- #endif
& K& d8 U4 `4 D* W: I - & j' i0 J/ [, o$ ~0 _: g/ p
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
$ g- I) m3 x! G) x9 L3 w5 W - #define STATIC_SHIFT 34 o) l) N2 U# E. J" C5 L
- #define TCINTEN_SHIFT 201 z6 }. K. ?7 s$ p' |1 r
- #define ITCINTEN_SHIFT 21
. {6 |- h3 U. i& Y - #define TCCHEN_SHIFT 22
6 y7 Z' j# C. v/ O" q$ n1 I0 G. Q - #define ITCCHEN_SHIFT 23
7 T0 ^" {# M9 j - + ]8 t1 ~6 D g$ O# n
- static volatile int irqraised1 = 0;4 h$ g) i( d3 [) d/ Z2 b
- static volatile int irqraised2 = 0;
: i2 a* [! g' S% ^( Q: {9 t - . |) U5 c. }" O8 H
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
m8 d$ b5 n! \ - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
. L( D0 A9 m+ l: ~% s - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- S% m" G6 Q: j& u0 @( r
' e/ R) B/ L6 \ i% s, W- dma_addr_t dmaphyssrc1 = 0;
6 Z% r- Q4 }* |1 x4 Q0 U& Q' Z* W - dma_addr_t dmaphyssrc2 = 0;* j) n$ K4 R* v5 r: y& G7 z
- dma_addr_t dmaphysdest1 = 0;
3 \4 x6 N7 a% A - dma_addr_t dmaphysdest2 = 0;4 h) Y5 s I3 f/ z$ H' _
. c3 B6 |' }5 B, q: b; r7 `. q* M$ B- char *dmabufsrc1 = NULL;
' A9 t% [8 w4 w$ j# E8 Q1 d/ J - char *dmabufsrc2 = NULL;$ [# ?2 ]) g1 A, t
- char *dmabufdest1 = NULL;
: T; R. E- t. h5 }3 q$ U - char *dmabufdest2 = NULL;
. S1 b `5 Z4 A0 T! \
- ~+ t {, B* j- static int acnt = 512;
' [2 C7 k5 R% X/ ]% E3 C - static int bcnt = 8;
8 e7 `, @6 `5 A) r1 F7 \! h - static int ccnt = 8;5 ]6 [# o! b$ {' _: h& b
* Y. i4 k+ z$ Y+ o+ _2 ?- module_param(acnt, int, S_IRUGO);# O* ~' @: v1 ^
- module_param(bcnt, int, S_IRUGO);
3 l! N. {, r( ^ - module_param(ccnt, int, S_IRUGO);
复制代码 8 ^# i! M& _- S# q
. c: ]/ h+ i% i* u4 Z
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
+ c& [8 }( { n! Y9 carm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。! j" g/ k2 s( N" A" V* e
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。4 C& N I: z( [# ?* {5 b
8 g$ S* f+ U7 R
2 _+ v& N" m) i+ x) ^. g |
|