OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 9196|回复: 0
打印 上一主题 下一主题

[未解决] OMAPL138如何在Linux下使用EDMA3驱动

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 & T5 {3 E# q+ N, O( F
  1. [code]EDMA sample test application2 ]9 S1 }3 |+ t
  2. /*
    ! J5 g% y$ K; t
  3. * edma_test.c
    / g, x+ |- F" i  y4 D8 X
  4. *
    6 T) Q/ \8 K0 R2 Q3 H7 U
  5. * brief  EDMA3 Test Application
    ( X8 c: @; }# @7 N
  6. *
    + n) a+ t2 U8 b7 k
  7. *   This file contains EDMA3 Test code.
    1 B8 o! x0 `+ i4 c! S
  8. *( X" K( G& ~  h, _1 D
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. l& c! z2 t: h" a2 K( p
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT& q9 v0 w& S, K: n$ L( H
  11. *         TO CHANGE.
    1 q/ n: V6 H4 G, O5 o
  12. *
    7 N1 r% i6 H; Z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 Y: |: @  q1 O& H1 C+ j
  14. *
    ; d* f: c* p* I3 t
  15. * This program is free software; you can redistribute it and/or. d* k0 ^3 x# Q& s. X! Z  N
  16. * modify it under the terms of the GNU General Public License as# n- X' |) V* ~  b& O& D
  17. * published by the Free Software Foundation version 2.) K# i1 ~: Q. I( g* d: X
  18. */ z, T- q7 |# ^
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 i. K/ j; q& `' X4 X0 t. L
  20. * kind, whether express or implied; without even the implied warranty4 R" j" o$ N; A7 p7 b# K# B
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ' \" R" A8 c4 c/ r1 U9 L) z$ ^% A. }1 g
  22. * GNU General Public License for more details.( y0 r8 U4 r: B, h7 e* q
  23. */
    ; z5 Y6 M7 B* P3 C9 N7 W! X, _) O
  24. % M* ^9 U  `$ `3 R6 M
  25. #include <linux/module.h>
    " S# Y1 S9 f8 ^5 t5 j$ N6 I. \
  26. #include <linux/init.h># ]; J0 K) e' R- c* ]  x
  27. #include <linux/errno.h>, ?9 h( s: f/ }  `9 i
  28. #include <linux/types.h>
    7 g1 f5 M# u. w# B
  29. #include <linux/interrupt.h>
    8 V0 q* t# r( C
  30. #include <asm/io.h>. ^# A6 Y+ b! H
  31. #include <linux/moduleparam.h>
    ! O# ]/ N- F# }& f5 n5 M
  32. #include <linux/sysctl.h>5 E1 B+ a2 U# u& y2 W
  33. #include <linux/mm.h>
    ' I: n0 _, r, B: i7 s
  34. #include <linux/dma-mapping.h>. I" g2 u7 R' b; Z6 C
  35. ) W4 j8 M/ c# V, u2 V( u% Q
  36. #include <mach/memory.h>
    8 O- S1 b4 ~: U
  37. #include <mach/hardware.h>% X: [! _7 N/ J  [0 L8 \
  38. #include <mach/irqs.h>$ e; M, C0 _3 h
  39. #include <asm/hardware/edma.h>
    6 f( C2 S0 a9 r

  40. ! Z4 Z! l1 {' t8 p9 r; r
  41. #undef EDMA3_DEBUG
    7 a  P" w6 W0 }# f& n; {) p" A
  42. /*#define EDMA3_DEBUG*/- P7 ]: {* [$ I4 z

  43. % Y, {8 J$ ~5 o# T5 J1 g$ N
  44. #ifdef EDMA3_DEBUG+ w* u8 t+ p$ K0 z# V) v
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)# ?/ g8 b# k' W1 F  h
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__). p0 f- I7 L7 P$ ]8 W1 v# q. z! K* R
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    " ^: d+ g8 Y. V9 T0 c" d
  48. #else
    2 I; I6 U6 H3 b" h$ G" v
  49. #define DMA_PRINTK( x... )
    ( Z& U8 V0 J) W% K. K; f: N
  50. #define DMA_FN_IN5 H% Y7 l. Z: t' W) ^& S8 W& m
  51. #define DMA_FN_OUT
    ! }  k; |- Y: _! ]+ Q2 G
  52. #endif
    4 `1 h( b! m" S* S2 J% ?

  53. ) N; T2 L5 o: s  j- \
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 Q# l+ E' @3 ~; N
  55. #define STATIC_SHIFT                3
    0 g2 A4 T2 {+ J( l, m- d3 O4 X
  56. #define TCINTEN_SHIFT               200 D) d9 D) c2 @9 [3 a4 X# D+ ]
  57. #define ITCINTEN_SHIFT              21" Y/ J& T1 I- p- C
  58. #define TCCHEN_SHIFT                22
    8 q+ w# |# L3 A* l6 _  ?2 l: B
  59. #define ITCCHEN_SHIFT               23
    ' J$ T. [' |. Y5 G! m

  60. 2 @* R' K% g' t9 u
  61. static volatile int irqraised1 = 0;6 K3 k: S2 [/ c& q3 h* g! c! b
  62. static volatile int irqraised2 = 0;9 Q7 x0 i" |2 D/ u& f6 I

  63. 7 X$ a2 x! M% |- O) d& Y1 a
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , P3 d; [/ ?: s8 N; }; J" ^$ a
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . K2 m! V5 V3 Q# K; ~% _
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - R3 z  C2 q9 z! }& k6 E, p

  67. 9 b( d4 V4 ~8 X  v
  68. dma_addr_t dmaphyssrc1 = 0;
    7 ^* N: F9 ?) m) r5 r8 @
  69. dma_addr_t dmaphyssrc2 = 0;
    ' D% p9 ^* f  V+ z3 i
  70. dma_addr_t dmaphysdest1 = 0;
    1 t- d6 n% w; o% o
  71. dma_addr_t dmaphysdest2 = 0;1 v3 z5 |1 Z0 b# [, d  ?3 L
  72. $ V# v( D9 q/ v# `7 g& D7 w
  73. char *dmabufsrc1 = NULL;- `1 e% W; a, `& U$ n
  74. char *dmabufsrc2 = NULL;
    2 s: R5 S) U6 |" T
  75. char *dmabufdest1 = NULL;
    " G! s8 ^# V3 ^
  76. char *dmabufdest2 = NULL;8 R3 k% Q% l+ U1 d5 U

  77. . C  G2 A0 U7 h! H% z, Z
  78. static int acnt = 512;
    1 _! R  [2 }8 a' C0 }0 D
  79. static int bcnt = 8;: y7 b) b' H7 S4 G5 X2 z
  80. static int ccnt = 8;  Z3 N$ u) M6 a2 j4 H' r8 f
  81. , C1 n2 o1 O: i( i: w7 ]
  82. module_param(acnt, int, S_IRUGO);+ c% I, d" ?# @0 M6 W
  83. module_param(bcnt, int, S_IRUGO);8 X' ~' }: p! q/ I' z. g
  84. module_param(ccnt, int, S_IRUGO);
复制代码
* n7 B! O! j1 R. x+ j

  L2 \1 j2 P* T% C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用3 n" h3 E% O  [' j& r* V( j
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# W0 ~, a' A0 ]- n1 R, m1 V
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
' h0 \0 J: t/ C) G' H) M7 p* u! @0 C. E2 {6 G% f2 J
2 |( f. {: L6 ?  Y, F! U; v. w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|嵌入式开发者社区 ( 粤ICP备15055271号

GMT+8, 2025-12-12 02:31 , Processed in 0.039425 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

快速回复 返回顶部 返回列表