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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 " Z4 q4 ^( C  `, X1 ]
  1. [code]EDMA sample test application
    ' K9 k% K, M: i
  2. /*
    $ c$ T9 R, D" H, x& A9 j  K% C
  3. * edma_test.c- D* i5 V( q) G* q$ D
  4. *
    + B% A" h$ `/ s! t! z3 n) B
  5. * brief  EDMA3 Test Application
    2 ~9 S2 x' ~: a6 j* `# J; |
  6. *
    / l( c0 _! B9 R" [" }' ]1 i
  7. *   This file contains EDMA3 Test code.: @8 z! d! i* g8 l2 B; n! w
  8. *
    + P# x0 i' S/ X7 V; L
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE) [+ {# h9 ~  Q( C/ i# x7 A
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 u. T8 c: g3 }- E* L& N
  11. *         TO CHANGE.' s: K! _1 D. @. O
  12. *4 S5 K! u0 R9 ^1 ?
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    : B& ~9 z  M$ \9 C3 ^: `- D
  14. *
    4 k. X+ k- `* N: I' x$ @1 H, q
  15. * This program is free software; you can redistribute it and/or% t) ?$ _; ]/ C% G
  16. * modify it under the terms of the GNU General Public License as; O, [! i9 T; V$ r
  17. * published by the Free Software Foundation version 2.
    5 }! ]  M2 h. D3 S( z) Z
  18. *5 o7 P4 \+ W# z3 D1 B( q
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 ]& T) ]" V+ T5 z
  20. * kind, whether express or implied; without even the implied warranty
    * D# V# d* H, u; @1 N
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ U0 e3 V0 V7 g& Q/ |/ l/ j
  22. * GNU General Public License for more details., Y! Z5 T9 {( C( b
  23. */: P4 S+ D+ Q, ^, e, s& t

  24. & X) d9 Y7 J" w& \2 [2 S0 F' c+ J
  25. #include <linux/module.h># n+ C9 h# G/ k! V1 i9 Y7 ]8 g
  26. #include <linux/init.h>
    / M6 L7 I* C' `6 r) q1 V
  27. #include <linux/errno.h>
    4 x& N- z7 K$ E" h, ?1 n
  28. #include <linux/types.h>7 ?6 }9 d! S# {3 P( ]
  29. #include <linux/interrupt.h>. \' `% O" O0 @4 T( H
  30. #include <asm/io.h>! c/ ~. N$ p: T, F, W
  31. #include <linux/moduleparam.h>+ f  C4 S6 ^+ ?- _# \0 O
  32. #include <linux/sysctl.h>: _  f) Y; w6 E
  33. #include <linux/mm.h>
    . P$ A$ K* T% Q6 `5 F
  34. #include <linux/dma-mapping.h>+ s1 h1 f: q" S- }& q

  35. # o# i% c+ t& _* s
  36. #include <mach/memory.h>" E3 E3 V4 i9 P2 u
  37. #include <mach/hardware.h>) t( D6 {3 y, {! J4 Z* }
  38. #include <mach/irqs.h># {2 N0 w3 b% s7 _# s. U6 g  w
  39. #include <asm/hardware/edma.h>1 w  M5 T3 y) L5 N- L9 n4 t

  40. 3 E4 f0 q$ E7 Y. @3 I. O: l8 `6 a- Z" R# m
  41. #undef EDMA3_DEBUG
    ) y9 w9 t2 t8 k6 S7 d1 P1 C2 t& c, F
  42. /*#define EDMA3_DEBUG*/: A; C; c$ N! X4 C
  43. 6 h% P& F1 H9 O4 Z
  44. #ifdef EDMA3_DEBUG
    * v, B9 G$ o. o  X2 H" }
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    , m, y. P& p$ O) ?4 z$ D; \- i+ i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    7 L( E/ O! x5 E. Y" I$ f7 A6 m6 n% ^
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 o$ Q8 D/ d$ b! [4 j0 [3 Q
  48. #else8 }. |6 h) }( M6 P  [5 c  y
  49. #define DMA_PRINTK( x... )  U9 q, J0 ?1 L+ X% ]! l
  50. #define DMA_FN_IN( _! L7 O, h: f) T. u
  51. #define DMA_FN_OUT; s. U7 ?) ?# n. s& g' V
  52. #endif4 x6 Y; w; \/ u1 J
  53. ) h0 n" S; S. w. t- Y& ?- ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)& i8 g* l# p0 r, f: ]9 f0 y
  55. #define STATIC_SHIFT                3
    / Z& K/ u1 A+ }3 Q; `1 B
  56. #define TCINTEN_SHIFT               203 ~5 ^, R# W# @' d! a
  57. #define ITCINTEN_SHIFT              21. k$ B  O, N) V9 W& C
  58. #define TCCHEN_SHIFT                220 s; v( ]5 s' L" C4 K6 B# Y: l) N
  59. #define ITCCHEN_SHIFT               23: X* I* _/ Y/ l7 X- Z2 w

  60. ' k9 E5 T& A' f1 L
  61. static volatile int irqraised1 = 0;
    + p7 [6 |7 K$ f# C
  62. static volatile int irqraised2 = 0;
    . V, e# }' b, @8 o8 x! w( l

  63. ' W% v) B- s/ ]/ ]6 I7 X
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# J6 m- E2 p2 A0 }( a7 s
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' o4 C, P- N& k4 r
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . T8 `% C9 I# K+ U

  67. - a! L7 E- y9 W0 b8 z- T+ h, R3 ?% s
  68. dma_addr_t dmaphyssrc1 = 0;
    & Q6 v* r( @8 `& N5 a: D, F6 u
  69. dma_addr_t dmaphyssrc2 = 0;
    + m+ f5 o5 h8 Q
  70. dma_addr_t dmaphysdest1 = 0;2 Q  b( q) p2 f" X
  71. dma_addr_t dmaphysdest2 = 0;
    ; M" P/ M* p7 c& V

  72. / y* w' Z0 ]3 v( q, e8 O6 w7 c" q2 j8 q1 x
  73. char *dmabufsrc1 = NULL;
    5 y. r2 U( ], C( `+ ^
  74. char *dmabufsrc2 = NULL;
    . [( }2 c3 g) K7 f6 o2 s0 f! N
  75. char *dmabufdest1 = NULL;
    # p+ i3 Z2 b9 T4 L* s5 D
  76. char *dmabufdest2 = NULL;
    ) r4 x- j! H) g' @& l6 y

  77. . |& r8 s: Y7 P, y' A) ~/ B8 n/ f! p
  78. static int acnt = 512;5 o6 A) N, J7 ~% L5 _
  79. static int bcnt = 8;
    1 ]) Z) q( ]3 u9 e/ |% ~* b
  80. static int ccnt = 8;
    $ y8 ?" G) a; ?( R  O
  81. 2 {! g, U# M! c
  82. module_param(acnt, int, S_IRUGO);. W: Q  |+ i8 J6 w
  83. module_param(bcnt, int, S_IRUGO);  K- M$ c% g; @' u& r% U
  84. module_param(ccnt, int, S_IRUGO);
复制代码

5 v7 v- ^( K# W$ V) B% j# Q3 x8 A; `4 o3 m
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* F% S, v3 O* q0 Q
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。. \) Y& @% [  ^; d* H
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& u' }. p/ M) f

" t6 D( M& t0 C; u
5 U* a+ q$ N- e& k2 R1 K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-10-11 17:03 , Processed in 0.042815 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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