|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % Z4 @/ t: \: P+ {& M* z
- [code]EDMA sample test application
- F/ {: ~2 t# A$ K% D - /*3 ^2 s" `7 S6 S8 q. F
- * edma_test.c. a- Q( M5 v8 I( e0 Q& T
- *
0 i5 C |' M; _" u; `. q6 h - * brief EDMA3 Test Application" z6 o& O; _4 A/ Q/ o/ F
- *: F e# a' z, g& O6 K
- * This file contains EDMA3 Test code.
' c' A& F. C# o! y4 o+ G5 a' y& |7 l - ** C# o \# o& y' i
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
" E0 L( B3 e/ ]2 x) j7 ~ - * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT9 Z" S' N) \, @
- * TO CHANGE.
$ T+ |2 R' m# I# f- I' ~# C - *
0 k& x# J5 z6 I- W D, U4 `* Q - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
: i- ?2 y, n% F/ x) Z1 a# Q - *
1 C( B: W. d* c! ?1 n! W - * This program is free software; you can redistribute it and/or
3 q0 X! g# I; O: o7 R - * modify it under the terms of the GNU General Public License as
& U+ E; ]& Y0 S) U p - * published by the Free Software Foundation version 2.
9 F& C0 A( q3 p+ U5 `+ N' _ - *. L) h3 L; B$ H$ @
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
; X r9 d7 o' n2 e8 R - * kind, whether express or implied; without even the implied warranty2 u7 s/ h: J" s
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the' T) x; \, x# t" [! i
- * GNU General Public License for more details.$ N4 o& q% l8 ~+ a9 O: |
- */
3 E- n; B! k; w( w; _0 D8 J7 j
& _- a- a1 J$ u) s) v9 [- #include <linux/module.h>
* z9 z: P- W+ e- { - #include <linux/init.h>: k9 E ~1 V3 x/ p" P1 k6 o6 G
- #include <linux/errno.h>9 z/ p5 z1 B6 R* R' N) o5 p
- #include <linux/types.h>& ?- F; }0 ?( a
- #include <linux/interrupt.h>/ N+ m: q( @9 I6 v& g* _$ D3 Q
- #include <asm/io.h>7 _: @! J/ e- [% ~, H _4 f+ Y8 Q7 y
- #include <linux/moduleparam.h>
' H( H2 D$ ~0 ^" F5 y; ~, j - #include <linux/sysctl.h>
; b3 a( ~2 _$ `1 Y% ` - #include <linux/mm.h>
$ ?' c& q2 c6 u+ F8 f8 M - #include <linux/dma-mapping.h>
2 T: C, L- N3 g - ) }* F- L' O% s% a& _2 q
- #include <mach/memory.h>
" b Q# I! i6 ^( {, R - #include <mach/hardware.h>+ l4 O( q3 w5 ]/ g' e9 H7 L' `+ c; t
- #include <mach/irqs.h>2 ^8 g/ g# `% Q& Y2 z9 [ T7 N- m
- #include <asm/hardware/edma.h>
% X2 o7 J5 F5 p3 [4 N7 G
' ]0 r7 ^: a* C( O' I6 h4 P* \- #undef EDMA3_DEBUG3 r0 J7 W: C, A
- /*#define EDMA3_DEBUG*/4 |! L$ y3 ~' `0 E+ w; g) Y! e" A
- 9 e3 h3 b; x y) M! y
- #ifdef EDMA3_DEBUG) {; U% _+ L$ @: V( N0 w
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)3 n# I1 u; |% J! V7 C, a g |
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( g9 v4 |1 f( ~# v5 E
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)9 |& b0 |: T2 |# W: p
- #else
' z) X) M8 z* v0 C. C- s1 d: t/ B - #define DMA_PRINTK( x... )
" ~6 f3 @# F+ d" m( E: T F6 E - #define DMA_FN_IN
( n3 \0 _! v+ i6 z: ?/ z* l - #define DMA_FN_OUT
0 W' [& y. n$ P) k5 K% C - #endif
k7 X- t1 ?4 n# {1 C - * ~- l/ f2 ^ C9 H) o
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)" E. E' y7 @+ N T4 F. }
- #define STATIC_SHIFT 3
* v9 w3 B% u0 N1 w& _% _ - #define TCINTEN_SHIFT 20
0 p0 Q" k8 w' d - #define ITCINTEN_SHIFT 21
8 c; ?8 ~% Y: T - #define TCCHEN_SHIFT 22+ ?: w, ~1 k9 D2 i$ C, V) n
- #define ITCCHEN_SHIFT 23
, q! z7 F% r6 K+ l) q' q8 e4 K
0 D: K5 S0 ~( i7 }* \7 h- static volatile int irqraised1 = 0;
; C7 f# o' T# \4 ? - static volatile int irqraised2 = 0;8 w% ?8 A) l2 d( D3 M
- ' o* t& b% u! v: T; }
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
- @4 J% l- d4 h+ P - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
0 c$ L2 T) Q* B1 I - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) \' ?! K( M2 C3 s n
: g4 |2 x5 F: ~/ y7 i7 n- dma_addr_t dmaphyssrc1 = 0;6 y: Q9 @- b" l- n4 a
- dma_addr_t dmaphyssrc2 = 0;
( x" v' D$ r) c3 P+ I - dma_addr_t dmaphysdest1 = 0;3 s% O) G3 ~- _) @; p
- dma_addr_t dmaphysdest2 = 0;
. X+ Y! K% {6 @: W2 ~/ `7 h
+ E; |# A1 c5 P4 G9 [5 }; g8 Y- char *dmabufsrc1 = NULL;5 s+ |" m4 r2 h. Q0 z
- char *dmabufsrc2 = NULL;' }1 E0 x* U6 ~# c" R
- char *dmabufdest1 = NULL;
( w9 n; m T! Y- k- }; H - char *dmabufdest2 = NULL;
$ M3 z1 a: G9 S7 R3 w% _" F2 j
% B4 G2 z; V# G- static int acnt = 512;
. x* ~0 Z# O* `$ J# [ - static int bcnt = 8;% [+ v. K1 j* x
- static int ccnt = 8;
) \5 r# r( E: D. d
. R; h6 U( P+ I5 M* F, o6 f- module_param(acnt, int, S_IRUGO);" L3 ]' b# ]5 K( W( s
- module_param(bcnt, int, S_IRUGO);/ r$ h6 X, s2 l
- module_param(ccnt, int, S_IRUGO);
复制代码 ' s Z1 Z* A; M+ x2 G3 r9 k. {
: }: m. _1 c4 G* T/ W 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用' N) T8 D; |# i" R% L9 Q ~7 e; p6 v
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。* T" \7 m: _/ _5 S2 K7 M0 z
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
! `+ d; ]7 X& C& m0 q( N/ b! l3 ?! ^9 N6 Z
* h6 ~1 f' K) U6 k" J+ ^
|
|