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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 + p1 ]5 ?4 J) e8 }) @+ |
  1. [code]EDMA sample test application
    ; R3 B8 a6 l& j
  2. /*' ~0 W. w) J4 R: x( H
  3. * edma_test.c9 E% H9 z* A- O( K: \
  4. *
    % |- A6 y3 r# k: o0 c
  5. * brief  EDMA3 Test Application3 ]6 i1 g2 \0 F7 V: k
  6. *
    1 W7 i! c4 ^5 N/ m6 Q
  7. *   This file contains EDMA3 Test code.
    $ K: n$ m+ n+ F: I
  8. *
    1 d8 @4 E* R! u; b7 H$ S/ ]7 T
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    $ m" M/ N* X6 c1 Z; ^* ?5 ^
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% i7 m: ]1 l/ J) m: V+ o
  11. *         TO CHANGE.
    6 o; {6 l. Q2 T8 b) }! q
  12. *" V7 L" m9 B  W, y# K) _! E% W0 j
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/* r- I5 V  U7 d
  14. *
    : j% C0 l( _" n$ H; n& P# C0 o$ I) _
  15. * This program is free software; you can redistribute it and/or
    3 {5 D2 ?' E1 w$ p
  16. * modify it under the terms of the GNU General Public License as
    ) M6 I" Z! @9 a  ]! h! e0 \+ G( `
  17. * published by the Free Software Foundation version 2.+ W; C- o5 _* `! t* ~- u
  18. *
    # Z& R# i/ y0 Y/ W7 P2 c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    1 @: M# L! b3 w% }+ ]
  20. * kind, whether express or implied; without even the implied warranty
    " Y! _% Q% p. c6 g
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the& y- @: {7 H6 d5 D
  22. * GNU General Public License for more details.
    2 O4 ^9 Y, [$ h& r( O% o. Z
  23. */
    ( b+ ?6 i; Z. X) I1 N, W
  24. $ Z7 }2 |* U. Q3 Z- t1 G  B
  25. #include <linux/module.h>
      w, W! f. T# s
  26. #include <linux/init.h>9 a  P1 @: I: d+ N
  27. #include <linux/errno.h>% k; G7 e' ?, D
  28. #include <linux/types.h>; @1 v  I/ K- ?. M) Z5 r( X; z, B
  29. #include <linux/interrupt.h>% p' Y: U9 T9 L. Y' n" k
  30. #include <asm/io.h>
    7 e+ h# p3 ^. O" {7 F
  31. #include <linux/moduleparam.h>
    , ~* E  k5 }5 p8 J; C
  32. #include <linux/sysctl.h>0 a% Q* D" P5 X& o
  33. #include <linux/mm.h>; t" _6 Y5 a% N! B: c! C) q  [
  34. #include <linux/dma-mapping.h>
    & i; g- O; j0 v& h  m+ N( ?! X! x, J
  35. 5 b' @) L% F% C) H$ Y
  36. #include <mach/memory.h>
    , Y3 J  ?2 m4 u% T/ \
  37. #include <mach/hardware.h>: q$ k+ |+ Q& J
  38. #include <mach/irqs.h>
    . Y8 O3 J4 e2 L' u  k. D, _6 Q
  39. #include <asm/hardware/edma.h>( r; d: N9 C- _$ w
  40. ! E0 v# d# t8 w8 o$ [
  41. #undef EDMA3_DEBUG
    2 T0 D. c# f# f
  42. /*#define EDMA3_DEBUG*/
    . A& ^; Q/ k9 I0 X# z

  43. 3 t2 E; C  T4 Q8 i
  44. #ifdef EDMA3_DEBUG
    1 ?  ?1 K7 v* u) ^6 e. j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 }8 P- V$ y% S$ i( h" U2 R
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ) ^/ e* ]) y- ^3 V' p
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    7 l3 u7 n8 k) h0 y! }
  48. #else  }6 B6 t: y9 N2 o* i4 y# T
  49. #define DMA_PRINTK( x... )
    3 Q0 T( k4 n% y5 n" n1 _
  50. #define DMA_FN_IN
    4 s7 y7 d3 J  @; x, ]3 J1 b/ ?( ~
  51. #define DMA_FN_OUT
    ' N% |* f$ H5 F% K
  52. #endif& ^" O! y. W+ h/ j- H0 q/ j& S5 n
  53. 8 ]# q! o( n8 F
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 t4 F6 m, q3 b' Z  [
  55. #define STATIC_SHIFT                3  N9 {  N- ^  i: r! ]
  56. #define TCINTEN_SHIFT               209 k+ r& C0 \+ a6 N
  57. #define ITCINTEN_SHIFT              218 ]( O6 J) X! s
  58. #define TCCHEN_SHIFT                22/ }) q4 e" N4 g/ c
  59. #define ITCCHEN_SHIFT               23
    ! w) K+ u1 G6 s. g/ k
  60. # t- J2 I8 n* }5 h5 Y5 J5 A
  61. static volatile int irqraised1 = 0;) C0 \& V" w% E( w0 H" k- n) B% C
  62. static volatile int irqraised2 = 0;2 R! m5 N  D+ Y% J
  63. : m2 M" r" ?" o
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 A0 B" e  i. n/ u/ {4 Z
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; R$ l) ~: Z( r& r6 N" O
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ s1 j& a! O- @% z5 J1 d
  67. ' |1 l* }7 h' l! U
  68. dma_addr_t dmaphyssrc1 = 0;0 h/ l- w7 Q% G; T  i+ X' }  N
  69. dma_addr_t dmaphyssrc2 = 0;
    4 E8 l, }3 J& x6 O) x* z  w2 g
  70. dma_addr_t dmaphysdest1 = 0;
    ) F6 Z6 u8 b2 Y* b4 i- o
  71. dma_addr_t dmaphysdest2 = 0;
    0 ?& c9 l' n- k; [; W) F/ U/ `

  72. / q- _+ h: t4 ]: g2 n+ `) {! j& {
  73. char *dmabufsrc1 = NULL;
    8 G- U0 C* g$ K5 n) J. [% C5 Y
  74. char *dmabufsrc2 = NULL;, j7 ?; O0 c  _$ M) S7 h( k
  75. char *dmabufdest1 = NULL;! s1 j% h; c9 x6 W; ~4 o# H, {
  76. char *dmabufdest2 = NULL;5 y+ d; k& `; g( s# p1 J% g: o; T

  77. $ {! w! ?$ ]9 A
  78. static int acnt = 512;
    2 }, Y9 G3 |6 t, C
  79. static int bcnt = 8;. m* ~( Y4 S- b- w
  80. static int ccnt = 8;
    1 s" N8 p! u: f: R
  81. 5 C" t+ i1 k% H
  82. module_param(acnt, int, S_IRUGO);
    $ w4 g" x; x" p  e' L& Y3 }; r/ z* n5 U
  83. module_param(bcnt, int, S_IRUGO);
    ! q9 }6 r, o' D+ ]" Q& a& |
  84. module_param(ccnt, int, S_IRUGO);
复制代码
) A3 r' }! g! s

, h' M% R) v, `8 W* {% a      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用" f2 x6 h. q% z2 y3 `& D
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。/ o/ `. F: {4 R# R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。9 t; S/ e( t! ~8 K" T
; r  y3 a$ _9 D, ?3 d# W& `3 u6 x

) V9 d# l2 W) {9 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-13 11:49 , Processed in 0.058700 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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