|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. L, t7 J& D: F# c- [code]EDMA sample test application7 ]. {0 }! s1 c. Q- Z7 R
- /*
* a c) N7 H+ ?8 H3 L& M - * edma_test.c8 ]% e4 N, f9 {
- *; l; H1 _0 t$ ~6 D
- * brief EDMA3 Test Application) W5 |" D1 I' X, n1 |
- *
, }9 ~1 [ b# I0 V$ B( k6 A8 Y - * This file contains EDMA3 Test code.4 I) P; r; F/ R! D3 P B
- *7 b* {5 ~7 E& M% B) F
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
; q/ E; y# B. w9 U" j: `9 u! Z) z% p - * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
* `" \$ T! Q+ _: i0 z - * TO CHANGE.
! {) G9 U8 i2 m - * \8 L) G+ k% H: y
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
/ w4 [/ O l9 m& c/ k - *# i' {2 l( a& j( y, X! o0 e, {6 }# V) Y
- * This program is free software; you can redistribute it and/or1 L6 f ^6 I( @! i8 h" G) ]) C
- * modify it under the terms of the GNU General Public License as
5 C: M$ t- ~ b, L% Y* ] - * published by the Free Software Foundation version 2.
4 E- A u9 B" Q5 G/ c- O3 t) R. R - *. M8 u0 V: @ T; F
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 J* ~ E+ o2 ~# k' C8 y9 ]6 _0 U
- * kind, whether express or implied; without even the implied warranty
6 @$ {2 t6 @$ O f2 | E6 Y - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" \9 g( ~# ~; m2 Q8 Z - * GNU General Public License for more details.: e' ` J* [( s+ J8 A, P( L
- */
7 B: y4 ]6 E5 [ e* N
3 b) a* @' F1 F) H3 P- #include <linux/module.h>3 R1 f7 y% v( M+ W& @
- #include <linux/init.h>
2 _2 Y% L1 Z+ E. w - #include <linux/errno.h>% ^! ]( m+ ^5 x, K6 ?
- #include <linux/types.h>
+ V/ ~2 j# g: z) P7 D0 U - #include <linux/interrupt.h>
0 ?4 w9 H6 | Y, o/ z; I - #include <asm/io.h>8 Z1 p) l! o( }" N, B$ m
- #include <linux/moduleparam.h># I. ~3 q" C( o1 u2 ]# c6 X5 s
- #include <linux/sysctl.h>
* {# ?7 F6 q9 n5 J# ` - #include <linux/mm.h>
6 Y9 m/ `+ ^) q" c - #include <linux/dma-mapping.h>3 f0 n3 k! }: j, t/ C
8 `$ S6 ^- K5 Q- #include <mach/memory.h>$ { m9 d0 R, y7 H# A' l
- #include <mach/hardware.h>
W5 y, L' i- o" B8 C* O - #include <mach/irqs.h>4 s4 h& u7 J S! v! }
- #include <asm/hardware/edma.h>
* _7 E0 _1 U( R! s - ( F( _+ s4 i$ K" G, \
- #undef EDMA3_DEBUG/ B4 ?% G; { u, l: t r
- /*#define EDMA3_DEBUG*/
) L- _. z# e& U7 j2 r/ h - # F" I6 b5 o4 C- c$ o9 G
- #ifdef EDMA3_DEBUG% f9 I3 S/ N O
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
2 D1 L: P. f4 \1 H9 K# c2 B5 U - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# S1 R: `5 \! D# X ^
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)8 n6 a8 i1 @6 c& D3 S# d( H
- #else' L& i. P: j: o6 R1 j" r' [
- #define DMA_PRINTK( x... )
, t: \' g9 x4 _- Q5 z - #define DMA_FN_IN
1 j' v9 w, }5 ` - #define DMA_FN_OUT
) o: `8 s: u* J& O9 h0 M1 Q - #endif( m$ v5 ^: }7 k% U$ G
+ ?$ F- @0 o" Y: m$ E1 i- #define MAX_DMA_TRANSFER_IN_BYTES (32768)- {/ }9 E, C) v
- #define STATIC_SHIFT 31 Y3 s, a5 O) m* X; M) r: s$ d5 r
- #define TCINTEN_SHIFT 20" p3 M5 s! U! H& W, s0 H3 H
- #define ITCINTEN_SHIFT 21
" \4 I3 E' L+ t7 z. r - #define TCCHEN_SHIFT 22
, _. N) k! ~3 p% T" ^1 a; q - #define ITCCHEN_SHIFT 23
" }# f( j$ i( E: j' }; |+ k
! u- l( `1 P( J6 ^4 v& K8 o3 }" F- static volatile int irqraised1 = 0;0 W- t( g( w L( X6 h5 ?+ ~( {3 F0 i
- static volatile int irqraised2 = 0;
% `, o" r5 W1 J$ o g6 \ - ' ^& w5 |) n. K! i# h# U i W
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
: k$ g$ b$ E/ \/ N0 o, ? - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# _3 ?' K2 r- z7 W
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ D. w! [! t. J
0 k" y+ @: |# S; F! X- dma_addr_t dmaphyssrc1 = 0;$ p' O; {4 P8 Z& M5 n, T# |
- dma_addr_t dmaphyssrc2 = 0;
9 ^& O2 S0 u: U - dma_addr_t dmaphysdest1 = 0;% |* e* X! I0 R2 t7 H% G
- dma_addr_t dmaphysdest2 = 0;. T; V( F- F4 L
) p& F# V6 c' F# s# D& E- char *dmabufsrc1 = NULL;
: ~- ~3 Y/ z; r9 v - char *dmabufsrc2 = NULL;
# W+ \' S& s6 }' } - char *dmabufdest1 = NULL;
3 b- s) v" ?) X$ S( L- ~ - char *dmabufdest2 = NULL;
7 A: I; @1 k1 K1 Q3 E
- {( l2 r1 B( f/ X# n# j) I- static int acnt = 512;
: ^* N0 V: L# k0 G4 L6 s - static int bcnt = 8;
! B3 D, s( e( ^ - static int ccnt = 8;. w7 A; k G9 e x+ o
- $ M$ N1 E& r) F I& k& e
- module_param(acnt, int, S_IRUGO);
% z5 _$ @/ u! {9 \ - module_param(bcnt, int, S_IRUGO);/ G7 c; K4 ]8 E
- module_param(ccnt, int, S_IRUGO);
复制代码
' [# M2 [. ~6 i6 W) V4 Q$ K5 U+ m
/ ]$ [4 c2 O ^. F 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 s" P5 z0 \; ^6 ]( r" garm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' Y4 d) n( I- N# k1 F+ Q
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% j3 A& p, p! n( x
i$ d! O% m( B6 ]' D/ [/ |+ r! q2 s( b) s, Z" T# W! [
|
|