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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
4 c2 S2 W& x- M' y/ U
  1. [code]EDMA sample test application5 {' T) q! i2 z3 q
  2. /*' j1 j1 d# T" ^
  3. * edma_test.c  N( q7 R& ]1 H$ p
  4. *4 d# ~+ z, c* B* ^+ C$ n
  5. * brief  EDMA3 Test Application6 \- M, f. H# G( f  s
  6. *( N% u1 _  o* T8 J' U$ n- l2 n# z
  7. *   This file contains EDMA3 Test code.. m( ^5 E1 V1 F' T* F
  8. *
    0 F- [+ E, ^4 K9 C/ r$ W
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' ~' G+ w7 H! b4 V- T! _" k& v% `
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    " a: _* Q8 Q4 {0 t3 E, B
  11. *         TO CHANGE.4 T5 i" I0 B7 `+ ^3 ^. h: t
  12. *
    8 _2 o# t* u3 C3 N7 u( f+ y- V4 I/ W
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! r4 Y2 u1 I" ^' f# o5 [! @
  14. *6 h# J7 ~( d' I) S: _
  15. * This program is free software; you can redistribute it and/or5 ?8 a* ]; E& j9 ^1 `' p3 W3 Y' Z
  16. * modify it under the terms of the GNU General Public License as& i" ]( D2 J5 N  l! }" q1 H& u
  17. * published by the Free Software Foundation version 2.; ]' ^  X* J9 ]
  18. *+ U  v* B' ^$ E6 s$ a" Y( z4 A+ |
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any$ y  W; E9 N. p6 Y  ?8 X  v  w. g, a
  20. * kind, whether express or implied; without even the implied warranty
    7 f9 J1 {5 \. L2 R+ V
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0 k' d3 w: l+ N/ i' C* K7 ^
  22. * GNU General Public License for more details.
    5 c1 _: N0 e2 p6 D: t
  23. */! @( j5 Z6 _! }" }) P

  24. 6 Z) ]* t' X( m+ m$ t
  25. #include <linux/module.h>
    " E5 ^9 x5 ^, l) B
  26. #include <linux/init.h>0 {/ J: V; d8 D; M) o0 \$ R6 R
  27. #include <linux/errno.h>
    7 j9 f( o$ C+ v, V' Z5 n
  28. #include <linux/types.h>
    4 u( C, y) F7 q7 `
  29. #include <linux/interrupt.h>
    & }5 G, y2 ~, n/ [+ ?- N8 H
  30. #include <asm/io.h>
    4 C$ r, e) f2 w2 b
  31. #include <linux/moduleparam.h>
    $ N" {& o- N, T2 w$ T
  32. #include <linux/sysctl.h>
    $ S: ?6 O3 X: ^8 k+ I+ k" r/ p
  33. #include <linux/mm.h>
    2 N  ]  b. y4 B
  34. #include <linux/dma-mapping.h>: d5 x' s' _+ g6 |0 Y+ {
  35. & o: |8 `: Y( S% k! A7 i: S. x0 q/ T
  36. #include <mach/memory.h>. V# V% N) p6 T, V, R3 a, ?$ T
  37. #include <mach/hardware.h>
    7 W% y7 T% r3 O; R6 H0 t6 e
  38. #include <mach/irqs.h>
    ( K9 [0 `9 K; ^3 i
  39. #include <asm/hardware/edma.h>
    4 w* a4 Z' G( q6 p2 X
  40. # w! b9 X1 E9 I
  41. #undef EDMA3_DEBUG9 c9 @& P  r6 G# I- F& k
  42. /*#define EDMA3_DEBUG*/5 A& l# E4 S# ^
  43. $ S$ ~5 |: D7 w
  44. #ifdef EDMA3_DEBUG7 {( \+ W* ~5 R  y1 f1 c. k
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ( g0 k3 g0 d. e2 i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ r2 k+ i3 v2 u: J6 G9 f2 H
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 z% s& X( h8 [6 P) g4 j) I
  48. #else6 D# p8 Z( k" H+ J: w' \" L) d
  49. #define DMA_PRINTK( x... )7 L1 d& _  N: {) C2 ~. e0 J
  50. #define DMA_FN_IN
    % }' w1 \5 l& G
  51. #define DMA_FN_OUT
    2 q% n% `! L7 @8 U) z. g
  52. #endif$ W5 w/ {5 X+ [: s# I

  53. 4 H+ c1 K5 b* O$ @+ k
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768): V1 `; ^, B( ]7 `# @
  55. #define STATIC_SHIFT                36 G4 D8 i  z6 [  H/ C& }
  56. #define TCINTEN_SHIFT               20
    7 x/ U0 k% p# G5 x# U& K8 I' j5 R
  57. #define ITCINTEN_SHIFT              21$ q6 C8 o% P1 C5 p+ v& W
  58. #define TCCHEN_SHIFT                22
    * \- r9 r, u/ f% U7 H* ]0 a
  59. #define ITCCHEN_SHIFT               23
    3 X" T+ `% @0 s2 }* ?

  60. ) R/ @5 N) c) u* d
  61. static volatile int irqraised1 = 0;
    8 Z; A3 s+ A* G' q2 o4 G* C
  62. static volatile int irqraised2 = 0;  [2 F8 l& w8 ^

  63. 0 h8 n; y; r5 F
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * l$ k+ m! T2 C+ z: |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ U8 O- O; i& x, U' ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - i7 b+ d) m: a5 g1 U* Q

  67. : y, S, j5 j! u
  68. dma_addr_t dmaphyssrc1 = 0;$ R' @  x1 B# W+ ^  U5 F
  69. dma_addr_t dmaphyssrc2 = 0;/ B( ~) y, z! x+ u2 U: r  }& d, }
  70. dma_addr_t dmaphysdest1 = 0;
    4 L% Z# m9 \/ f) a
  71. dma_addr_t dmaphysdest2 = 0;% R( C. D2 t! h0 M7 n7 K" @2 |
  72. ) Q  K* u% C! d3 @& K
  73. char *dmabufsrc1 = NULL;
    & y, f( D2 o5 R) ]8 k3 ^3 y; e
  74. char *dmabufsrc2 = NULL;$ E  g1 j5 ^3 ~
  75. char *dmabufdest1 = NULL;
    3 z' {! X" b" X
  76. char *dmabufdest2 = NULL;
    * C% O" _& O* ]' z& e
  77. . o+ ]5 l$ q/ P% [
  78. static int acnt = 512;
    8 g$ ^4 w+ L! t7 ]; r1 N& d
  79. static int bcnt = 8;
    , c: t7 J% v- [! J* U$ B
  80. static int ccnt = 8;- ^8 k. l0 G) \1 r9 m6 T7 a
  81. & a, @( {2 k% b- g5 s4 m- O
  82. module_param(acnt, int, S_IRUGO);
    * r- X9 F# E( \; g4 `+ {
  83. module_param(bcnt, int, S_IRUGO);
    + u" V' j4 |% T2 t# Z+ @+ j
  84. module_param(ccnt, int, S_IRUGO);
复制代码

$ ~' ?9 m, _" I. q9 t  w
: w* Y1 \4 R( [* q- c+ h( W      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用( r1 _5 x$ O% t* l# @( \
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
- x0 T) I6 m! A     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 Z) ], \8 _+ v0 v3 u
" p4 w# S) I: J) r0 w
$ X5 {+ n( F6 s. @# ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-10 14:03 , Processed in 0.038491 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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