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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 V( ~6 F4 ]/ O$ b6 i
  1. [code]EDMA sample test application
    8 u% j& o  D0 h& F- P5 r$ P) [7 O
  2. /*
    2 u/ m3 G, z6 e1 d
  3. * edma_test.c
    2 B/ S  o5 M# ~. U
  4. *) ?" I5 @  V0 Q  a% c7 F0 q$ x+ [
  5. * brief  EDMA3 Test Application0 i: Y" ^1 W7 n7 X/ D
  6. */ r2 _; [& s6 T, E' N! m" c1 t
  7. *   This file contains EDMA3 Test code.
    ' Q* _+ ]9 F$ ]# e& X
  8. *
    % W% V4 B- Z2 }$ K( t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE& B4 b8 H4 v' E, y6 H1 E* ^# q. x
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    4 k) J4 |. L: {* {' F
  11. *         TO CHANGE.5 R8 Z5 k9 |* n+ l
  12. *$ K2 f, T& k5 d. u* q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    / l4 r6 ~! C+ X: C3 P; \  P! U
  14. *) d5 E4 I7 n% h$ H! Z
  15. * This program is free software; you can redistribute it and/or
    + Y! f3 K4 X6 B: h8 `
  16. * modify it under the terms of the GNU General Public License as
    4 ]( @  I6 c: z$ F
  17. * published by the Free Software Foundation version 2.
    / d  Y7 H% r8 g
  18. *, S2 s! Y  r" }
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any  _  w) b, s$ J% |7 u$ b+ g  M, m
  20. * kind, whether express or implied; without even the implied warranty
    ' U# T/ ?! _/ ^
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the. k$ B' t: T: I# p  Z; U
  22. * GNU General Public License for more details.
    ) L; x7 e) E4 P2 _+ ^
  23. */
    ' J) ?% l# r! W% c% W/ R* I& W" {

  24. . Z) o; ]" X0 o0 @4 ]' Z5 V
  25. #include <linux/module.h>
      C8 b- J6 w9 E' f* m% J; O& D; b3 o
  26. #include <linux/init.h>( D( V" _  ]. x- R) w
  27. #include <linux/errno.h>8 y6 P* ]2 Y& c  W  w5 \6 ^
  28. #include <linux/types.h>' L; M! J3 \" ~$ z  X1 J/ P
  29. #include <linux/interrupt.h>
    , {8 T/ A  u: @5 k/ `8 ~, B
  30. #include <asm/io.h>
    ; |& V* U. Q* Z+ }3 X
  31. #include <linux/moduleparam.h>
    $ f% _8 o! W8 ^+ I) F; M, f
  32. #include <linux/sysctl.h>7 _* F) n# T4 N6 x
  33. #include <linux/mm.h>
    & n8 Y$ ?/ g, u& m: q$ b
  34. #include <linux/dma-mapping.h>* z& m% X. k6 F; u% A7 j( O
  35. $ C0 J- `& v( B" K
  36. #include <mach/memory.h>
    8 p$ F& Q' x& k% _
  37. #include <mach/hardware.h>
    * Z6 v  e% R# e8 @4 K
  38. #include <mach/irqs.h>
    & t9 w# ?, e5 [' K5 u
  39. #include <asm/hardware/edma.h>
    , Q/ h! S7 L* v$ `1 w  Q2 D& d2 J- Z

  40. ( V3 P; G" I* j" p
  41. #undef EDMA3_DEBUG
    1 C& ^  I1 k# j, `! i
  42. /*#define EDMA3_DEBUG*/8 N, n& F% `: L9 O
  43. * b7 d/ m9 r5 z: v& u$ M' Z
  44. #ifdef EDMA3_DEBUG  @! _8 k2 u2 a0 c9 E5 f
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) h2 Z/ P4 I7 ^7 A
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)& w" m  v5 y8 D
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    - S; @+ j  u  k, b  v; h( a) T
  48. #else$ H/ B+ N; u9 Z% @( F- b5 l* F; |6 ^
  49. #define DMA_PRINTK( x... )
    ( ?, J1 Q* Y: R) D' t) a+ X
  50. #define DMA_FN_IN" {0 x0 j  ~$ ?+ Y- o
  51. #define DMA_FN_OUT
    " A: Q$ Q2 P) o& c3 {* }) t: t4 X
  52. #endif
    , ?& v  Y' u4 W( [& ]8 U* a2 ]

  53. + b# ]1 _, e. ]/ ?
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)- b- [( C, ^% T8 G9 k' D
  55. #define STATIC_SHIFT                3
    + M" ?+ n  i  m! R
  56. #define TCINTEN_SHIFT               20
    # @* S9 F9 m* R+ X
  57. #define ITCINTEN_SHIFT              21
    7 Z4 ^2 i1 C  j# x
  58. #define TCCHEN_SHIFT                225 k. Q: s% n0 ?/ D7 l
  59. #define ITCCHEN_SHIFT               23/ G/ A4 f* J- T5 L0 t
  60.   ~8 v. h5 v8 k! L( a- D7 ]6 ]# I2 H- g
  61. static volatile int irqraised1 = 0;
    1 R: Z. D1 f" U( a1 H9 I
  62. static volatile int irqraised2 = 0;& O# J& F7 Y  V3 Z' ?. ]. a
  63. , z, d/ n7 q3 x) t( x" }$ J$ B
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 t5 M' n6 S8 O' g# N+ h, r
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) X: `# p. U' ^1 g6 L# L
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; I" e% N/ @" l% c) Y
  67. 7 V. O+ D/ y! ?3 I
  68. dma_addr_t dmaphyssrc1 = 0;  g6 s8 O+ O8 J( V- l" ^9 d' r/ j" b
  69. dma_addr_t dmaphyssrc2 = 0;
    6 m  {/ n+ ?9 L, F* [9 b8 ^
  70. dma_addr_t dmaphysdest1 = 0;
    2 H9 B) ~. O$ r8 A
  71. dma_addr_t dmaphysdest2 = 0;
    2 J: r. i0 s+ ]7 \( }
  72. ) c# ]( A1 Y% }% g- m, F/ I& Z: q
  73. char *dmabufsrc1 = NULL;
    & i4 i8 r5 `2 R, w
  74. char *dmabufsrc2 = NULL;
    5 [+ d8 Y; x4 n- O$ L+ k8 }
  75. char *dmabufdest1 = NULL;7 A' Y' i5 I/ m8 ]# z4 o
  76. char *dmabufdest2 = NULL;: t+ e* B1 F8 S

  77. * k) P3 ?& b: i1 F3 g
  78. static int acnt = 512;
    ) g9 `! ^# }, |! L! X3 A6 H; l: u
  79. static int bcnt = 8;0 l! r8 Z9 ^# ^/ l/ Z
  80. static int ccnt = 8;
    ) ]/ ]4 A, r% U2 O- h- ^5 p9 x. q1 [* a
  81. 5 l; J( l" Z) Y' o5 u8 @2 H6 P
  82. module_param(acnt, int, S_IRUGO);& K7 g9 z( U. b3 n$ C
  83. module_param(bcnt, int, S_IRUGO);
    8 w9 n5 e) d' c5 K+ \$ {& J
  84. module_param(ccnt, int, S_IRUGO);
复制代码
; w' ~3 m. [& x; t' ^
, {# t/ B, `; C/ G0 D
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用% C: `5 ~1 E" q! Z! 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
/ O' b7 v+ e$ Y* D     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。; X$ J: [  ~$ }) q5 k& @; i9 w

: p! t* x5 ^8 y" u& ~
5 g' T. @1 H. H; z" L1 G4 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-11 04:00 , Processed in 0.048489 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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