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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
2 d$ D. T5 Y$ J3 Z1 [7 @) b
  1. [code]EDMA sample test application, y( x7 b5 @/ U7 _6 U) ?& B
  2. /*
    2 {/ @5 V( g- ?
  3. * edma_test.c
    5 S: A1 Y; a# P
  4. *
      s- [9 ^  O- \" i( t
  5. * brief  EDMA3 Test Application1 [9 E9 M3 [+ |5 i# S$ T- v
  6. *% y1 w7 E9 e1 r1 b
  7. *   This file contains EDMA3 Test code.- [6 b) Y1 Y! G9 q" S* v
  8. ** s, V3 ?( Y7 C+ Z5 }# j+ g7 u0 |
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    2 U% Q  k0 x+ |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT$ j  A, W' v8 M/ j' t
  11. *         TO CHANGE.
    % X1 `$ I8 ]; B4 k( Y" j, r0 S6 M0 W
  12. *
    & O( q7 N0 i+ a
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ( b$ P7 g; g) @6 e
  14. *
      u. e, T- {9 m* k5 {
  15. * This program is free software; you can redistribute it and/or
    / s/ r4 W, C- K* J! k0 J( N' J
  16. * modify it under the terms of the GNU General Public License as9 V$ a9 l* I* ^2 ]& i& Q
  17. * published by the Free Software Foundation version 2.
    ( l. I6 H$ d  }) ~. v( b
  18. *9 P6 }4 J$ |- i
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    - {2 F, F- m9 ~8 U
  20. * kind, whether express or implied; without even the implied warranty- W$ ~* J; T7 I4 ^- a, J  q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    & _4 P' Q  H0 }* E0 w3 T
  22. * GNU General Public License for more details.
    2 r# \2 v3 D+ }- q
  23. */
    1 i- P) d- Q8 c% U
  24. 4 I0 z$ W" ^& A# N! A
  25. #include <linux/module.h>
    3 u) T0 P, R. @. k" R4 ~+ c: H
  26. #include <linux/init.h>; ^  h: ]9 K8 N
  27. #include <linux/errno.h>
    2 \/ m. ?/ c2 R1 a2 g5 \5 @9 A$ ~
  28. #include <linux/types.h>
    8 T$ X6 j% c8 b  x! @3 s
  29. #include <linux/interrupt.h>+ `% T2 w7 H  y/ q3 V
  30. #include <asm/io.h>
    4 Z& ]5 W, d1 \" N; U5 [
  31. #include <linux/moduleparam.h>. u7 P6 F# z6 G
  32. #include <linux/sysctl.h>
    7 Q& D! a* @! ]1 F2 P# n3 E- [
  33. #include <linux/mm.h>$ ^. I2 V& s* w' f
  34. #include <linux/dma-mapping.h>; r% j/ W9 i" d) i5 ?# L5 [) ?
  35. ; n: ?0 L( ?, X" ^' D. e$ R4 F
  36. #include <mach/memory.h>
    & U2 x! Q* T' {8 k4 K4 y) {
  37. #include <mach/hardware.h>! |3 r# X- Y* A" ^2 J
  38. #include <mach/irqs.h>( A3 M4 j* p, }* G
  39. #include <asm/hardware/edma.h>/ b8 Q3 P- o/ @3 c9 m5 I& y

  40. / }$ }6 v4 q/ |9 f$ y3 s1 @
  41. #undef EDMA3_DEBUG; v  X# ^5 q' s9 B0 q
  42. /*#define EDMA3_DEBUG*/+ q; b* `/ s& W" \
  43. ( G) t; Y1 Z9 P. a. Z; J3 K) ^
  44. #ifdef EDMA3_DEBUG
    9 h9 N7 K0 n2 K" n7 U
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
      M% m5 r& c* G' ^: }# w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__), D) J3 {! C9 z: Z
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& S' o9 `  ?* U& _( D6 I* [
  48. #else3 O, c; R! [9 L0 z5 ~
  49. #define DMA_PRINTK( x... )8 L9 S* K4 R4 k
  50. #define DMA_FN_IN" U# L! |' y0 p/ I8 z
  51. #define DMA_FN_OUT3 g4 A' G5 i1 S2 \
  52. #endif
    - T9 J2 F7 f& E+ ~+ O
  53. * G# W1 h; \. W& H
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    8 M/ M7 }3 [6 Y/ I
  55. #define STATIC_SHIFT                32 K6 }7 U6 z- i2 y9 ?
  56. #define TCINTEN_SHIFT               20
    8 j; e2 ^% i5 \' M$ U: Y* d
  57. #define ITCINTEN_SHIFT              21
    / b, q( L- o8 w$ z& |- _
  58. #define TCCHEN_SHIFT                22! j# n( b' I% _9 A9 \1 l$ y
  59. #define ITCCHEN_SHIFT               23
    / B) `9 ]" S( c  T8 H5 [. Z/ H

  60. 5 T! q/ y: `$ e$ Z- ]; }% a
  61. static volatile int irqraised1 = 0;' m$ p! N$ H( O& j) j4 D! |
  62. static volatile int irqraised2 = 0;
    5 _! V; I7 D* x3 x; B+ ?( b( G

  63. * S3 O- ^6 M# ?- p' f% `. I6 v# i
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 A2 p& N/ R9 S$ b- X- ^) b! g
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 L6 R$ M+ X5 {6 V* Q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  n' K* K' ~2 G

  67. & q+ p4 m! H/ s0 R- a5 v& K% c. o
  68. dma_addr_t dmaphyssrc1 = 0;
    8 G; B1 @+ b0 C- [$ z) J
  69. dma_addr_t dmaphyssrc2 = 0;
    3 I- q" o% T9 H% }9 S
  70. dma_addr_t dmaphysdest1 = 0;
    * d' s3 {3 m" U+ U9 \3 T5 [/ [& j$ ]1 Z
  71. dma_addr_t dmaphysdest2 = 0;
    ; i" d: K2 d7 e- E% |  d  e" ?

  72. 4 E+ k+ l( V; \5 T: C
  73. char *dmabufsrc1 = NULL;
    ; L% T/ H( B$ b
  74. char *dmabufsrc2 = NULL;
    & [9 K0 t. o- l2 z* o
  75. char *dmabufdest1 = NULL;
    * Q4 D4 f( e! j+ u# e
  76. char *dmabufdest2 = NULL;
    ! Q% z8 x, K9 b

  77. . |6 E  }) M& O9 j5 `( ~$ k
  78. static int acnt = 512;
    1 M& I5 `* t' \
  79. static int bcnt = 8;
    5 `+ j8 N1 o8 H& _
  80. static int ccnt = 8;# }( T, \( ?* }+ _; M" x3 k' e
  81. $ u  }& v& g+ H% P6 o3 C( s6 c
  82. module_param(acnt, int, S_IRUGO);3 r! V9 c. [3 s3 Q8 B, c
  83. module_param(bcnt, int, S_IRUGO);/ l" k+ O" ^; Q) c2 v
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ `; S/ C/ b! B/ o
7 P& v' `. c9 J# j
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用8 }, o1 l/ E5 {3 e- U$ \3 u
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。; }1 q$ R; z$ X9 C- u9 r4 k
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) l+ l5 D3 r3 O% J

1 F0 N4 v5 u4 F
3 C, Q7 H: y5 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 14:54 , Processed in 0.037351 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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