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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 - c0 a  }( ]% R: ~
  1. [code]EDMA sample test application* y. g% V! H4 o0 R
  2. /*4 R* ~6 r& _2 `) R8 T
  3. * edma_test.c; t6 L0 {1 p8 F1 t. q6 K3 d. n
  4. */ W: B5 x: r' s
  5. * brief  EDMA3 Test Application1 Y1 S( l3 p. t
  6. *" h0 K/ X* J1 t: U
  7. *   This file contains EDMA3 Test code.
    7 P& j1 d8 u; N4 a1 x! ]/ i
  8. *1 A: }9 y' l8 O, x. K3 \* S
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    * C- f8 c" e1 {) R! Q+ F1 T
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    $ e/ \+ K# F$ |" u! {
  11. *         TO CHANGE.
    - H: q8 e8 n& |) L/ \: {, |
  12. *
    ' F0 n' v& \3 }. J+ g. o( y: l
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  }3 H4 O6 l. w  s8 i! I
  14. *: Y( M) F3 `9 R* p( u
  15. * This program is free software; you can redistribute it and/or
    # L0 }# m4 U: ~+ v" V
  16. * modify it under the terms of the GNU General Public License as
    ( i/ }0 r8 `% l" h
  17. * published by the Free Software Foundation version 2.
    2 c5 M* F* \0 L
  18. *: l" E, v) ?/ w, j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ( p2 y8 l/ f; U2 I( A
  20. * kind, whether express or implied; without even the implied warranty) V$ V- @- O, j+ u* C& g# K
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9 p. u2 x) v  y. R* z5 a2 ]
  22. * GNU General Public License for more details.! s, \4 l2 m0 E% [4 X7 j2 x9 T2 W
  23. */
    ! @2 q; y0 a& r

  24. : H; q$ `4 U  c- F: s3 W# }" k& f
  25. #include <linux/module.h>: }; M7 k2 K- p. J# t
  26. #include <linux/init.h>
    2 n3 ]. l+ A: A1 O6 O
  27. #include <linux/errno.h>  i+ F8 b( S6 f$ W8 _8 c, G
  28. #include <linux/types.h>5 v* h* V1 D$ [$ D1 p4 F, h* a, d
  29. #include <linux/interrupt.h>. u- \$ v3 e) u$ }
  30. #include <asm/io.h>6 e  ]- \9 T& l; b3 j
  31. #include <linux/moduleparam.h>: `  L. u" h, |/ |
  32. #include <linux/sysctl.h>0 _5 m: @- q0 ^; g
  33. #include <linux/mm.h>
    , W5 p( _( c; G/ D
  34. #include <linux/dma-mapping.h>% ]* h7 P, V  u8 ~9 N9 `

  35. # I, F5 d/ T! k* e5 N
  36. #include <mach/memory.h>: b& s+ _2 N* j
  37. #include <mach/hardware.h>
    ; g6 i+ a* N* \
  38. #include <mach/irqs.h>5 L7 W( M5 C# k6 @8 P
  39. #include <asm/hardware/edma.h>2 }/ g0 F, _4 |) Q' v; z. K

  40. " O! w: ?: `4 o3 X: I$ f
  41. #undef EDMA3_DEBUG. Q9 B' B. _: E/ h
  42. /*#define EDMA3_DEBUG*/
    - ]1 W' r+ O: ]4 O* y! \1 k

  43. ) x! i* k" x3 z/ B+ T% [2 k
  44. #ifdef EDMA3_DEBUG3 N) v" e3 u6 c% K# G# J
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    8 z0 s  j, Z  j; \% i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    . l9 S* ]2 S8 z9 i6 W
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 Z+ g2 L5 b4 V+ p. T  N3 D
  48. #else
    . u* k5 q, i8 w, p8 h
  49. #define DMA_PRINTK( x... )
    : j- E0 s# K% F( P$ y
  50. #define DMA_FN_IN
    ( S* H' Z! g3 g2 v
  51. #define DMA_FN_OUT
    . D, J0 f6 ^% J
  52. #endif
    1 H6 ~; h0 l- P0 Z% O$ S

  53. 9 W* S. |* U9 t2 q% H3 g$ h
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    & F# X8 h! E, `
  55. #define STATIC_SHIFT                3
    1 @$ {6 A& G* g% T* |) l' H
  56. #define TCINTEN_SHIFT               208 S' Y7 X8 d& k8 y. P* p
  57. #define ITCINTEN_SHIFT              21
    - K/ m+ c' S% |
  58. #define TCCHEN_SHIFT                22
    - W  }7 F& E5 z/ h8 x
  59. #define ITCCHEN_SHIFT               23
    6 \  K' p, Z9 `8 T
  60. ( m# p' e0 V4 D& K2 K# z9 ^
  61. static volatile int irqraised1 = 0;5 v$ R' F1 f! \5 B* N% W& P8 k$ K
  62. static volatile int irqraised2 = 0;
    2 W5 y4 x$ |) R& c( i+ l1 m

  63. " i2 Q; x3 j; T. K
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , o$ J7 S! t) [1 O" l* k$ \
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 u: I4 r  p8 P+ }" W4 _' E/ U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 T# y" f- a% O9 A( _5 h7 S7 x% R

  67. * a5 d5 z3 `& C% ^
  68. dma_addr_t dmaphyssrc1 = 0;
    3 l8 x& z! z' n9 {! q, ^
  69. dma_addr_t dmaphyssrc2 = 0;& _  S3 f. L6 J8 g1 V1 |9 B
  70. dma_addr_t dmaphysdest1 = 0;
    8 `8 |6 Z8 z& T5 Q; ^% v
  71. dma_addr_t dmaphysdest2 = 0;7 P, P8 l2 N7 x0 d! Z- t. T7 F
  72. / ^6 R; \+ w" I
  73. char *dmabufsrc1 = NULL;. Z) |; O, W5 i3 i
  74. char *dmabufsrc2 = NULL;- y* v' s! G2 G3 o
  75. char *dmabufdest1 = NULL;3 d/ d; N6 r) {* Z
  76. char *dmabufdest2 = NULL;. X6 t6 E' B  d4 @$ _

  77. * z; a. P& N5 U; _+ }* j# O
  78. static int acnt = 512;* \- A( F& i! x! ^9 I  p2 h
  79. static int bcnt = 8;
    * v3 m9 ^5 v' Y6 q0 A# L6 K2 P
  80. static int ccnt = 8;
    ( u7 E& I3 ^6 t( t  }

  81. ) h( Y; ^% ^4 P4 ]
  82. module_param(acnt, int, S_IRUGO);
    ! A& z4 ]% l. B$ J, C* w- A
  83. module_param(bcnt, int, S_IRUGO);
    / V  I- w  g0 V9 |& z$ Z
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 X" ^8 b* R- x
# P( ~, y2 ]. `' u
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
+ A: D6 ^. d5 {3 ~0 F+ o% Parm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# ~0 R; B. N7 n
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 x% A, e! y$ x3 _- D8 \/ M6 E
8 _4 \* M& S! E" {$ F8 b0 ^# m. ^: Y: y/ N/ z! x7 _+ n4 H6 X& F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 06:00 , Processed in 0.036940 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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