|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ h# }5 T/ _! T' M7 ]/ Q2 V- [code]EDMA sample test application$ z* t0 g% b' w7 Z, r
- /*
' p: x5 _' } M- V! k - * edma_test.c: b# X! P; u1 x5 L0 w( t; J
- *6 P7 v9 ?# x; ?6 e6 u5 Q) l
- * brief EDMA3 Test Application
8 F5 _; M5 w& E7 m - *+ D. P( [# ^$ `1 B
- * This file contains EDMA3 Test code.. M- w3 Q4 ` y c8 }( T
- *
0 I* N$ ]# [7 ^% O) A' T - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE1 R1 x6 d I, D0 N* ? u
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
# u0 s1 I/ a' w$ F$ f4 O( B$ i - * TO CHANGE.
" W: O8 j" ^+ o0 Z' h& ^; V - *
2 X# q+ D+ b) I$ C8 m - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 l) f& w4 d2 h- z1 Y) V: d
- *- ` A4 V' Y; W% E: g
- * This program is free software; you can redistribute it and/or
+ x: K" ?6 D3 I - * modify it under the terms of the GNU General Public License as
& _# _" |, M7 P9 k1 _& i! {8 F! n6 ] - * published by the Free Software Foundation version 2.7 S' j4 Q& x+ C" b& d7 D! Y0 K3 \* W
- *
. q8 G- {6 B7 `, k! B - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
; W5 H3 G* A. ^) N" U4 m4 o! f - * kind, whether express or implied; without even the implied warranty) S5 u7 j: x- W% T+ u7 e6 S
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the3 }1 B6 K0 l+ b# [
- * GNU General Public License for more details.. n' h3 V y6 u% s5 U( |
- */0 V& I0 o) s; T+ G
- + U# b2 |+ f! N0 T7 J
- #include <linux/module.h>
; ]% ]1 |- K5 Z5 G - #include <linux/init.h>
! {" q6 {2 F e, \; x3 K# s - #include <linux/errno.h>5 s1 i2 _8 p) O% I
- #include <linux/types.h>) F" k- T! |7 h) I3 Q) Q( n
- #include <linux/interrupt.h>
, |: A1 a9 R4 h( b3 t: I - #include <asm/io.h>
" a8 J6 T* O' u, E$ @$ @* k - #include <linux/moduleparam.h>
: J' k& c2 [7 Z: i - #include <linux/sysctl.h>
: e' u" X+ Y" W; I D - #include <linux/mm.h>% ^1 R4 A0 F$ H' P0 |+ ?1 f- Y* Y
- #include <linux/dma-mapping.h>
6 T" V. E2 O* D2 M' g/ x& J
3 P( n. S. x; ^/ H- #include <mach/memory.h>
+ s) w1 s0 g4 W) m" l - #include <mach/hardware.h>3 T9 Z& A- \ i( i l! j1 S
- #include <mach/irqs.h>% y, W" `+ Q( J& `* ?
- #include <asm/hardware/edma.h>
, f( p" |. @8 n0 f0 N+ g6 K2 { - 4 X6 r# p# z0 l$ Z/ N% V+ C
- #undef EDMA3_DEBUG. ^5 g+ A" `+ k( l
- /*#define EDMA3_DEBUG*/
u( {6 ~, z% P; _
+ d- `8 `8 S0 r8 w$ j9 \4 z- #ifdef EDMA3_DEBUG
( P1 O. z: S7 D" a+ ]3 h7 _1 d$ C1 l - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
% c4 m3 Y7 Z- M, l& B: O9 S* t - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( X6 d+ h+ n) J2 T, {; a
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 e% }! J* R& G% `
- #else
1 q: @" i0 b2 E; o( l7 K+ i - #define DMA_PRINTK( x... )
# z* t0 M; C2 k* a - #define DMA_FN_IN7 V" m; A0 G+ s& P# m$ J) d" c
- #define DMA_FN_OUT
! o6 ~, t% f; S; R" c6 v - #endif4 p5 O; D; \( t( V4 J' {
- 9 J+ d( c- e6 v' B% U( v4 N
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)9 E- Q. m; @+ ^% h( q
- #define STATIC_SHIFT 3
2 w% _; f8 q7 u3 s+ \5 v - #define TCINTEN_SHIFT 20- ^# |3 E9 b* y3 a
- #define ITCINTEN_SHIFT 21, h4 L( v, O0 f/ i" S6 }1 W7 |
- #define TCCHEN_SHIFT 223 j8 n) m+ ~0 K( e0 D+ w1 c3 o
- #define ITCCHEN_SHIFT 23
% O- v7 A$ P% M4 f9 O - . z, B0 ^0 _" p1 ]
- static volatile int irqraised1 = 0;4 z) x$ \- F" g, d( L. B
- static volatile int irqraised2 = 0;/ d7 J- ?6 z+ a8 ^ x. L
- # I1 T* x- o$ b, I+ s
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
! [+ N( ]7 K q - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue); f% b4 c8 O6 I! u+ j; b7 D
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ I; d5 A1 N& J' j, t
/ q3 n4 _6 {7 X! t% Q: L- dma_addr_t dmaphyssrc1 = 0;
/ A) k/ H9 b( \; n" X - dma_addr_t dmaphyssrc2 = 0;& C" N7 _& ^/ c. V
- dma_addr_t dmaphysdest1 = 0;
?8 c# T- C5 x7 O - dma_addr_t dmaphysdest2 = 0;' M" i( w0 i( c6 X) Q* E+ x! s W
- 2 k9 W S- Q9 m! O
- char *dmabufsrc1 = NULL;; C9 l' g j% P! _; A# M+ [
- char *dmabufsrc2 = NULL; N, t9 K3 E3 W- L( i
- char *dmabufdest1 = NULL;
" ~, s" A. s. P' u - char *dmabufdest2 = NULL;
. z W) j& u2 j+ j - % U/ W' Q5 ~6 C4 h8 a
- static int acnt = 512;3 ]* B7 I E9 N3 G+ [/ Q& v
- static int bcnt = 8;
: S! B; V: A5 K - static int ccnt = 8;: _, b! V! b& Q" \
+ u/ Z% L; E' N' w- module_param(acnt, int, S_IRUGO);
9 B8 T4 t( I& Q( e# e. N3 a - module_param(bcnt, int, S_IRUGO);
7 b9 v. `* i4 p# B% m1 O4 f) S - module_param(ccnt, int, S_IRUGO);
复制代码
* [ M0 B) S; _8 J9 W5 |
3 _8 b+ B2 ^: Z$ m 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用% n8 m! Y$ K: a
arm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' z( ^; B; K. _0 H
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. Y9 N, P) w0 \6 F, u# A6 N: v
3 C' `4 m9 S" q$ d) E |
|