|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
$ x! e/ k h' o( X% Y$ _% W- s- [code]EDMA sample test application( o. r4 A) y! _" ~( ?+ _, D! E% F
- /*8 @) c. |' O M- t3 L
- * edma_test.c6 H+ U; v' L/ k) l, m# _' u. h
- *
, J' e; o+ Y2 E# c* j - * brief EDMA3 Test Application5 h, u7 M1 k8 }. r' u- M
- *
' C1 |# V8 c2 m( X2 W# }* G7 o - * This file contains EDMA3 Test code.& O* s+ B+ n' |: h+ V
- *8 W( f$ C* C- L! I
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE* o6 v2 n3 j+ d& `$ o
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
6 f2 l0 p# {0 n# W - * TO CHANGE.
0 N$ V1 x+ n' K( J6 k1 L. R9 {, P - */ f5 r5 U9 ^0 R8 U5 [8 f+ ?' {( ^
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
/ Y' f1 S2 F0 c3 ]9 q0 k, e) y" T' [. r - *
1 H; f) q/ o6 y- Y - * This program is free software; you can redistribute it and/or6 f6 {! {" N. J
- * modify it under the terms of the GNU General Public License as
9 H0 g' ~% _! w8 {5 }9 z! F" t - * published by the Free Software Foundation version 2.! q1 l5 s8 \3 g5 ~' I' @
- *0 A* s- G6 h) H6 B' J$ o3 E5 L# j
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
+ p, |& c6 ]' E: O. c. F - * kind, whether express or implied; without even the implied warranty! V9 H" _! D' d6 N7 F7 o
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the7 V$ T# b$ N! t) p$ X
- * GNU General Public License for more details. k8 Q S% s! x3 X
- */) ]( _ _6 T ?6 p# m
- t9 X4 y5 m4 ]- #include <linux/module.h>
4 P- D v6 ^/ U* z7 g - #include <linux/init.h>
4 o4 `; s: @" j6 t( T6 |" ?8 P. ^ - #include <linux/errno.h>! R. a( s% A1 y _7 e. c
- #include <linux/types.h>
" \; V$ I+ [/ F& P, F1 \0 Q; [9 N, i - #include <linux/interrupt.h>5 X x% K- x# w( l! P# d# R" m$ B
- #include <asm/io.h>+ |: o9 M' k! G. x$ P9 E% ^
- #include <linux/moduleparam.h>
0 z; F3 }' e2 ^% P! N- s k" j( O - #include <linux/sysctl.h>
5 y: p3 J1 p. t; L - #include <linux/mm.h>
( x; ]8 Q. s& o - #include <linux/dma-mapping.h>3 f% h* e9 l& h5 V
* P5 c0 K: m7 G0 O* X- #include <mach/memory.h>
; N2 y, s4 T! F0 z3 }2 b/ s7 ]' j - #include <mach/hardware.h>2 S1 _ |5 F z8 K6 f
- #include <mach/irqs.h>
4 E5 J, ?3 G& c* ?4 v2 F& e - #include <asm/hardware/edma.h>
5 b) I* g! x& k; S6 g) R - |. X- U; P# f1 v2 z2 z% R8 z
- #undef EDMA3_DEBUG5 O" a" T- u$ T3 h, }
- /*#define EDMA3_DEBUG*/
$ @( o5 k. P/ T# L2 Y) \
7 f7 }5 }- D# Q6 p* K) i2 ^+ b/ R- #ifdef EDMA3_DEBUG
+ _) v g0 u; \4 e4 u - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)1 A: D& L! r! p l
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
4 ~$ v3 e' U2 G$ q3 L! _' P - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)' I" n& k1 B, p
- #else
5 T8 t, z, @; S6 | - #define DMA_PRINTK( x... )
: _% c1 N8 @8 c( a5 Q' G7 ? - #define DMA_FN_IN) V: @6 Y# ?9 B$ Q3 T" ?: T
- #define DMA_FN_OUT
: B+ s, x9 V3 M3 S- l7 \ - #endif
5 R8 H% B! b- V0 e
' c6 K6 _2 Q3 ^! @- #define MAX_DMA_TRANSFER_IN_BYTES (32768)( C0 U; z: G+ }! P
- #define STATIC_SHIFT 3
/ \) I3 M# p3 D: \9 z" Z5 I - #define TCINTEN_SHIFT 20% _8 m' X+ r' C6 {: f! x
- #define ITCINTEN_SHIFT 21
9 {* r- R; J& w& P7 U - #define TCCHEN_SHIFT 22
5 W# m5 O# b L$ F+ w- u3 e- l: c - #define ITCCHEN_SHIFT 23
; D N& {9 j/ e
& H- @9 ^! \& \& N- static volatile int irqraised1 = 0;0 q8 D/ o+ @4 E7 S
- static volatile int irqraised2 = 0;
6 {/ i1 @3 e$ d' r+ F' M0 B. J - Y5 g0 ]. M& M# |
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
- G" O8 }. M) ~1 E - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
U& x! T7 d, ~$ M7 L- M - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ A2 I8 z' r, k
- : w" w) d6 `9 r7 M7 P
- dma_addr_t dmaphyssrc1 = 0;
2 Z9 N# s" \6 r x8 a6 D) R - dma_addr_t dmaphyssrc2 = 0;7 C* R2 u( M% q( M2 N
- dma_addr_t dmaphysdest1 = 0;, Y7 m, [ M/ C0 L! B
- dma_addr_t dmaphysdest2 = 0;" c' B) n5 l1 u" ?
' Z# m1 S, t) P# F- char *dmabufsrc1 = NULL;
7 I' V+ g6 q/ Z - char *dmabufsrc2 = NULL;
$ r, c- [0 f! g2 q - char *dmabufdest1 = NULL;
1 g i. V: l* T( G+ i - char *dmabufdest2 = NULL;
0 O I; k p2 o; y
. F* N% J! Z4 Q, Z- Y$ g! d6 S- static int acnt = 512;( {4 i! B8 u4 W- c0 ~+ q
- static int bcnt = 8;
1 m* J/ F) e; Q/ x; g - static int ccnt = 8;/ G l0 o! Z+ C
- ( ^$ n/ v3 @& z! \3 h
- module_param(acnt, int, S_IRUGO);
5 b, u5 ?# i9 y% S7 M - module_param(bcnt, int, S_IRUGO);3 e0 D0 b, v+ W) N2 E( n3 m
- module_param(ccnt, int, S_IRUGO);
复制代码
7 U1 \. T5 F3 h
, a- _1 I* ~) Y: N2 t 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用7 e2 g! I) Y2 X2 m
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。, }- S1 k; z& U! b
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。8 o5 S8 K: o+ b5 w9 V6 H; I+ X
( u7 I. `; f* l1 Y( h# z& E2 A+ H" x* F% |2 z
|
|