|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- {7 ?( [6 ^0 e d- [code]EDMA sample test application9 {' d. P! r% T! a
- /*
( m5 @6 Q2 j" } - * edma_test.c- s* |% d$ [& f" q4 ~2 y% Q
- *7 T j+ n* }; K5 k& X9 s
- * brief EDMA3 Test Application7 B! K0 n% Q6 d- ]- e8 O
- *
/ O; m' k# `1 ?* Z- a) l - * This file contains EDMA3 Test code.
3 Q# K5 u. x: b# N: n% K: | - *! L) K( [+ l/ k
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE& Y6 N1 _* M" ], [+ e1 e0 n
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT4 h* H1 r) e7 C c! @
- * TO CHANGE.
3 S8 H7 d2 Q8 P* R2 j! \ - *6 ` F+ ^" u, [6 y) Z7 |
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! B+ i* S+ }$ A# l* ^/ ]
- *
* Z7 t- j2 j' M l& _7 ]) W - * This program is free software; you can redistribute it and/or4 i0 x. e2 W% I. K& }7 c) ?, F! {" [! t
- * modify it under the terms of the GNU General Public License as9 q* q. B, E. F
- * published by the Free Software Foundation version 2.# W( H; _7 H9 p, ~
- *- T/ j/ x/ ?" x# }6 Y
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
: D+ }2 N8 y% I; }% w - * kind, whether express or implied; without even the implied warranty9 ]6 W2 \1 M# C5 f/ q! S2 I, b3 E# a
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the l w$ u, ^7 ^; }
- * GNU General Public License for more details.& O; C0 B9 R T& @% y6 K
- */' Y& i* Q+ z3 k
, P V% P7 Y6 H' ] r8 s8 s$ P- #include <linux/module.h>+ r$ [) H, a. l6 l+ u- R9 f
- #include <linux/init.h>( O2 a9 e$ k8 z
- #include <linux/errno.h>
- T8 b f4 r2 P6 M, m$ S - #include <linux/types.h>
: G# b* ?1 A( g; o/ e$ r+ Q0 d. l - #include <linux/interrupt.h>: l/ b, ^6 K6 @( C9 n
- #include <asm/io.h>
) h8 V# v$ X/ E4 d% |; z - #include <linux/moduleparam.h>
0 h! E3 @( H* C; P* h0 E" M - #include <linux/sysctl.h>
5 Q* r) \' p. i - #include <linux/mm.h>8 `% L% P1 ~2 Q% c; C9 W
- #include <linux/dma-mapping.h>
: J& [ B1 e* S+ W5 H
) T! _' |7 v% K Z- #include <mach/memory.h># l! {- y& w. i l( D$ {
- #include <mach/hardware.h>3 H) o+ k% h8 ?" A3 n5 w
- #include <mach/irqs.h>
, i' L5 h" U/ e1 a% l - #include <asm/hardware/edma.h>6 _1 v1 X6 A" D2 O) ^1 Y$ L
. O8 O8 r# U0 X& U1 {, _6 x( H- #undef EDMA3_DEBUG& E7 F4 L! d: t7 F, r, J( x. q
- /*#define EDMA3_DEBUG*/
3 J6 `# u, {, a* t9 v% V - 7 H% q4 y' N b! ?
- #ifdef EDMA3_DEBUG
K7 Q3 [7 N) I6 o) A& ^) {2 m - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
" S+ x" }$ H9 O1 U, \ - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)& y2 {8 e) t- @6 _* `1 M
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
! q( i2 z0 u f0 i - #else
& J9 {+ m- k. X, h. Q" O - #define DMA_PRINTK( x... )- h; A+ ~! }" a+ j5 q( t9 |
- #define DMA_FN_IN# }/ c3 t# p; F. i
- #define DMA_FN_OUT
; t" g4 C3 O3 R' |$ v/ Q - #endif. `0 l" c* W! @8 f" D
# Q0 g9 B2 |- Q! R4 I- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
& c7 B( M. b7 h; o1 N" | - #define STATIC_SHIFT 3
) Q) D8 [. e' N9 }* d - #define TCINTEN_SHIFT 20
: m# Y. \0 y5 D6 ` d" J - #define ITCINTEN_SHIFT 21" Y5 T2 m8 q- E, ^& S
- #define TCCHEN_SHIFT 22& e( e6 q& ^. N/ v6 |- H3 M
- #define ITCCHEN_SHIFT 23# m/ @0 p; x5 a" j" B/ j( C7 u
- $ ^+ V; S1 ~$ T# o! |
- static volatile int irqraised1 = 0;
. b% X1 N' _( e! M- | - static volatile int irqraised2 = 0;
0 R$ \! r3 m$ |8 U% \- u - / y% E1 I b- ]' K' ?
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
( e! D4 w3 C+ d1 ]5 ^6 | - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
3 M% k V! X! A2 I. I; | - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
5 [( F" x2 A: E9 q# i! q% p7 j- z2 A - $ T8 X, m T# [* M/ L3 x
- dma_addr_t dmaphyssrc1 = 0;7 ]9 d# [) ?- H, m
- dma_addr_t dmaphyssrc2 = 0;2 Q [5 f2 z+ k0 t6 w8 x7 A
- dma_addr_t dmaphysdest1 = 0;) y) @3 p0 y3 `: _
- dma_addr_t dmaphysdest2 = 0;
" i# p) L% x1 H' h$ J
. N X C1 A" U0 r# Y8 D- char *dmabufsrc1 = NULL;
$ Q9 ]$ o+ U, r+ E5 G: @" ? - char *dmabufsrc2 = NULL;5 X7 w6 G4 S7 z5 L/ L7 i
- char *dmabufdest1 = NULL;
" ?2 A f! [0 D% u2 | - char *dmabufdest2 = NULL;) k- H$ j% p8 z0 e8 g8 t" c
- 3 n8 {6 ]7 k* `; z' G
- static int acnt = 512;: C4 t# p! z5 s2 E: ]! K
- static int bcnt = 8;
4 w2 v6 D* U6 N) g) ^ - static int ccnt = 8;
1 ?; V8 r: w/ n
8 q- V/ M; B/ L. n+ R& n- module_param(acnt, int, S_IRUGO);$ ]% l4 H; J, s1 G6 Z9 N
- module_param(bcnt, int, S_IRUGO);
; i% c: B: v! y+ ?& L! Z4 u - module_param(ccnt, int, S_IRUGO);
复制代码
& W0 t* I% \$ i' d5 S4 D: I
; E- H" Q+ `- y1 p 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
+ B7 A }( D$ darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。0 E; Q: W! G p6 U; m0 \7 y
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
4 g$ e8 ?4 N: j
3 c2 y1 A5 R2 P" N9 u- y" Y/ z; ~# B$ f4 O- @- w
|
|