|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 3 Z3 D7 E/ @4 d6 \
- [code]EDMA sample test application
9 K/ s5 S; J0 }4 k# v. Y - /*: b3 z j* x* g ]1 B$ w
- * edma_test.c! B5 r" r" _) U
- *
& w* N, k! M9 h - * brief EDMA3 Test Application
8 h0 ^ K2 K: R+ H, J* f - *0 k, j" f9 d5 R, J$ P, g A
- * This file contains EDMA3 Test code.- b+ v% D) z' h3 ^! o2 U% h
- *
" P& N$ h$ n7 N% y# W - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, @! w! ^$ k2 @
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
" K7 B4 `" v5 w! h8 c* D3 M4 B" E - * TO CHANGE.
T3 r+ |# B% q; S# ? - ** W6 Y" n) i2 P* X7 w! R3 |
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
( J- h6 |9 @9 Y/ z3 k% ^: P, O - *6 q$ ^0 R3 ^* ]+ a- [
- * This program is free software; you can redistribute it and/or
4 C& v0 | U& Y4 ~3 h$ \ - * modify it under the terms of the GNU General Public License as
+ s0 c% u% g" t) I/ C. O - * published by the Free Software Foundation version 2.
8 v v% M2 l$ e( w - *
- {" J: Q3 w3 X9 G+ E) b - * This program is distributed "as is" WITHOUT ANY WARRANTY of any$ l, M' x& e' m7 |+ S
- * kind, whether express or implied; without even the implied warranty
* L! b$ t1 d/ Q( C0 v1 o1 W) ?7 \ - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; V- n5 X" D+ a- J - * GNU General Public License for more details.
; B# M- Q9 @0 F S, v& K! X - */; Y0 v: }7 x( i: ?
B0 G# @5 t& k0 L" c) }( l- #include <linux/module.h>
# g: P. N) S. @. b - #include <linux/init.h>
n ]/ _9 A+ J1 S - #include <linux/errno.h>
+ A! V. C* X7 M$ A1 d, x' f# ?' M - #include <linux/types.h>
5 r9 b* q9 n0 \" d - #include <linux/interrupt.h>
7 P! X, n, X. l3 X+ M _ - #include <asm/io.h>
' L2 n2 a& P3 ~1 B; Z( r - #include <linux/moduleparam.h>/ W2 o4 c% O& t- y+ e: h( c8 v" Z
- #include <linux/sysctl.h>
2 R- E( q/ n7 l - #include <linux/mm.h>( b: G/ q* T( B' f) Q' w5 `0 {
- #include <linux/dma-mapping.h>, O. z9 R1 C' H) Q
! w/ v) q; _0 |1 h6 i2 G0 E- #include <mach/memory.h>
$ ` E' e2 [$ P: Q7 s, D% o, `* Z - #include <mach/hardware.h>& Q( W/ {+ i7 l; r& j
- #include <mach/irqs.h>
8 u2 x0 ?+ t, W* m3 Y - #include <asm/hardware/edma.h>
6 y+ X8 k3 j( V) L. t - 2 @9 [, ?# B9 D+ i$ K; {
- #undef EDMA3_DEBUG
) }$ h* M+ N _; D& C# o - /*#define EDMA3_DEBUG*/9 l/ D7 y0 z" {" p. B& t
- 5 H6 k6 |4 _) \% |
- #ifdef EDMA3_DEBUG9 P5 n* o% e. H o4 R
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS) t& a0 ?1 [$ W7 F( {# Q
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
]. G Q# k; c! d - #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)# m* W" l% @- Q# i5 m% Z5 f
- #else
# [4 W# p) E4 G) s, H - #define DMA_PRINTK( x... )' n# k/ l: b3 {
- #define DMA_FN_IN0 b, F5 l' M+ @* J8 C
- #define DMA_FN_OUT& ]8 m1 z. r0 B1 p5 L7 p: o+ d
- #endif3 F2 Z1 m! j, B3 U
8 V$ S2 O8 }# N! P$ z- #define MAX_DMA_TRANSFER_IN_BYTES (32768)
: r& l+ j. Q9 v( P) c9 `& G - #define STATIC_SHIFT 3
5 A# G( `2 L& `5 e( k - #define TCINTEN_SHIFT 20
. J# X. K1 t+ j3 E+ }. F - #define ITCINTEN_SHIFT 21/ d+ A' C; w8 [9 E, M
- #define TCCHEN_SHIFT 22
, p% B( M4 Z/ H/ D/ L5 \/ o) ~ - #define ITCCHEN_SHIFT 238 `) w, o* N% q) B' L" s9 F' m. s
- D7 @# m, V& c. Y- static volatile int irqraised1 = 0;
7 n3 C2 ]7 i+ `- ?8 H7 j% B - static volatile int irqraised2 = 0;- f1 B5 l. i/ J+ u' W
- 2 h+ A# u4 O% |6 ^9 F
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
H8 d6 ]* E& r - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
! _6 }! A, x& N5 ?# Q1 I; g) k - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
' o7 ~( e+ u7 k& b( Y) y+ C& h w) e
+ c) z2 c8 t b! v0 t- dma_addr_t dmaphyssrc1 = 0;9 Y% ^2 s# s; T
- dma_addr_t dmaphyssrc2 = 0;
+ M9 o! {, L! ]7 Q& q* L" [, A - dma_addr_t dmaphysdest1 = 0;6 Z9 x# i+ Q" O7 z1 ?
- dma_addr_t dmaphysdest2 = 0;2 {0 h- W b% Q" f& r+ P6 a
' l( w% J M9 J* ~3 Y5 D- char *dmabufsrc1 = NULL;
$ x; P e ]: _ - char *dmabufsrc2 = NULL;7 f5 W# n& d& _( H5 M9 y' Y. \
- char *dmabufdest1 = NULL;1 H& l: H+ T9 E; m3 D( Z
- char *dmabufdest2 = NULL;$ ]8 |; x& ~& G3 q4 L' K
- $ J% J/ T6 ?; ^- D5 ]
- static int acnt = 512;- J# H! Q- b0 Y
- static int bcnt = 8;
( t; `7 i3 H4 {/ v5 @ - static int ccnt = 8;, A" r; {% |& V* ]9 l- `% _
9 X9 o, m {) q- module_param(acnt, int, S_IRUGO);: x' G( I+ O' v' w$ n7 m0 q) P& W
- module_param(bcnt, int, S_IRUGO);4 _$ B* u- }$ R* E6 ~
- module_param(ccnt, int, S_IRUGO);
复制代码
& r5 w( y% d4 @4 c, x6 p+ t
. ?7 C5 F( n' Q- ]1 i 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
7 r* h1 [" R$ c7 I% Oarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。3 B' X I# r. H: P) B* ^
我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% g) ]8 ?9 _# J2 E+ w
4 X8 n4 [9 L; y$ z: x2 D& U: c& o0 u$ g! E
|
|