|
|
本帖最后由 yyj 于 2018-1-30 11:01 编辑 8 }- p8 G4 X& K" U
- [code]EDMA sample test application/ R( y3 R: |$ @! q& x
- /*
& K% X8 Q7 l' }! O2 ?, W - * edma_test.c
, H% l; ]+ S" |3 x - *
$ o1 |2 r& j1 o+ x - * brief EDMA3 Test Application
, d+ `7 H% U& p; R; F - *
; u$ }+ e( q @* t# R% |' { - * This file contains EDMA3 Test code.2 R- j* a t+ ~1 Y
- *
& A$ e2 @6 u. | - * NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
4 x/ F+ @. [+ V - * REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
$ ~# N9 e' a- E3 d& r* R5 J. |' n. Z - * TO CHANGE.3 W, ?. _" O/ y8 z
- * X C$ h) R' _/ @6 y' O
- * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. n3 k3 h# @3 }% h0 Y
- *
% e: G- h4 ~0 t5 U' W - * This program is free software; you can redistribute it and/or# a" h' v5 Q( ~9 F {" v9 y
- * modify it under the terms of the GNU General Public License as8 ?% |; _* }1 X' G
- * published by the Free Software Foundation version 2." c i1 S8 w4 Z$ E V, g( U
- *
8 {2 o+ N! j/ m' b - * This program is distributed "as is" WITHOUT ANY WARRANTY of any
, M; u7 y. _) I2 S% i& I2 e/ J: @ - * kind, whether express or implied; without even the implied warranty$ y' `9 R7 ^5 u* K W8 @* e# M) D
- * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the$ c# m& G# e3 b, _
- * GNU General Public License for more details.
% q" [7 K3 z& M V: E - */
/ q# D# q/ ~% P/ c1 M6 q - & }2 d% Y) r' ^- q" s4 d0 P) i
- #include <linux/module.h>5 t4 G3 ?; M" X7 O
- #include <linux/init.h>, o( {6 \$ X% m b
- #include <linux/errno.h>& T( G$ m% [' Z. B: |
- #include <linux/types.h>
! u$ ^; t) C- C' G" X4 T3 L - #include <linux/interrupt.h>
9 `: [# t+ J; }* o; C, k - #include <asm/io.h>7 ~7 d* K# c! k& Q
- #include <linux/moduleparam.h># X% D2 k7 s+ Q- m7 ~8 C% i2 N
- #include <linux/sysctl.h>
$ z" \- L# R) i6 {, p4 U1 l - #include <linux/mm.h>8 f7 D% z6 K1 |. j
- #include <linux/dma-mapping.h>% l4 ` v7 Z* w9 {) t5 b- T
- . }; O' I, w) |. y8 V
- #include <mach/memory.h>! E# H4 Y: L4 x( ]
- #include <mach/hardware.h>
2 X: e* F# ^7 b) w* q3 F - #include <mach/irqs.h>
% d) k' r$ d6 X. z; i - #include <asm/hardware/edma.h>. [$ c4 N: v& m1 i, u2 J5 \
8 i) R$ M8 Q/ M& d, B- #undef EDMA3_DEBUG0 k7 ?) i8 L1 L0 e$ t
- /*#define EDMA3_DEBUG*/
5 b ?# |! ]' m
i5 ^/ I3 Y/ E8 B4 J- #ifdef EDMA3_DEBUG3 E! p3 r9 x0 _
- #define DMA_PRINTK(ARGS...) printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS): c- D4 f8 B( w9 X" {1 v. Q7 R6 e
- #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)" x1 t, @$ z% k8 `- Y4 }# W+ B
- #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 _( K) t9 B0 D. N R
- #else
, h! `" X; F! N - #define DMA_PRINTK( x... )
+ y# Q# U; `2 p6 W9 G9 M - #define DMA_FN_IN: O/ B( p) R9 y
- #define DMA_FN_OUT
) S7 g g( G4 t* _ - #endif
R; q9 i3 \: Y7 {( R3 ~( ] - % [$ F2 k1 E$ n4 \
- #define MAX_DMA_TRANSFER_IN_BYTES (32768)1 G. Z% @( O- k" Z) r ?
- #define STATIC_SHIFT 3
6 E6 X# e- H T$ N9 Z% S3 } - #define TCINTEN_SHIFT 20
3 C/ ~. Q; [2 P2 D/ `9 a+ [ - #define ITCINTEN_SHIFT 21
8 P$ X, K* F n0 A) l3 [ - #define TCCHEN_SHIFT 227 t! q1 J5 t. C; Q% Z$ `6 @
- #define ITCCHEN_SHIFT 236 Q- ?; o/ g" V2 d+ C0 Q7 B( [
; n+ }+ `* Z, M, t6 s \# ?9 |- static volatile int irqraised1 = 0;
, I* ^2 W- x4 P1 {7 k5 Z - static volatile int irqraised2 = 0;
. O, h/ Y5 M) q- z6 ~ y2 n9 } z - ' D9 C3 e9 P# w) P+ G0 @( {
- int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
/ [; l6 e* C- ]# D* {$ I - int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
- I; r+ I$ h( i! [ r% U8 T - int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% s3 J/ N3 l0 e% p
- 7 H0 B5 a( z0 F( |
- dma_addr_t dmaphyssrc1 = 0;
8 ]& V/ A4 I' G- e& m7 t: T - dma_addr_t dmaphyssrc2 = 0;
# z; Z# F' ?1 D: A# L; C0 j5 H0 c - dma_addr_t dmaphysdest1 = 0;
7 ?! r# m) ]( V/ k7 c - dma_addr_t dmaphysdest2 = 0;$ W3 g; y7 Y' q' V5 `
/ M8 b5 l; l$ D7 o! V/ i- char *dmabufsrc1 = NULL;
( S" f5 ] Y+ V. z0 ` - char *dmabufsrc2 = NULL;+ e/ n* j( p4 n9 l3 E
- char *dmabufdest1 = NULL;
/ W' k l# s/ m - char *dmabufdest2 = NULL;# Q4 t b, ]- c. O4 N: H
- 0 S: N' \# `) U
- static int acnt = 512;
5 i% o4 V- E6 ~) F8 n8 J; v - static int bcnt = 8;
3 W- t8 ^! E6 I; _+ K4 l& t3 i - static int ccnt = 8;8 _8 I j! a5 w& |
& l% k9 t" |( v- Y% M- module_param(acnt, int, S_IRUGO);
2 W& n; X6 H [3 S0 q' c5 Y - module_param(bcnt, int, S_IRUGO); y5 c* y/ Q0 h- f' T
- module_param(ccnt, int, S_IRUGO);
复制代码 2 D4 n/ W5 x0 ^) `, H' R
& A% c; g" C' R9 G) A$ k Z
这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用( x9 f# \ i2 {$ _. I) a
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 J3 N5 |0 P% h5 m) c' g2 ~ 我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# q+ Q3 S% O" L9 d4 Y; \/ T0 ]+ `8 L
3 }8 N; E" m. Q. b: X3 b! l! d7 p- k6 W! J- I! p3 l6 E) u) d& }
|
|