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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ E2 w/ ]+ [" o
  1. [code]EDMA sample test application4 z) z! E1 f7 }: Q. ?
  2. /*; N$ d5 K; T3 U
  3. * edma_test.c
    5 f$ ^/ b; v9 U1 Z, X
  4. *) c, \7 A4 B2 }$ Y
  5. * brief  EDMA3 Test Application- \0 k% [( @- z* e. J7 o2 H5 q& }
  6. *1 \9 R6 e  D! a, Z0 u
  7. *   This file contains EDMA3 Test code.6 V. v1 B! k8 Y& S
  8. *+ C- }( p5 e) P2 T$ K; c* c2 w
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( ]  v8 M$ t+ W* K! ]
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ( p- w; M; T$ w3 u# j
  11. *         TO CHANGE.
    3 `, O: |8 Y7 b) k$ r
  12. *1 b. z* \. f' \1 I
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    9 [$ K. K4 b& O" y8 x
  14. *# y* B! J0 y5 b0 v& O
  15. * This program is free software; you can redistribute it and/or/ q8 d7 C% }! N7 {: ^
  16. * modify it under the terms of the GNU General Public License as- ~: p+ c6 H- W- C" F
  17. * published by the Free Software Foundation version 2.
    ; V  c  o6 @% E+ |- f5 m
  18. *
    ( A: ~- E0 c  o7 T& t* K
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 y2 l/ X& Y7 A) a0 K4 v
  20. * kind, whether express or implied; without even the implied warranty# l* p  I: z, ^. f
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the) Z% S) A  e, v9 M" W
  22. * GNU General Public License for more details.( w& ?! Y! t% c" t8 t% p
  23. */
    " j& d; A- J8 C5 \

  24. 8 o- }$ `: _# G- W& f6 k7 y( d0 B3 e
  25. #include <linux/module.h>
    2 V+ ?) _8 [. l) i; C. r6 A1 x# ~
  26. #include <linux/init.h>
    % k. {1 }* @# y- u5 |7 o* M
  27. #include <linux/errno.h>: I5 C  m# c% L% }: C
  28. #include <linux/types.h>  r& J4 W( q: o( N% t. {% O
  29. #include <linux/interrupt.h>
    6 y3 F/ @7 w4 G0 d( r( E( a
  30. #include <asm/io.h>
    2 a5 M5 {$ }* j+ P" V% w
  31. #include <linux/moduleparam.h>9 z# P! y# G, T' d; d1 K  S
  32. #include <linux/sysctl.h>
    # p9 _9 B+ n7 i# P$ k2 k
  33. #include <linux/mm.h>4 d) k2 C6 k. I" l
  34. #include <linux/dma-mapping.h>
    % ]8 Y  V; ?4 X4 X  g

  35. & Q( x# u  L) ]$ Q9 |: b9 g3 Z& K
  36. #include <mach/memory.h>5 Y6 @1 \5 S! w( a. L
  37. #include <mach/hardware.h>' o8 @/ `. {1 B! `8 F: {
  38. #include <mach/irqs.h>6 C( n6 \- ^- h3 H
  39. #include <asm/hardware/edma.h>
    " p( }0 h% S" `4 z6 `
  40. * [8 Y! L  n- t- I- F& G
  41. #undef EDMA3_DEBUG+ u4 p6 M  M% w* E2 F
  42. /*#define EDMA3_DEBUG*/
    & u9 e2 m7 u9 J- g! p) K$ g; h
  43. 1 A9 t8 a2 ^) m* n5 x! k
  44. #ifdef EDMA3_DEBUG/ ^- B! v! I, \' B/ q- l/ @, N6 h6 U
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    6 s  H3 ?) A- k& i1 E
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    0 p' Y+ L  ~+ Z9 e  ?2 R4 Z$ m, r3 J; ]
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ' ]" b0 x) y4 _5 f" C+ t
  48. #else
    + x: \. m$ g( @' C, H
  49. #define DMA_PRINTK( x... ). S* |* c3 ]( b8 F% r: V# G% z7 k
  50. #define DMA_FN_IN
    ! n4 E7 ?5 ?4 d+ `+ z" A2 w. D: c
  51. #define DMA_FN_OUT
    % Z+ L' E+ t) b9 F; p- f) {9 h4 ^
  52. #endif  T! C- B" V7 ~
  53. 9 v+ K& b" S# g9 C; ?# q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ! L. W0 e7 ]9 i. Q/ [4 t' N" ?5 |
  55. #define STATIC_SHIFT                3
    7 C9 H8 g& G: B' H) y1 k
  56. #define TCINTEN_SHIFT               20
    * O$ v- d4 W2 `( J5 `
  57. #define ITCINTEN_SHIFT              21
    & \# e: C) W) P; b; V! I
  58. #define TCCHEN_SHIFT                22
    : ~1 N- v1 i7 u
  59. #define ITCCHEN_SHIFT               23- B6 E% G! Q' m% A; j& ?  T5 ^
  60. 7 U- n  e  Y0 D, ^
  61. static volatile int irqraised1 = 0;' a" |: k$ a3 W2 P8 M: R5 y+ u% B
  62. static volatile int irqraised2 = 0;% x. X: j6 H/ U- f6 J& E+ @0 D
  63. , v& R) L- U( C  `, `
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) r$ H( P- N: {# ?+ o# G& ?4 k$ P
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 ~2 Y) a: f$ u
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 r2 c" q. O; T: V  y3 X. K% U

  67. 1 i$ m& J. M# t7 v
  68. dma_addr_t dmaphyssrc1 = 0;
    3 T7 {9 C4 F' y) S9 ^6 U
  69. dma_addr_t dmaphyssrc2 = 0;
    9 F- a- P' v- T7 a4 B% x; p
  70. dma_addr_t dmaphysdest1 = 0;
    4 D1 x# o2 q$ I6 X0 }
  71. dma_addr_t dmaphysdest2 = 0;
    * G- y; W) T# c
  72. 9 s1 a1 y% r3 Q" z- ?, X
  73. char *dmabufsrc1 = NULL;
    6 R  D: \5 {* r  u- H  S
  74. char *dmabufsrc2 = NULL;
    7 w( l: t. e$ ~3 b8 G8 T
  75. char *dmabufdest1 = NULL;0 S3 g- z. p  _5 k) W  a* B
  76. char *dmabufdest2 = NULL;* {/ f: L( B! ]  k: J

  77. * H3 }# p# _4 F8 S) b
  78. static int acnt = 512;2 m9 {1 ?: c+ x) F
  79. static int bcnt = 8;% B9 B" F$ p+ }" o, j& P! p' j
  80. static int ccnt = 8;) P# t! m9 r& M' ?7 h
  81. ( X4 W* X- u# Y1 |
  82. module_param(acnt, int, S_IRUGO);2 @: I: I3 }; l9 W+ m. k2 z* |
  83. module_param(bcnt, int, S_IRUGO);
    0 f- {9 c5 o; a6 `6 ]- b4 ~
  84. module_param(ccnt, int, S_IRUGO);
复制代码

1 E. Q& ]* v0 t& E7 ?% Z; z
1 g5 m- V/ c" m* N9 g      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 v5 N, N7 k8 J0 _$ Y( xarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。$ B' r+ Y( m' A
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) i: i& U; M1 n8 `; ]$ n; a

  ^3 V! ^' X: D3 }4 W$ ^0 X% a
8 V  y% S/ \$ ]: A1 c  x/ B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 07:47 , Processed in 0.041010 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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