|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ l* y2 _4 Z/ n2 W2 \4 P6 b7 B+ [
- [code]EDMA sample test application+ G8 m1 @1 E; q+ G2 r0 j( w) l
- /*! _( x" {3 {9 n$ {$ ^
- * edma_test.c
+ d7 J/ V% \$ R1 @ - *. `2 G! z9 Y# J+ o: E: j6 Z" v
- * brief EDMA3 Test Application
+ q* W4 x0 J1 T( } - *
- S8 ^3 f. h7 c) L - * This file contains EDMA3 Test code.0 _' w1 E( T$ ^: s$ x( j- I# [; S
- *
) i+ p/ g& j2 J- m1 z- b8 l - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
- @" h3 `+ D9 I+ F' B9 ` - * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
, q' I) [. G; [7 B; t( b5 o; z- i - * TO CHANGE.
$ F7 Q4 t# O# v2 l - *- o" p. m: c$ @0 q4 Q; A
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
+ ~9 o/ H, Y: Y - *; m+ |& x. N. V+ I
- * This program is free software; you can redistribute it and/or, q/ w4 |/ U4 N' J8 W
- * modify it under the terms of the GNU General Public License as
" \) Q# U' a) _% i3 K( |3 ^ - * published by the Free Software Foundation version 2.
) A7 N$ b% F9 t- d# L - *3 B0 d* f# {2 D& Y# h) \: }+ ]- d& t
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any! S' Q" E2 I. [/ T
- * kind, whether express or implied; without even the implied warranty, }5 S5 i' k$ Q" z$ D
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
3 c- t3 O0 w2 m( N+ C - * GNU General Public License for more details.
3 t6 e( n i( l - */( ~2 t& L) [8 X9 B' ~! h0 Q" o
' P; {, K7 q; X2 x3 O- #include <linux/module.h>
; o, V0 M! I, s" i ] - #include <linux/init.h>
+ W7 T, o" ^% u8 J9 | - #include <linux/errno.h>& I+ q- d! U/ \+ t" H- H& a' }
- #include <linux/types.h>
7 z, R& H+ k8 a5 @" g5 G - #include <linux/interrupt.h>! y5 d& A4 y. [" E
- #include <asm/io.h>! P- I( B R* D, U- X( |
- #include <linux/moduleparam.h>- O! [- }$ M8 P
- #include <linux/sysctl.h>1 U; T/ B6 b! ?( I. a* `$ y
- #include <linux/mm.h>
8 T2 }, J: ]6 ]) w - #include <linux/dma-mapping.h>
y8 F# e0 ?( G1 r+ E* w; ?! s, _1 C; ^ - 6 Q/ ?3 s- x+ l& Q, v$ f* d1 r
- #include <mach/memory.h> {& W# K b; Q; K* }/ `- S$ k
- #include <mach/hardware.h>
9 }( d G5 S3 V& P - #include <mach/irqs.h>9 w+ f4 x9 L8 p! e, `
- #include <asm/hardware/edma.h>1 P. c7 A1 q6 b
- 8 ?% a# {5 K" d! \+ u) F, E
- #undef EDMA3_DEBUG( }% U! }8 K( u) C9 Y& c
- /*#define EDMA3_DEBUG*/& k/ J! ^0 U2 z
- " n3 {4 M2 n6 z- g3 ?
- #ifdef EDMA3_DEBUG
) k& ?, F4 P: t - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! z! @$ M* v2 K" ]
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
! n. E R. d9 f - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
. s4 ^6 x5 v J! z6 Y5 _ - #else
' n- P8 ?6 A9 b5 t. A' k0 K' h) ?; @ - #define DMA_PRINTK( x... )
! G/ A; y( Y* G4 w - #define DMA_FN_IN# i. d3 i7 \2 [- v* x; l0 X
- #define DMA_FN_OUT
b+ D% i% q( t' G - #endif$ E3 n& ^+ H3 A- G6 ~
8 n* x4 w$ Y& z# _$ M- #define MAX_DMA_TRANSFER_IN_BYTES (32768)# F1 {* ?6 M" C7 j
- #define STATIC_SHIFT 3
4 W( z4 {6 s0 R& Y6 g) Y' ? - #define TCINTEN_SHIFT 206 F5 d7 E- `% s+ L# L
- #define ITCINTEN_SHIFT 21
& \; X% z# Y/ Q' C - #define TCCHEN_SHIFT 225 y( X0 ]- T3 V1 ]) x
- #define ITCCHEN_SHIFT 23
% |( U3 U- [7 Z7 j! ^ - ( N& w/ _ r9 c( j! R T, v+ m
- static volatile int irqraised1 = 0;
! A& N4 u0 `7 ?1 p - static volatile int irqraised2 = 0;% u S6 h/ f: c: }$ i* Y2 [: h
4 u0 d }- I7 m+ l/ Y- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
; |" K' @, ], S - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 I% s. P! a6 Y% J8 e$ G/ |* B
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);" D9 j) I' E8 E8 T2 i7 S. t
9 w5 Z6 A5 V6 E; I! {! A- dma_addr_t dmaphyssrc1 = 0;2 Q' _* }$ n. ~5 T9 C4 y
- dma_addr_t dmaphyssrc2 = 0;
) z9 ?, L# ?- K3 | R* O - dma_addr_t dmaphysdest1 = 0; C/ j7 ]3 e9 K
- dma_addr_t dmaphysdest2 = 0;
- C8 w- j( c& Q8 M0 d6 B - 5 J% U( D: ~7 }" Z* y6 v& C
- char *dmabufsrc1 = NULL; f* x( p' b2 d
- char *dmabufsrc2 = NULL;
h# c& A* I2 p* X - char *dmabufdest1 = NULL;
: y% |: n8 [8 ?! J. ] - char *dmabufdest2 = NULL;
/ e! t9 t' {& G/ T2 K( @ f6 K( M7 m
% @/ M x2 I9 J3 `0 c- static int acnt = 512;) i1 j# j% g6 ]$ q/ j; W$ O5 u# x
- static int bcnt = 8;/ Q5 m$ A, _% N' W4 ]
- static int ccnt = 8;
! j9 @4 U; r2 C5 C0 x. t3 [) @2 y - & x! ?+ \; j, n4 t2 f& S5 r( {& }
- module_param(acnt, int, S_IRUGO);
* } o6 q) o. _6 x' H V - module_param(bcnt, int, S_IRUGO);
3 I' m4 G$ t1 O/ v3 q3 t: ^ - module_param(ccnt, int, S_IRUGO);
复制代码
( S9 u5 }6 K( R% D4 E/ r6 l7 v( s& T- x. j) ~- ?
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; } u& D" X( T. s0 Q, 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
9 Y- X: M9 S" N% w% a$ u 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 [9 I* ~- V2 ^8 ^, P' J- u2 n3 ]. ~4 Y; s" {% O! D* T
. s) v: E; p; M9 d2 v6 S1 ~
|
|