|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ; b/ |& p, r5 o: O8 Z) ? L7 T0 q$ j, \
- [code]EDMA sample test application: F3 h1 }* {; @7 C1 r' |; s
- /*
% p' L9 ~+ |6 T6 p - * edma_test.c
7 ]& w4 q5 _' {7 E) ?) y - *
q! P$ U& i7 L! p* J" l - * brief EDMA3 Test Application" r1 P# x# O N! W/ \
- *
1 ]; ^& m' M6 S& `: [7 W/ M - * This file contains EDMA3 Test code.
6 M! e; R. T" p2 C2 d9 N - *
2 q3 F+ F- S: q- N: O5 y - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE/ g% H j1 T1 J/ s# ]- e! ^" `
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
' ~* q2 J( q' z, N - * TO CHANGE.
# @9 o0 P$ _2 Q( {5 m/ ` - * @, Y# b1 R Z) |* Z9 A; [) P& }
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
' f4 H2 P3 O! U$ c z- t7 V - *
. s5 J; o. r$ ^9 o3 s( h. ^% U - * This program is free software; you can redistribute it and/or
( a/ I. E& i1 u" \! x9 Z: r - * modify it under the terms of the GNU General Public License as$ ~* q- G" t" Q2 V" q
- * published by the Free Software Foundation version 2.1 x' D3 q' r9 z
- *
, h% B% _ {8 G; j5 \6 H: [ - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
" t: {4 d: U9 ^1 }6 E - * kind, whether express or implied; without even the implied warranty
" @" a k5 Z5 R - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
$ r" H( {' u4 f7 @) T7 n7 i" [ - * GNU General Public License for more details.+ Z; d0 i! c$ q3 S% C' U
- */4 B) Q4 n g' I- V
- * W4 ^* U/ s* Z1 A
- #include <linux/module.h>
8 [. \9 r4 B! ^ - #include <linux/init.h>( L" b0 l8 i t! q) q- r
- #include <linux/errno.h>
0 q2 h k, v" j. M - #include <linux/types.h>: c6 b$ v& v. b1 Q( d
- #include <linux/interrupt.h>
+ g/ s/ I7 [7 B" z2 ^ - #include <asm/io.h>6 }7 }% \- Z: y. |2 K+ @# I; c) p
- #include <linux/moduleparam.h>
/ P6 V* B% N1 F; e o6 ` - #include <linux/sysctl.h>( _+ X9 n( L1 i$ }$ H+ `' _6 x5 D
- #include <linux/mm.h>
0 @3 J1 z) h+ W5 Z. V7 c - #include <linux/dma-mapping.h>
$ E0 ]& b. u, p; z) ^- a. k
3 s' @! I# I5 b, {- #include <mach/memory.h>
9 l6 X9 A) u0 W8 j - #include <mach/hardware.h>, u2 E) V/ H+ i! B
- #include <mach/irqs.h>
5 q* D( H9 I0 d4 W9 e# U - #include <asm/hardware/edma.h>
" r; V; G* l$ V; e - ( ?+ L* ]6 j5 o- j2 W
- #undef EDMA3_DEBUG, ~6 S& Z. |% f, m
- /*#define EDMA3_DEBUG*/+ x$ O& @4 ?& Z% I5 y/ \* z
- % O4 }6 }0 I, m
- #ifdef EDMA3_DEBUG' G& s; @; c/ l
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)- o' V/ m! o! }
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( Y- ]6 p$ o& k, a8 v9 T6 o
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
. i# E. t6 T G! D9 E. D - #else* c; [+ v$ N% J) Y& F
- #define DMA_PRINTK( x... )' N8 c. C6 B" F/ y' s
- #define DMA_FN_IN
' B }! W' }1 ?# I - #define DMA_FN_OUT
1 \& x; |3 }7 q( J - #endif: s% I, ~9 P+ g+ f
1 M$ }- e5 O% _0 |* Z- #define MAX_DMA_TRANSFER_IN_BYTES (32768)% `; r4 {3 [; h+ A
- #define STATIC_SHIFT 3
1 @" M. N/ v/ [% w/ @" R, D0 c - #define TCINTEN_SHIFT 20
2 h$ |8 t; y1 Y) Q( l - #define ITCINTEN_SHIFT 21# \! \; n4 r4 H. o K+ D
- #define TCCHEN_SHIFT 22
. g0 z$ q5 r" u1 e$ G; B - #define ITCCHEN_SHIFT 23
# d" G4 O' E' |7 T- z- z: [, N' a
7 ~% H' o$ o4 p2 G. i- static volatile int irqraised1 = 0;7 W7 f+ d6 d/ Y; J* F
- static volatile int irqraised2 = 0;
; r* d% T6 g* l+ q( S - 5 c9 j% U% }& U. N- b) W3 g
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
0 C8 A8 n! j: \% n- J; ~ }1 { - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
) _. v9 z( ~; |* C9 g# d8 S - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
+ B' S! G2 F. Z/ Y4 K
g- W q* E& K4 [- dma_addr_t dmaphyssrc1 = 0;
! X7 i8 q `6 D9 b& i - dma_addr_t dmaphyssrc2 = 0;. A1 v- v% D2 K6 j
- dma_addr_t dmaphysdest1 = 0;7 q4 |! f! X" f5 e4 F! J' f& s/ s8 Z
- dma_addr_t dmaphysdest2 = 0;
+ \" U# Y% d& ]) q
7 H9 y4 u1 |" `* Y$ y9 z2 C' f3 J- char *dmabufsrc1 = NULL;& f# \9 ^9 M( M& U5 O0 q
- char *dmabufsrc2 = NULL;* P# J# t* E# i5 u/ ?
- char *dmabufdest1 = NULL;2 m- R1 K3 D: y/ I
- char *dmabufdest2 = NULL;- f% J" y/ J8 U' Z/ {
- . F# W: |" I. Q/ L3 E: z
- static int acnt = 512;
" R# l8 W( i1 Z# y' Z - static int bcnt = 8;
' H- Q! j( U: C$ I! x N9 z - static int ccnt = 8;
& H. ~; S0 h2 `' t
. A, i4 [# w4 v* a* s! o6 M' B- module_param(acnt, int, S_IRUGO);. P% O/ b+ N- p/ ^8 E Z8 v
- module_param(bcnt, int, S_IRUGO);" {0 v8 s% O+ {; C; y
- module_param(ccnt, int, S_IRUGO);
复制代码
4 d$ J5 [4 J) B" k! L
, w$ i0 q6 Z: e9 q 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
1 ]' Y2 ^( W& m! ]8 W5 Harm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
+ F9 k5 b2 X- l 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
3 j/ y" y$ ]) n, B& s4 Z
, u, O! O. ~2 d, F5 v
S! B0 J% C- u: T |
|