OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 w9 }$ S! ^4 m3 Z( u. m
  1. [code]EDMA sample test application# b3 `# w) H* A
  2. /*
    $ K; I5 x* Q0 E5 T% K/ e1 {! i
  3. * edma_test.c
    1 w1 z0 G. \- I/ z' c
  4. *
    # y* o$ n, d/ w9 C3 }
  5. * brief  EDMA3 Test Application( l7 L+ o3 q  d  M1 V( F" H
  6. *+ w3 `) T/ h) o; m' j* o
  7. *   This file contains EDMA3 Test code.1 k& N$ D, M, H" s" C
  8. *
    ! ^: k. c5 s! F! C( H
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' s4 P& o4 O, ~6 H6 D7 v  l, S
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
      `8 R3 E8 }# C
  11. *         TO CHANGE.
    # Y5 G: B& Z0 p5 q. z6 T
  12. *
    6 S, V- n' ~+ |- e& q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    & K" S" \, N7 V. r% @' D  [
  14. *
    & `& z: q1 @1 p, |5 L7 B/ y/ x" G
  15. * This program is free software; you can redistribute it and/or
    - C) x0 p" w, b+ f. s3 ]# v" j
  16. * modify it under the terms of the GNU General Public License as
    + Y5 z, v) s5 C
  17. * published by the Free Software Foundation version 2.
    0 g1 Y$ e# S( Q4 j7 C3 m2 T  _
  18. *  V" j) A% x: m2 d  X
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    : U0 s" H$ c$ F
  20. * kind, whether express or implied; without even the implied warranty
    # `' h: P* T' @
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      _7 V- J8 t* v# p* ~' D  A4 P- r
  22. * GNU General Public License for more details.: P: W& v2 h) N4 K. w
  23. */
    1 o5 g4 m' r+ N9 G- H. `1 q
  24. 5 M, q. [$ o5 [) P' i* u' S
  25. #include <linux/module.h>
    4 R5 |. @' q: e. y( u2 b! ^4 R0 z
  26. #include <linux/init.h>( K& U: L( G. ?
  27. #include <linux/errno.h>
    $ V; S6 _2 m% k3 X/ a. d1 ?
  28. #include <linux/types.h>" f6 N# X* p3 R
  29. #include <linux/interrupt.h>
    ) l  r7 r* h3 k6 {' R% `
  30. #include <asm/io.h>
    6 h" s2 o5 K, a( o) A) S6 K" W* @
  31. #include <linux/moduleparam.h>0 P, k* l/ l1 y! @( j" P
  32. #include <linux/sysctl.h>
    0 d! }( k( j0 _2 H9 f$ ~; M. \6 @
  33. #include <linux/mm.h>
    ! @" X/ m5 O7 p- J" a7 r* x; g. ~
  34. #include <linux/dma-mapping.h>& y8 X8 u; u7 O, T& ?( c

  35. - }  @$ p9 \& U  h( I: I
  36. #include <mach/memory.h>
    8 y' {+ w; J- i) M+ L9 h$ [+ T! N/ R
  37. #include <mach/hardware.h>
    3 P) z- Z/ w+ B1 e% m
  38. #include <mach/irqs.h>
    * Q" w: [% H  I& @
  39. #include <asm/hardware/edma.h>; N, z( \5 ]  k3 t) K; X
  40. * C, _0 F. C* z; ~- ?4 W
  41. #undef EDMA3_DEBUG
    " F. N# X3 [+ P& Y: |2 U& C% K
  42. /*#define EDMA3_DEBUG*/, r# B2 c0 `7 a! N

  43. $ i8 i! P, m4 I, b) i  G
  44. #ifdef EDMA3_DEBUG
    $ y0 P6 V) u- D; U. t" e
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    3 {5 I; |% M9 @8 Z6 i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    5 W: V6 y7 d! n# l8 ^
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)+ Z9 B* m# E' ~3 Q: q
  48. #else7 q2 x2 H, `1 M: a1 z0 c5 y  \
  49. #define DMA_PRINTK( x... )
    / F! G( @9 T9 I8 m4 H( ?4 }. O
  50. #define DMA_FN_IN) q+ d* T' F5 `& S) j. q+ C
  51. #define DMA_FN_OUT
    ; Y+ p( A, K$ s  e3 C
  52. #endif
    ; r! _& g8 v4 ]( q

  53. 4 V$ @( b: J2 k% m. M4 c5 ?$ N2 J
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    * @0 `6 M$ L3 Z; N5 k4 Q$ z5 f
  55. #define STATIC_SHIFT                3+ M9 |' A7 F/ b. t$ {' U! l- V
  56. #define TCINTEN_SHIFT               20
    ; O8 l  M6 c7 Q) K6 P, N
  57. #define ITCINTEN_SHIFT              21$ ]+ U8 o1 f0 q3 _4 P9 u4 H
  58. #define TCCHEN_SHIFT                22
    4 C& }$ c1 c& Y/ Q8 v
  59. #define ITCCHEN_SHIFT               23
    & n% f& f: B' H+ M4 D

  60. " {! g8 R' S% Q; e9 \' i6 J  u6 S
  61. static volatile int irqraised1 = 0;
    ( f, r/ j  V' F& K9 p
  62. static volatile int irqraised2 = 0;' K# G# U* ^$ c/ [( v, ^2 q

  63. . S8 o  j- D+ p4 k
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( Q9 u2 i+ x4 b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ w/ v; T( r$ _/ ~2 `' z5 z
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 I! ?: W, F5 N! E

  67. & b7 @  U$ \4 s/ g$ }
  68. dma_addr_t dmaphyssrc1 = 0;  d4 m; g  N+ _/ }) q) }8 N
  69. dma_addr_t dmaphyssrc2 = 0;4 ^5 g& K- G+ n; x1 q9 L7 J: z
  70. dma_addr_t dmaphysdest1 = 0;
      y0 t5 v2 Y2 w2 K' z6 e# G9 M, a1 D
  71. dma_addr_t dmaphysdest2 = 0;0 ~* Z0 l2 M) v

  72. 8 Y* {. B5 r  ?& m
  73. char *dmabufsrc1 = NULL;
    2 P; O. e- q6 [) }$ P9 `% ^
  74. char *dmabufsrc2 = NULL;
    6 J; @- k1 Z4 Z# i
  75. char *dmabufdest1 = NULL;+ Z! v7 X$ R% v3 ^, S, T, |4 L, a& J
  76. char *dmabufdest2 = NULL;. L, N5 H5 e* [' d- E) y
  77. 5 b) h3 D( x. l& @
  78. static int acnt = 512;
    % j$ J3 }0 n! t$ r7 w
  79. static int bcnt = 8;) t. a7 E5 b% E1 j" q1 L4 j
  80. static int ccnt = 8;
    ' m6 `, v2 n7 e/ m

  81. 7 J) [* O! \, \
  82. module_param(acnt, int, S_IRUGO);
    . Q5 A# N! p2 p/ D2 Y" m. G! n
  83. module_param(bcnt, int, S_IRUGO);
      N& K+ F2 M/ k* a+ ?/ P- y
  84. module_param(ccnt, int, S_IRUGO);
复制代码

2 N: Q4 r4 z$ K, u2 d+ f4 i: ^- f% i7 b# d3 R  [
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用3 x5 l$ D& P+ _$ H, O9 ~1 B' ]3 W
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
, V5 H. N$ r9 r% z: y     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。( s3 b4 r1 U! }$ v$ O0 _, K

. m/ i# }8 V' a" W. m
1 \) M. d, Y6 _8 _! t$ e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-1-30 01:05 , Processed in 0.038649 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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