|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 9 i) B( v8 F, Q8 p
- [code]EDMA sample test application F/ K8 Q/ F: g) Z
- /*5 Q% @# W! @( n/ Z8 M g0 W
- * edma_test.c
- K7 n* R/ N6 N, F - *& P0 ]3 i. D" L s D. X ]' \
- * brief EDMA3 Test Application
5 P1 @+ m' m' [ - ** }' {8 J F6 z, @/ g
- * This file contains EDMA3 Test code.8 d, B6 e6 T0 T5 c" V! N
- *
6 c% K; g- [8 K9 m/ C - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE7 d3 q4 i6 G: d* r- m5 w
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
; B7 G: Q0 c! H% h! e7 T; r - * TO CHANGE.
+ x. T% R( \$ B- h/ @! z - *
4 r. g4 q% C' ?& ^ - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
$ G0 ~( o+ U0 T, y8 t+ Q% I1 J - *! U; v( X8 t# \ j0 `* |
- * This program is free software; you can redistribute it and/or
7 c7 B& D8 L0 ^4 T- y# p - * modify it under the terms of the GNU General Public License as
# E) q7 R D ~$ T' L+ ~ - * published by the Free Software Foundation version 2.' H; ^8 O2 t! l: ?
- *' e) f y( K0 ]9 {: z. I
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any! y. f$ H: e3 o, S R# E3 {4 o
- * kind, whether express or implied; without even the implied warranty/ e8 ^% @) V6 g5 W" s
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the! R/ ?" g4 r: ~- i2 v: [
- * GNU General Public License for more details.% v) ]' K6 H* d7 I- Q" |' `
- */( T0 m( m2 g+ t- ]
* G- g! I; f& `5 l9 W# Z% p- #include <linux/module.h>
# e4 |* n* V9 o/ w* i - #include <linux/init.h>; |, p1 Q3 N: z$ W1 |9 x
- #include <linux/errno.h>
/ T) @" \+ Z4 u4 I - #include <linux/types.h>
2 V. T- }: J: Z - #include <linux/interrupt.h>+ x& `. D! [" M/ s& E5 i
- #include <asm/io.h>
: Y8 S4 ~3 `* L% d - #include <linux/moduleparam.h>
: @% j0 y: ^4 Y9 L5 r. ? - #include <linux/sysctl.h>
2 b4 L7 Q1 b; M2 w6 b( N - #include <linux/mm.h>6 ~$ |7 k3 d# _/ S+ x6 G, C
- #include <linux/dma-mapping.h>
* p( L# b$ g3 g7 [$ v4 x - 5 g V: I$ l' u+ l1 c/ \
- #include <mach/memory.h>
6 O( X* k- R2 A - #include <mach/hardware.h>; X0 E$ r& p5 X) O- r) w+ n% j3 t h
- #include <mach/irqs.h>; r+ I6 |3 m/ N# K" d
- #include <asm/hardware/edma.h>
0 E! q! x; L: {. p) x3 K" f
- T$ L, J. J5 E6 B' z- #undef EDMA3_DEBUG
2 x! H9 z8 V2 H5 O6 A - /*#define EDMA3_DEBUG*/
2 M. L% x2 R9 [# u: U W
! `! \+ {5 B' B, z! }- #ifdef EDMA3_DEBUG
4 ?! C- i9 ~. ]6 Q { - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)3 v$ j; K$ s: {2 ^' P+ t* I
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
" T$ y9 \' d9 l u6 V. Z+ R3 t* M - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
1 w, x. V3 m* Y1 P- f3 m/ ^# ` - #else
$ n2 S1 e+ a1 \; v* }# A: L - #define DMA_PRINTK( x... )
/ q; A9 z& R' B5 f. w1 Q d - #define DMA_FN_IN
/ a, b" z1 k3 y - #define DMA_FN_OUT! f W/ G9 d4 B
- #endif
; l0 O3 c8 ~( M$ C3 m" j
! Y- A3 {4 ~& x, j+ Q$ x- [' C: g- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
2 p& i D3 F& M- A0 M' S L8 N6 w - #define STATIC_SHIFT 3
4 u5 w# S1 y0 I( g! u - #define TCINTEN_SHIFT 20
- y6 Y; n5 P6 z- ]* T- f2 \ - #define ITCINTEN_SHIFT 211 v3 E3 A% O$ r. L! g
- #define TCCHEN_SHIFT 226 G/ e+ A5 L6 e4 O0 |4 V6 S+ B
- #define ITCCHEN_SHIFT 23; p5 j8 `$ |) f; o; x5 e$ ~' F
- 2 k2 B/ j8 M# i5 M
- static volatile int irqraised1 = 0;2 S/ s1 G& P5 N% n* K& L: f' w
- static volatile int irqraised2 = 0;# N6 j/ C. m. U/ j* h- J- q/ M
- z. k$ r: W, i
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
( ]- u }' U' p+ o - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
& E5 z9 f p- K( m! ^ - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. o( h8 x' ?. c. V8 K
- ( ~$ f) R; H0 {% f. W* t
- dma_addr_t dmaphyssrc1 = 0; ] x) E* U9 b f# U$ i0 @3 E* o
- dma_addr_t dmaphyssrc2 = 0;
* K; ^9 X1 Q) ~/ q8 L7 |* o - dma_addr_t dmaphysdest1 = 0;5 h M' U1 O5 k% R
- dma_addr_t dmaphysdest2 = 0;- Z5 \ {0 W6 @0 o+ Q
- 6 z- p6 l* t* K
- char *dmabufsrc1 = NULL;
' N1 _/ \' s( Q& S: r - char *dmabufsrc2 = NULL;7 d# d8 l3 y& [5 e5 p
- char *dmabufdest1 = NULL;9 \' o. U7 Q" W Z4 h! x+ r0 e" O
- char *dmabufdest2 = NULL;
' }. s0 u% A l
~* T, z2 G8 G8 `- static int acnt = 512;" [3 ]3 I* t0 O2 A+ l4 w
- static int bcnt = 8;# s& {, E7 S( I7 C
- static int ccnt = 8;
7 u2 F% K! [( r/ l' Q. z% V6 K
- R. W9 ?% p- H* }5 j- module_param(acnt, int, S_IRUGO);
, \% }! v: x2 W! w - module_param(bcnt, int, S_IRUGO);5 e v: P {* P
- module_param(ccnt, int, S_IRUGO);
复制代码
( ]' E5 w7 ^0 p- F' O% V1 ^; O7 s8 h6 v
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 Z8 w7 o8 V* ]! X: [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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) [/ R/ @ R2 J- Z8 m9 E0 r5 C$ t } 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; x N- b! V8 Y$ V
/ j* z) y# X2 [: c }+ Q
1 I: G. x4 P8 O# _5 _3 \2 j. Z# v
|
|