|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 T/ X' W) N" B8 X4 w/ H2 S- [code]EDMA sample test application! T3 [8 v O9 p& f4 L
- /*. g" q f W i: p6 ~
- * edma_test.c5 G& M4 S. v t- u5 M, w/ ]
- *
$ ~) o# R# F8 Y4 X& X5 b - * brief EDMA3 Test Application
& W; x5 F% `0 p0 r1 w% n: P - *3 \& @, ?2 Q3 h0 X3 N
- * This file contains EDMA3 Test code.0 }. @8 s# `6 O5 _3 A: ^
- *$ ~3 [+ _0 K. q6 b2 N4 W
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 |# L# p7 g2 q# u A4 V
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT* c0 j1 o: z6 G3 a8 j- H7 I
- * TO CHANGE.
% A6 {" m% s* Q - *. T) u; T: O- S l9 b1 F/ x1 p
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. \9 @* h9 `6 q" b, U) s- e$ M
- * {( Q9 G' V" k
- * This program is free software; you can redistribute it and/or
! b& D0 v# }* r) O - * modify it under the terms of the GNU General Public License as3 B( z% R( ]: i2 m0 o$ d3 I) G
- * published by the Free Software Foundation version 2.
" {+ j) k0 C; v% }& a% I - *
1 G7 v }% A% Y" O - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
4 D( m4 f9 J& A1 @0 e3 [1 Z$ [ - * kind, whether express or implied; without even the implied warranty% G" P7 e2 v% m! T; G
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
$ ~9 C, z4 g* i+ V7 D' T - * GNU General Public License for more details.6 R+ v# m- k L7 Q* d$ n0 {
- */
S9 R4 T- j& }0 u' m. w/ c4 y - ! @7 T& [* [) w0 S0 J7 o
- #include <linux/module.h>& ?* Y) ^, @$ }/ D3 j6 }. x2 O1 q
- #include <linux/init.h>9 z0 O+ n3 B# l
- #include <linux/errno.h>
5 Y! K7 n& H; E; M( b - #include <linux/types.h>
0 |! t% [: c0 X, L0 G1 v8 J - #include <linux/interrupt.h>
/ l1 ? Y) D; F; K ] - #include <asm/io.h>7 Z& F" u7 e" ~! d- W; ]- z4 k" f
- #include <linux/moduleparam.h>
# k5 J, C5 }7 k! n3 Y$ s6 w - #include <linux/sysctl.h>; ]% \/ U6 G; h- M: f! p
- #include <linux/mm.h># ~$ n* K4 w4 ]' X! J4 K
- #include <linux/dma-mapping.h>4 z+ | m$ l! v- [0 Q
y8 ~# F0 U0 o N2 T+ p- #include <mach/memory.h>8 s6 N& c3 T: T- I, O: b9 R
- #include <mach/hardware.h>- A9 G9 l4 p* M8 |3 U
- #include <mach/irqs.h>
5 k; q+ m) ^7 A* P2 R, [( \& \* t - #include <asm/hardware/edma.h>
o, X( ]4 d% k, F X' d$ W$ a+ {/ s7 r - 8 ~ ]; w4 `; n7 U# U% T7 r! q8 s/ O
- #undef EDMA3_DEBUG
9 a6 l i, x' N7 D# a - /*#define EDMA3_DEBUG*/
& K( W; |1 E: p4 i, E
( d7 u c0 R0 S- o- #ifdef EDMA3_DEBUG9 ^) v" m; g3 O
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 p" ]% g' }: l
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)- v& l* E7 k$ ~% \( o0 u6 \
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)! L+ g- m8 ^( W' x5 z; W4 ]! P
- #else
: S- K, e# k t1 X - #define DMA_PRINTK( x... )3 e; r3 z2 @4 ]. I: m% ^* [
- #define DMA_FN_IN' T& O1 O" f' E0 ?% m$ ?% H
- #define DMA_FN_OUT7 Y0 c( f; }" _+ m3 z/ W
- #endif+ N! H' X$ L5 |
- ' z r/ L7 P+ I9 p2 F$ a
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)( ^0 a6 |1 j( q7 k% `/ X
- #define STATIC_SHIFT 3
4 q9 l6 O) ~& f8 l% ]; P - #define TCINTEN_SHIFT 20
( Z2 }7 T9 {3 W; t% g1 ^ - #define ITCINTEN_SHIFT 21
' K! k6 p6 D! ?$ R/ z% Y! q$ x - #define TCCHEN_SHIFT 22% q2 g" M( ]1 t* |
- #define ITCCHEN_SHIFT 233 r. O; g# P: A( j( v2 B5 u7 l1 A. a; d
2 `1 n2 ?. Z7 L2 s- static volatile int irqraised1 = 0;$ h# |5 u% j0 c4 L' {. \
- static volatile int irqraised2 = 0;
. g; p: H; l+ n/ H, `* ^0 Y; P8 V - ( R4 O3 H# I) p% W) P7 q
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) q3 _5 e' [/ j* R4 i
- int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, j# C' b5 g2 [( L1 v3 [8 C6 B+ r
- int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
+ V. C" i( |: t' ~9 J2 ^6 E - 5 O, \) F# b. V) f P! {: ~3 q
- dma_addr_t dmaphyssrc1 = 0;
- S" e; B" H" ~! } - dma_addr_t dmaphyssrc2 = 0;* Q5 E! @- `. I- n! [0 E
- dma_addr_t dmaphysdest1 = 0;
; `! F2 l. H( c( l - dma_addr_t dmaphysdest2 = 0;8 X: J+ C2 l' n# `: s' m
7 A4 \1 m& `0 f2 d" X- char *dmabufsrc1 = NULL;) v4 P: L; P$ { I! N8 `
- char *dmabufsrc2 = NULL;5 o0 o9 a/ J( ~& I/ ?
- char *dmabufdest1 = NULL;8 @' \- w& h* G( L9 e
- char *dmabufdest2 = NULL;
! s- }! C0 k3 ]( {2 l p. y
- W/ I* i9 h5 {2 d0 O- R9 \- static int acnt = 512;& \7 [3 R v6 ^8 r8 `$ W1 V" ]/ d
- static int bcnt = 8;0 G* \, j" X; K7 y" \; U
- static int ccnt = 8;
% O8 Y9 ]; h. g' c% h - . w- U! U) F% w% n% S1 b5 ~
- module_param(acnt, int, S_IRUGO);
& _- h/ m# V5 i- N, ?% a - module_param(bcnt, int, S_IRUGO);- |) j& ^) R0 D6 c$ b2 s
- module_param(ccnt, int, S_IRUGO);
复制代码 " ~) h, [9 h4 c% p/ v) J6 P. X
# F/ A3 c/ A9 ^, R$ A) r, v# K9 h 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; R; f- ~8 i' n# warm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
+ s" [# _& \4 p6 Q# u( _9 F 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。. ?2 s* |- E. M( p% @, t7 j# a0 |
4 z4 C6 k% ]' U, n, n4 H. y9 N% Q/ @* o3 a N9 P# f# i
|
|