|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 7 i1 q d, f( R! Z" h8 M
- [code]EDMA sample test application0 w. ^. q9 C. U9 H( x0 D; @
- /*
6 s, Y( t$ I" ^3 i5 K8 [5 c - * edma_test.c( A7 X# V3 P8 R; P+ d& e9 ?
- *
1 |0 {3 }/ a' n0 ], u/ P - * brief EDMA3 Test Application
& \) f' L- u- E - *% s3 v! s$ y6 Z6 _" E5 Q" d! f
- * This file contains EDMA3 Test code.
+ j g9 a4 K) l1 ] - *1 h$ }, V# {. r& P
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE* i' Q1 t8 X% V" t
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT5 {! G& T8 _ B2 o! ?* J) y( Y
- * TO CHANGE.
; e* `' y& b5 j& w( F - *, |! d: W2 K8 H7 E6 n+ h3 s2 S
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/3 p9 A% }5 Q( d) B5 p8 j
- *2 `5 _4 `/ g; c% s) g. q! Z
- * This program is free software; you can redistribute it and/or
7 O4 H; s: i& K4 m; E0 q2 A - * modify it under the terms of the GNU General Public License as
0 ]; h8 m# J4 b( q% H% v - * published by the Free Software Foundation version 2.& v- F% Y- s3 ]! |2 }2 B/ L$ T
- *
& Q" j$ j1 z1 b$ b9 _( B0 v - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
2 O& K- o! J! {# o; ]2 Q8 H6 J - * kind, whether express or implied; without even the implied warranty
) }' `: B4 S3 ~7 U- T4 I$ V - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the! e5 r4 m: y ^* T7 C2 G
- * GNU General Public License for more details.
: v" J8 b" q1 r6 J3 C - */
5 `$ z& N6 e6 B, O$ A1 m
+ l4 o% ]/ J {+ C- {- #include <linux/module.h>; Q( \8 d3 x' f( X8 C/ S
- #include <linux/init.h>. I. N; b3 \: {) R" y
- #include <linux/errno.h>" Z* \. R9 m, U' N; z! u
- #include <linux/types.h># W3 b( ]+ [" D2 D# o
- #include <linux/interrupt.h>
8 G E! _9 s- b - #include <asm/io.h> @# o4 }; U2 k0 v* h2 M7 |# p
- #include <linux/moduleparam.h>
( K' s6 d0 B; Q" V+ i; L - #include <linux/sysctl.h>5 }8 R! G) r6 u3 ^% p7 n$ ~
- #include <linux/mm.h>- _0 S% U4 n* I
- #include <linux/dma-mapping.h>% Z; W- ~" ^' [( g: I s& I9 ^
" d4 I7 N# X0 f& @# t' g+ \- #include <mach/memory.h>0 F; L. N: w5 w1 g1 ]0 e
- #include <mach/hardware.h>
! ?# h2 X8 C* s5 ]6 ^+ J9 b/ F - #include <mach/irqs.h>3 Q1 n- C( {/ O$ b3 f% H
- #include <asm/hardware/edma.h>2 }& M/ i2 h* g! }3 N" |4 q
- : D) W: }+ g- v% J' ?- U8 G
- #undef EDMA3_DEBUG9 \5 L4 ~: ~; @8 a3 a! ?
- /*#define EDMA3_DEBUG*/
- \* [$ N* D1 W
2 P4 N; C6 W7 X# `; M9 I! x- #ifdef EDMA3_DEBUG. L; T. {' i( H( Q
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
) y2 x- J# c, f - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
: b3 w/ X$ H7 z1 [3 J - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)% c9 _ h9 n6 W& z8 H6 h/ t
- #else; n! f* b4 p4 ^& J$ K5 ]4 l% d& `9 b! g2 O
- #define DMA_PRINTK( x... )8 `- ^) @9 u9 _$ \: E
- #define DMA_FN_IN
+ l& M1 ?: I1 b - #define DMA_FN_OUT
+ K4 [4 P- z: _; _* c; r - #endif) N# h0 l3 ^0 z, P& Y* V5 c& }0 d( b
- 4 \: o6 }& B: Q
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
) g5 O0 v5 ?& I5 k- Y9 P - #define STATIC_SHIFT 3
" q# _( c. G, N% t - #define TCINTEN_SHIFT 209 z& a% u4 g3 E" y: t5 B' N
- #define ITCINTEN_SHIFT 21
) s+ l1 D- Y6 N" _, n. R - #define TCCHEN_SHIFT 228 x* ]# v: i# O8 v' e
- #define ITCCHEN_SHIFT 23: I% b g" s. Q, J' m# Q" z5 S, d9 z
- % D; [4 K$ B$ |& {4 h6 K: F3 c
- static volatile int irqraised1 = 0;" V. i0 ]3 f8 D, l( O# r4 _
- static volatile int irqraised2 = 0;
4 o/ O5 D0 q* g0 f; X) R+ n, r2 y( n - r8 J3 `5 V' l
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
" x& u) {! W4 [ - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
3 s6 m7 v- Z3 \+ V$ h6 P/ m" L* b5 ^ - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 ~5 p' [/ A4 {1 b* s9 l
+ _' w, C/ b; ^. h- dma_addr_t dmaphyssrc1 = 0;& g* v, Q* M/ O( y T% h
- dma_addr_t dmaphyssrc2 = 0;. F# s* P* ?7 l7 I3 l
- dma_addr_t dmaphysdest1 = 0;
" b% i3 u$ S, z. `7 R+ _ - dma_addr_t dmaphysdest2 = 0;
4 ?+ F5 _2 F# ?) }& N& W6 f - 1 y" _8 M' q( ]& y& x4 C1 O* {
- char *dmabufsrc1 = NULL;
- |' A! v9 l# f } - char *dmabufsrc2 = NULL;* I. }. n+ s; t5 J' A' T
- char *dmabufdest1 = NULL;" y! p( [$ X1 D0 t2 H! V
- char *dmabufdest2 = NULL;
% z' c7 K7 ]5 p' k( w8 [
3 s+ S/ n8 ?) e' L- Q* `- static int acnt = 512;$ I( u6 D7 i$ X4 i. I% Y
- static int bcnt = 8;( i4 @! j% k. E3 u6 v l
- static int ccnt = 8;& i/ w2 F) A+ H- F) y
- 9 ~* m8 E" p% e- b
- module_param(acnt, int, S_IRUGO);
& N" m7 \+ R- I; u4 x+ ] - module_param(bcnt, int, S_IRUGO);
1 l& a) `$ F1 R- g7 w( {" Q% h - module_param(ccnt, int, S_IRUGO);
复制代码
0 O, t3 C6 y4 F, B
7 V' U! G; @# n# Z1 a$ H 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用4 l, X! m: j9 I
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。0 j7 m8 p4 t4 J/ G4 I2 Q9 D F, Y3 y
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。4 V- @) S& ~. |
( B/ m ]7 G: W6 d8 `: S- J% H1 t0 Y" r$ t) u& ~
|
|