|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑
0 Y; n/ G8 e% D# j6 w- [code]EDMA sample test application8 W7 m0 C' O/ u T
- /*
m# h- i+ `- F - * edma_test.c! k4 o/ @9 t; W9 B7 O( \, e
- *8 R" Q8 i( M1 W+ @0 C
- * brief EDMA3 Test Application
9 F1 R. L9 M' l _6 e$ [& [ - *
& k# }4 `' z* c9 X% Y - * This file contains EDMA3 Test code.9 x7 d3 i: _/ h q
- *" t2 k# [, V) d6 L
- * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE/ U% [0 J# z) a' ?( \# @
- * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
! S( ^$ l q/ f4 G! L8 t' ~ - * TO CHANGE./ _: l% w/ Z: ~
- *
4 L: D' V# G: B: v - * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com// k3 S" @4 l; O+ M8 r
- *, q! X# a/ e3 u8 i( e+ Y
- * This program is free software; you can redistribute it and/or
! p9 S$ H4 _6 @* L$ { - * modify it under the terms of the GNU General Public License as
4 ]* I" {2 X9 J( }1 k, x h - * published by the Free Software Foundation version 2.2 B1 m; [3 `9 v1 N' z/ J: b
- *% m3 E8 c5 J- }6 K. u0 C9 i7 X- Z
- * This program is distributed "as is" WITHOUT ANY WARRANTY of any
) \6 y) R' h" l4 c* r - * kind, whether express or implied; without even the implied warranty3 o" g- K# h. Z
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the; `" j# W$ e( a. F ^, g
- * GNU General Public License for more details.0 v) v. W* l3 j" e. b
- */
7 o. f. f& Q3 O4 \) C/ K
$ s% O1 a. M% b7 U% m- #include <linux/module.h>+ N1 R2 U$ F7 I ~
- #include <linux/init.h>
7 `7 I) Q2 J2 x- o: F( J - #include <linux/errno.h>
7 u9 @! v9 Y% E6 K - #include <linux/types.h>& @, |8 \! b& P1 S& G: X8 d8 d k
- #include <linux/interrupt.h>
# B( I5 F' n/ \3 u$ v; W - #include <asm/io.h>) s% F# x$ y, h5 z9 o
- #include <linux/moduleparam.h>
1 }- ^9 J" b) ?( Q$ l4 s - #include <linux/sysctl.h>' `8 |' Y2 V9 @( X/ D& n7 M9 \- n
- #include <linux/mm.h>
: R5 ]9 ?: A4 ~$ a - #include <linux/dma-mapping.h>
) P2 d& ^) E% ~) e y a& R
& {' L: T7 G2 o6 [) O- #include <mach/memory.h>
$ d3 H; O9 {- g' K* K8 S' A; L6 g - #include <mach/hardware.h>
) k d$ ]) O) V) u" j - #include <mach/irqs.h>3 s' H+ X, o! I- R6 l! C4 \6 ^7 k
- #include <asm/hardware/edma.h>3 M' R7 M8 l3 C
% x; r. h& Y. Q- |$ c- G; I, l- #undef EDMA3_DEBUG
! _& t; k0 w4 `" J - /*#define EDMA3_DEBUG*/- [8 J& V* v; s+ r: q' E
, A1 U& h' ?+ B* U& U, _- #ifdef EDMA3_DEBUG
( B% h# g3 ?. E# |! W0 r. I" j - #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
7 e$ l8 j7 d- `- V6 g! Z# l* ~& C; g - #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 w5 [5 i$ n, Z( G8 W1 C% k" j$ u
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
1 c6 r5 ]) m& d2 Q1 W4 C - #else* T4 ]" t1 w# P! r/ D& T: r
- #define DMA_PRINTK( x... )7 z- F+ w5 C1 s( ~6 ]+ z7 T5 |# g
- #define DMA_FN_IN2 D; \8 p5 B3 I/ [8 {
- #define DMA_FN_OUT/ H! N( A j2 i! I
- #endif
+ a, \- o" y1 @) w1 _% x - + Y: o7 e8 g% y2 W, Y7 W6 B/ |* ?1 b
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)" b( S+ e# k5 R
- #define STATIC_SHIFT 36 T0 K9 X; a8 y" y& N9 J
- #define TCINTEN_SHIFT 207 s" r9 ^% W. l9 Q ]/ a; q
- #define ITCINTEN_SHIFT 21
' G/ s$ V- V" A7 E z - #define TCCHEN_SHIFT 22- h+ D' }# L6 z, L5 R
- #define ITCCHEN_SHIFT 23 [$ j6 w5 z6 C3 V6 O
# ]9 }" L2 G' [3 D6 }' N- static volatile int irqraised1 = 0;
% z% M5 o+ n+ M% o4 U! `- { - static volatile int irqraised2 = 0;3 q, g' O6 j+ p5 p0 A" z
- 4 s: ]+ z+ N* Y! s$ I, G
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ v7 J6 o$ k% A1 G: _3 a
- int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
5 z' k/ e7 ?) l+ l V* r) x - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
; C1 l3 @- q3 E# E& t! H8 N. N - 0 n. @. L/ D) w; b* ?
- dma_addr_t dmaphyssrc1 = 0;
- X7 O9 k7 A% x) j X4 g9 M' m - dma_addr_t dmaphyssrc2 = 0;& m% D/ {/ G# T
- dma_addr_t dmaphysdest1 = 0;
* V; }: i, [ @2 c - dma_addr_t dmaphysdest2 = 0;
+ g x" B/ Q( { - : O1 i# o7 X$ J
- char *dmabufsrc1 = NULL;
/ l$ t% N# x8 E9 i) f5 e0 F: O - char *dmabufsrc2 = NULL;
" }( C& i- q0 a2 f. k/ c - char *dmabufdest1 = NULL;; q, ]7 E, ?2 e
- char *dmabufdest2 = NULL;# u1 s2 K) P6 F* a
- % r0 M) e) v4 ^% r* x, W4 b U
- static int acnt = 512;1 ?2 H; F2 ]" u5 @2 l
- static int bcnt = 8;1 h8 d, L Q6 @0 A# c
- static int ccnt = 8;
0 B# }/ J) G+ `
" t: J( h& |, G6 q% l) Q3 E- module_param(acnt, int, S_IRUGO);
2 x' R0 ]) o& ?; J- O+ D - module_param(bcnt, int, S_IRUGO);( }7 N( Y2 S0 J
- module_param(ccnt, int, S_IRUGO);
复制代码
4 V. p- ?" l6 v' A* ?
5 b, r* v0 x+ W8 I# l$ @" F 这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
: L# _# k4 T* E9 q0 [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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
8 ^5 B- F3 q2 }5 Y 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。" @4 a6 Z5 a- e( ?' J
. s4 D6 S3 D: d5 @7 }+ \% P$ c; r$ l& |1 Q8 z0 H
|
|