|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: Z+ X3 R( d' y$ w) d/ B- [code]EDMA sample test application
) B" w+ T5 `6 r, x0 |( n - /* _( u8 H5 b" j! s
- * edma_test.c
1 b9 S" r; q8 d( K% s8 x/ X* I' o - *
$ I% r( e% q2 h5 x4 _ - * brief EDMA3 Test Application
/ [% N0 h9 ~. K( n' x* z - *1 \# [' j, j- B6 Q1 s
- * This file contains EDMA3 Test code./ n6 k* l1 {1 c) ^, w6 S
- *7 N! O3 ~0 Y/ q0 o' K% q
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE; S$ u/ q/ h' b# p9 p8 P
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
$ |4 w* l V2 F/ b0 Q - * TO CHANGE.7 ~- s) Q" A/ F: K- B. ~
- *
+ y- a5 S; p6 e5 ?( ? - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/& Z4 G0 G* J7 _# v4 |6 d# A! D
- *& e+ A, {, w m/ z" o3 g
- * This program is free software; you can redistribute it and/or
1 P* n7 F# p# q9 v! t1 V - * modify it under the terms of the GNU General Public License as. L" ]7 z) O( ~
- * published by the Free Software Foundation version 2.1 j; G k9 _' V7 J) X5 b2 q& [
- *
' ]: u' y/ [) W! @$ y6 j - * This program is distributed "as is" WITHOUT ANY WARRANTY of any4 y5 y! r- W) B; @- A1 y; a1 r) B; u
- * kind, whether express or implied; without even the implied warranty
* I) g& |' ~! Q5 E l$ l: k - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8 j( Q" ]6 s- u - * GNU General Public License for more details.
( v0 D" N7 E7 g* y# e - */; ~9 [: h% N% h) R) N* y3 U
8 m q! ^) {9 M' K( F. P# R9 ~- #include <linux/module.h>7 l. g4 L' E7 E. N/ R
- #include <linux/init.h>
/ U2 Z6 ?) A$ m8 A' ]5 C - #include <linux/errno.h>" g: z8 F, h0 ?
- #include <linux/types.h>+ ?/ \, c5 x3 G) V
- #include <linux/interrupt.h>
Q/ G. w+ Z/ ~9 [. i2 f9 P7 U. | - #include <asm/io.h>- ~8 ^" I0 N- o6 s" K X: P5 p
- #include <linux/moduleparam.h>
( N' m- c& p1 t. I$ E! ~1 n - #include <linux/sysctl.h>
: i* n; z; F& `& [6 m& H - #include <linux/mm.h>
% E' L& X* C, w9 U% C, ?5 H4 O' @ - #include <linux/dma-mapping.h>, s" Y3 c0 d7 j- H0 O9 W# q; q( X
- 2 T0 d0 R& _' k$ ` {& m, ~/ d
- #include <mach/memory.h>
! `1 ?- d( {! G5 I. ~ - #include <mach/hardware.h>
! z4 B" o: l/ x a2 ` - #include <mach/irqs.h>, l% `* P' F' D+ D( l' N
- #include <asm/hardware/edma.h>% v1 O0 L! ^: ?' I. d, r
- 0 [' r% I/ w) z. o; y8 L
- #undef EDMA3_DEBUG) ?3 h4 F. P( B( ^/ u ?
- /*#define EDMA3_DEBUG*/$ s6 X8 l0 Q8 V$ j7 x* B5 ?3 }0 b, c
- % l; d$ T. ]5 b, e8 k
- #ifdef EDMA3_DEBUG
/ ~2 I/ _! n# v4 I! o2 ]3 P - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
) ]% E- m; Q: r/ C7 h/ q - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
- C8 N) k0 ~1 O2 U0 Y. v- i - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
: z# p4 `9 c( j E4 P" U - #else
# A3 c! i) ?8 E) t6 ]0 M - #define DMA_PRINTK( x... )
, U/ k; X& _1 A - #define DMA_FN_IN) R9 @2 T, z, `5 W" _6 c
- #define DMA_FN_OUT) a% y( o/ c' N3 f! m; r
- #endif }6 K) k/ J0 ]. |5 E6 t
- 6 `# f5 M3 g5 e7 N* i
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
0 w% G1 p! B+ ~8 J k - #define STATIC_SHIFT 3. J$ \4 a5 S* @# P$ b: p
- #define TCINTEN_SHIFT 20
* p+ W+ n' T' f, S - #define ITCINTEN_SHIFT 21( E2 n9 M& m4 v3 E4 C0 ?4 t
- #define TCCHEN_SHIFT 22
# b) m* j, L4 l. ~3 H5 [ - #define ITCCHEN_SHIFT 23
2 P. E6 w# V) P" A - 1 [* W+ v) v$ }$ L) ]/ N4 S/ W
- static volatile int irqraised1 = 0;
- x5 m' {' O4 p: O; Q$ r - static volatile int irqraised2 = 0;
! U5 w: c* u! Y) p$ X: v# X
- @+ l9 j% o2 I# `: O: m- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 |2 ?/ ?1 v' \* r; h, _1 D
- int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ i& s/ m4 F; E0 w
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
4 O( E# u7 I' x: F - / G2 F0 T" G/ Z$ Y) y ~% e
- dma_addr_t dmaphyssrc1 = 0;
1 _# x$ Q. ]% D' C2 ]- X - dma_addr_t dmaphyssrc2 = 0;6 r; {/ r. i, W. r0 s
- dma_addr_t dmaphysdest1 = 0;; j3 T8 Y {5 F7 Q. G) b. N, v" @6 @
- dma_addr_t dmaphysdest2 = 0;
( z$ r4 E2 n$ U7 |5 z# n* |$ f6 Z
5 e9 n- [& x. {' N- char *dmabufsrc1 = NULL;: T$ J7 r0 z- h! H% C4 ]% n
- char *dmabufsrc2 = NULL;
5 i) j4 j0 P: L9 L1 E! }5 z - char *dmabufdest1 = NULL;
4 i! x( ^2 L8 R2 ? - char *dmabufdest2 = NULL;1 c/ B. S! c1 x
- ! r+ ?$ H3 m; P) E, g- u
- static int acnt = 512;
7 b. V2 Q8 g* X$ X3 X" ~ - static int bcnt = 8;" c, A: v) I% W2 N/ R5 y( j
- static int ccnt = 8;# ]8 g, i8 G8 q' @7 e) c
- 0 h {/ Q$ q+ y
- module_param(acnt, int, S_IRUGO);
{# W* ]( u2 N0 f) m+ X3 ?( u* Z - module_param(bcnt, int, S_IRUGO);
4 X9 j/ Q0 w' ^, M7 A - module_param(ccnt, int, S_IRUGO);
复制代码 5 y z' v) `, x
! B+ F! K9 e1 r) j. B 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用; A- P) E. v- e- Y6 U$ i3 O
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
" X+ L0 `6 a; H# ^; A7 ] 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。 \+ ]$ K0 y3 B, s0 o8 Q
7 s; m% K* y# Y$ s. V& j) g. q I- k6 z7 T- \- d x; s
|
|