|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
9 V- _9 P: p1 ]; B( m# K" g- [code]EDMA sample test application6 i# S" I( A- Y* c9 H6 d5 b+ l
- /*
% n9 ^4 P% m1 C7 E, s, j/ S - * edma_test.c. x* t9 o5 F3 N1 z: P: Q6 `/ H6 d# _
- *
( T5 T" [2 `% R m3 u - * brief EDMA3 Test Application1 n6 L' F& a" N3 |1 U1 u( g. p
- *
0 J2 [) O5 N& @) D4 V - * This file contains EDMA3 Test code.
- k' F8 C- q8 W* ~4 U6 Z - *
/ z J. ~1 ^4 B - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 j, W- T$ {; F! E
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT" b, g e7 S2 _1 o1 S- R
- * TO CHANGE./ Q$ X: U; q. U
- *
8 _& L( [$ W1 o- x" T - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
. E! j2 {" d9 F$ ?; c" g - *
: R3 S: |" E+ I - * This program is free software; you can redistribute it and/or
* c$ z5 S1 k2 g' h, s( ?9 W - * modify it under the terms of the GNU General Public License as" z5 r. F3 w9 M+ U& y! Y) z7 z
- * published by the Free Software Foundation version 2.
$ n2 ]0 [5 K0 m! K$ p - *
* S* E+ g& b B; _: k: _ - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
1 R; q8 V6 @# m, T, l - * kind, whether express or implied; without even the implied warranty
3 a. p& ^6 y) `: \& S - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
$ C! F3 }& K$ y1 Y& z - * GNU General Public License for more details.) j5 g* ?# R% w: O, Z! X; _
- */, R0 Z) W( ~, P: |3 C( g+ s ?
- 0 J3 W7 Y2 @' ~( w7 p
- #include <linux/module.h>
) H, I6 p5 W7 J. b) y - #include <linux/init.h>0 t P" Q9 m# n* x1 T* u3 Q. b
- #include <linux/errno.h>
+ v$ U- G, J9 ~, I6 y - #include <linux/types.h>9 x, `5 A: y' b' v# L! A
- #include <linux/interrupt.h>
# D% X$ k P3 H( N - #include <asm/io.h>
) L1 b: B! ]6 o; ]' A+ ^ - #include <linux/moduleparam.h>1 C% A4 W7 B/ e5 B! \" R! v& y
- #include <linux/sysctl.h> P, e- q1 P- m2 e
- #include <linux/mm.h>
# _; g: m7 E- I/ J - #include <linux/dma-mapping.h>
; X1 u3 I: x! @2 a7 ]) [
) p" K) P3 n& y! i# u- #include <mach/memory.h>
, B x1 M b; U- |2 E5 z - #include <mach/hardware.h>
2 ^+ i ?' K! G/ \; X/ {9 A: m - #include <mach/irqs.h>
& O, o- H3 M% r. S - #include <asm/hardware/edma.h>
" ]2 j( H N w/ }' Y2 g' S% r
: d4 _2 s# X X5 q I4 T- #undef EDMA3_DEBUG
1 _& i& l1 j. n4 [ - /*#define EDMA3_DEBUG*/( c; d& P' b& h- t1 t
- ' ^7 w, V- x' ^- f
- #ifdef EDMA3_DEBUG
7 w, ^' t1 x8 f0 x1 L- c, X7 e - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)9 |1 {, F# C3 R4 w) O# ]$ d
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)* f7 Q( G8 m0 Z5 T6 D
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
`) ]" R: N* `4 F1 I+ R, _" V - #else5 r, R# F/ f, [
- #define DMA_PRINTK( x... )) o; p. C2 [" i3 r
- #define DMA_FN_IN0 [( K2 b& O( e; E# j9 c
- #define DMA_FN_OUT% { `+ q* u/ j- P9 R
- #endif' {; X, @3 G( {5 F, [0 t f
0 i7 r) Q5 g* x7 T- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
. N' S9 M9 e4 N3 y - #define STATIC_SHIFT 31 ?+ Y% [, P$ V% l9 }5 ^
- #define TCINTEN_SHIFT 20
% ^) y; g7 k/ S( L) n& ~# {7 S - #define ITCINTEN_SHIFT 21. N. y* A4 d* r# L5 w+ ^+ `
- #define TCCHEN_SHIFT 223 k; ~2 q7 ]: e* Y9 P
- #define ITCCHEN_SHIFT 23# K# }: l) J" r+ C: S# W
- 3 z' M1 J% u) ^
- static volatile int irqraised1 = 0;
$ v. A$ e3 h+ X$ R0 F" W, l! v - static volatile int irqraised2 = 0; c s1 R. ~) R, \! ~7 ?
3 O9 z; W$ Q# f3 b- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ X |7 T/ H: D0 q5 P) ~: @
- int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: ?2 [9 Q' |& `: L4 D* X+ w/ m
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
" p; x* ]2 P4 u& ~+ ?8 t6 Q8 J
6 D N' n l, Q9 f- dma_addr_t dmaphyssrc1 = 0;" ?5 v" a! t4 {2 e8 t+ I
- dma_addr_t dmaphyssrc2 = 0;% ]- g* i: C7 K
- dma_addr_t dmaphysdest1 = 0;$ o5 I6 f0 o* d0 A6 e1 N
- dma_addr_t dmaphysdest2 = 0;
2 X: `; O1 h+ R - & a6 m" q) I( n, d1 g+ c
- char *dmabufsrc1 = NULL;* H3 D5 v1 Y: Y' q( Q) A( t, P) [
- char *dmabufsrc2 = NULL;
B5 g! K, p8 p) v5 H; c6 T - char *dmabufdest1 = NULL;
# {- I, Y: N+ O$ B4 H% h5 R9 K2 C) V - char *dmabufdest2 = NULL;
4 F( `9 Y. L4 x. t8 i6 Q& x; T
0 s. q$ ]' V! T2 F/ u6 Q' W- static int acnt = 512;1 e; H7 k9 A2 F
- static int bcnt = 8;9 i/ ^: W- G5 ~% q7 P
- static int ccnt = 8;: V% P) P+ M* G" D# ]$ _4 a
- $ N" C" A5 G4 |% R7 B# s& U
- module_param(acnt, int, S_IRUGO);
) u7 @1 m. A! ?, R5 M: T - module_param(bcnt, int, S_IRUGO);
0 k+ X) t6 j+ ?0 o2 k [ - module_param(ccnt, int, S_IRUGO);
复制代码 - B; {! R; e! k& q
! X' `* R5 _' p
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
( O* g9 }1 v; F& t! q* z9 larm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) i' C+ `, m4 G; N0 H) f3 X' ` 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 f+ `( w* i( u" V7 x& W9 `! E X8 u) J; ^
: J9 S# X0 }9 C9 X; o7 P7 ^
|
|