|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ( g: w# v& A |/ g
- [code]EDMA sample test application4 D6 l$ @9 i) _( D! z
- /*( l; B1 c# D1 }* F) _* S
- * edma_test.c* S( u0 Y) m, s) o: R
- *
; h* m( p- }% m M Y% r - * brief EDMA3 Test Application
9 r6 A( t: q7 v) C& I0 W - *: ?2 v2 J7 b% l3 A; n& W. t! M
- * This file contains EDMA3 Test code.5 p, ?: }/ P- c! }+ W* P8 U
- *
" Y6 F1 n% F6 | - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 A4 _, B n2 Z( b+ ?+ V: `
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT9 X$ `9 `# ?( _ n" Z/ U: M. {
- * TO CHANGE.
5 I3 Q& t! {( x) ~& h - *
b& P6 D$ V# j: ^( R - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
; F; L5 T4 p& r' ?. C - *
0 Y# r _4 [+ t3 X' M Q - * This program is free software; you can redistribute it and/or
% @6 ?1 k$ N8 u, N - * modify it under the terms of the GNU General Public License as
4 ]* m" S1 p& ?5 ^ - * published by the Free Software Foundation version 2.3 j: R0 `" p7 t: y8 E* K% B
- *
/ \. K. I4 p- C: V9 X - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
: |0 ]1 w& \2 j4 z2 R- ~ - * kind, whether express or implied; without even the implied warranty
) M# k0 t C% _9 H, o9 U' ` _ - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the+ J) N; J' |4 L8 S Q0 [4 |( g
- * GNU General Public License for more details.
/ W1 w& a3 E6 G. |4 p0 o" K - */1 N, b+ q& V$ r# w, M
+ Y \2 u7 |8 _: n G2 Y9 L- #include <linux/module.h>9 R3 [# `0 \" l f
- #include <linux/init.h>: ~: c) P: V' Z- S4 K
- #include <linux/errno.h>
0 g6 C. }8 s4 R' c K2 D - #include <linux/types.h>( x: L1 f# b" ~# q. v
- #include <linux/interrupt.h>
8 C) x% O& F- r- q& i0 \ - #include <asm/io.h>! f9 _5 w8 w% }% ]. N4 I5 u3 `
- #include <linux/moduleparam.h>1 g# O; V7 ~' B5 F K2 x- N8 P
- #include <linux/sysctl.h>
7 }, E z, u' K6 ~( Q6 y - #include <linux/mm.h>3 p$ D% ?' K7 I5 c' T# p
- #include <linux/dma-mapping.h>3 K7 r5 Q5 z( g& i" Q$ a+ H" w
- 9 T2 r) @7 |& e/ Y; H, j3 G
- #include <mach/memory.h>7 {* C" E+ ~# G9 K: J; ?) R7 n
- #include <mach/hardware.h>' b+ F7 X& S: b0 m/ s9 o
- #include <mach/irqs.h>
5 o p0 k% o- j! O) R; i - #include <asm/hardware/edma.h>/ D! O$ y2 ?3 h" j. H
- ' L6 X: r9 b z
- #undef EDMA3_DEBUG5 W1 q' n# `( I
- /*#define EDMA3_DEBUG*/: F5 _2 v( v' i% V0 M
9 J8 c+ N) F+ s7 N' V4 c! U- #ifdef EDMA3_DEBUG! D" ~1 |* R' E5 o" ^: r3 x
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
1 M8 v4 X! A' w1 E' F% w' [ - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__); G$ t( Q/ [$ S7 ~8 C
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
! M ~6 [/ O# V% ?6 o" \ - #else
7 l3 d2 L0 |, ` R6 @ - #define DMA_PRINTK( x... )9 H6 R' S$ [6 @) h3 k, f
- #define DMA_FN_IN$ V: d% S4 w* W, f% G9 N- }
- #define DMA_FN_OUT
# R7 L3 @2 Q% ?2 B - #endif/ V' h( }; P* ^* \1 W* y _+ C* i
. d1 G% i% ^; Y" B- #define MAX_DMA_TRANSFER_IN_BYTES (32768)0 i5 f, s: r/ J; I* f) y
- #define STATIC_SHIFT 3" E1 ^: F9 d- C9 r
- #define TCINTEN_SHIFT 20* K& U( g0 h8 P" S
- #define ITCINTEN_SHIFT 219 _" N) c: [ R/ C" D2 u
- #define TCCHEN_SHIFT 225 f6 ]7 r0 J, G* v$ x+ ]4 _3 p S
- #define ITCCHEN_SHIFT 238 e/ @' @/ D0 H: i+ d: n: c
7 R# _. \8 S" [- F: g% n0 i- static volatile int irqraised1 = 0;9 q/ o4 j# `$ |7 |5 B0 U
- static volatile int irqraised2 = 0;
$ {: C: u P( r, ^ - 1 @, s2 B' p5 \& P3 P& O
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
! o2 R6 i( }1 N, t7 z - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
% [: z* l$ K5 ?2 L5 A* Z, P - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) {, D5 B+ c( E' A. V! m8 s) R
- + L, |# I/ i% Y2 [
- dma_addr_t dmaphyssrc1 = 0;
3 H4 [: S1 n: [4 ]& N - dma_addr_t dmaphyssrc2 = 0;
4 {7 j S5 t9 z1 P - dma_addr_t dmaphysdest1 = 0;4 ^7 t4 N, v- s* A
- dma_addr_t dmaphysdest2 = 0; z) u, g Q( ?7 \3 z% l- A
8 T; X `8 N# v& D" s- O- _9 n- char *dmabufsrc1 = NULL;
5 E4 j1 I+ {" [% _* l; O0 V& w( d - char *dmabufsrc2 = NULL;
# g5 R7 v& t- Y7 s - char *dmabufdest1 = NULL;
) p. u5 s7 u- I - char *dmabufdest2 = NULL;0 [% p# o) f- O- ]) O
$ V" k7 w$ q* q, W/ f# i- static int acnt = 512;
/ X2 ?' e, k( P( o1 y - static int bcnt = 8;
0 W& k* @9 K# |6 ^ - static int ccnt = 8; r; Q' x, l4 l8 B6 e
h( k1 R+ u' H4 D& Y1 V, Y; l- module_param(acnt, int, S_IRUGO);* k# X; _5 t I. F
- module_param(bcnt, int, S_IRUGO);) y7 E0 p3 Q" A
- module_param(ccnt, int, S_IRUGO);
复制代码 & ?- _: i0 x% a! B& ~
- T4 B" K* q7 v. j$ j 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用 X4 K, |% u9 Y. M8 C% C! q' A/ K
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& b4 Q6 N# Q1 s/ q6 M/ ^
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
) H! G3 `) U8 Q% t
! X+ T! T. p1 j9 R. U8 @# p" P+ o1 W/ C
|
|