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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 * R: ^+ j- v4 u
  1. [code]EDMA sample test application
    , |# t. i  _8 l" q
  2. /*
    $ w7 r* r8 e* a8 t4 Z, Y+ c
  3. * edma_test.c' p/ K. j! d3 m- K
  4. *
    5 z. P: V9 g1 E( H# `2 F
  5. * brief  EDMA3 Test Application5 N( H9 z9 _) f( i
  6. *' R5 z3 D( q0 p* D3 p6 M* j: B
  7. *   This file contains EDMA3 Test code.& I5 r: y9 u' ]7 k1 |) ^0 U  j
  8. *" u! I, A1 t+ c! X
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE- \6 H+ m' z& D* h( D+ a) ?. b
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    7 t: z. X) z) s. ~9 R
  11. *         TO CHANGE.2 w5 S' _) d9 Z7 \# O0 @2 l
  12. *
    ( E6 I9 J# u1 a' Y* G
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ r$ W9 _+ E& D5 c
  14. *' U" N4 u, t% m. @5 F0 A  H
  15. * This program is free software; you can redistribute it and/or# t2 u7 u# d  `
  16. * modify it under the terms of the GNU General Public License as# d" P! r* F7 F- L5 \7 q* Y) _
  17. * published by the Free Software Foundation version 2.7 M) \/ Z: _/ R2 P8 [& B) c
  18. *% `9 o  R2 p' l9 z- s: `
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any; h) Z' e  N8 \5 S& R1 M/ P$ n6 y
  20. * kind, whether express or implied; without even the implied warranty( M, o( U6 g/ U# z7 w
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# r8 }& |! T! x# o
  22. * GNU General Public License for more details.5 ~2 f5 h& [4 p. \4 X/ S/ ]9 K+ @
  23. */6 C1 N- i! w" [: W. W0 T* o- }
  24. 5 V# F1 W8 m/ P& q; g  G$ ]
  25. #include <linux/module.h>3 M9 V. c; X+ e" G# q) y+ o0 W
  26. #include <linux/init.h>" \* e  b5 M  T  \; e4 o
  27. #include <linux/errno.h>4 b, k4 t7 L" m' K. `
  28. #include <linux/types.h>/ T5 Q7 \# c- m, p
  29. #include <linux/interrupt.h>
    $ n2 I# l) a( m9 P) S
  30. #include <asm/io.h>
      j/ i# B- _7 t+ w' y
  31. #include <linux/moduleparam.h>% R* e& Y: S9 u! V+ ?2 C- v
  32. #include <linux/sysctl.h>2 ~3 ~* I; ]1 O( F
  33. #include <linux/mm.h>
    : c# u4 X3 N8 M- h' @1 j: U% i
  34. #include <linux/dma-mapping.h>4 H; s" Y3 U/ G% |- D, l& m: n: ]9 ]

  35. 2 J+ ?! u( D+ d
  36. #include <mach/memory.h>( z  r* K, W/ y/ c% l
  37. #include <mach/hardware.h># m& T! n8 u: W# [6 u
  38. #include <mach/irqs.h>! ]: ^# ]  C" x9 h$ ^* ]6 ?
  39. #include <asm/hardware/edma.h>! s( x  q" q& c4 L& u6 }' b
  40. % I# Z& r" h4 h% r# ^1 ?
  41. #undef EDMA3_DEBUG
    ! j; e2 d3 G8 k" g) h0 ?! |) N
  42. /*#define EDMA3_DEBUG*/) u! C, A! o& h: \

  43. ! B, a/ x9 h5 D" \
  44. #ifdef EDMA3_DEBUG
    5 D/ M$ M2 E2 ^8 N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    3 A% k$ W1 c( [) W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 Q) T2 c% J" p: B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 ]' U* B3 i7 e- ~6 R
  48. #else
    3 t9 u: U& \4 A- Z( K4 N' Y
  49. #define DMA_PRINTK( x... )' ^) F; N6 n% G' B+ O: C9 ^0 x
  50. #define DMA_FN_IN
    1 E) t( r) C# P4 S& T
  51. #define DMA_FN_OUT- ~# c' I4 v8 ^; @5 y- ?
  52. #endif
    : U5 E7 v  ]. _+ t

  53. , Z8 \. z5 o+ ?" j7 ~$ h$ v2 ]/ v+ }
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)" l% I) Y% k* N! [
  55. #define STATIC_SHIFT                3+ }, {4 u5 m9 w. J* _) [
  56. #define TCINTEN_SHIFT               202 g' h/ R/ D/ y% b# b" f! o) u
  57. #define ITCINTEN_SHIFT              21
    4 W! F0 ]7 Y0 A5 k
  58. #define TCCHEN_SHIFT                22+ ~) [: [1 C* U8 S8 y
  59. #define ITCCHEN_SHIFT               23, d4 y( o  Y( ?) Z$ w3 C- @

  60. ! q+ h8 n6 h+ f$ k" G6 o1 x# b; b
  61. static volatile int irqraised1 = 0;
    3 N$ R# U. T. @1 y3 O
  62. static volatile int irqraised2 = 0;2 L5 l/ i) N; ]% t# \' x+ L: k6 p

  63. 3 H8 j7 n3 }8 N- B0 B7 a6 a
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ) z, ^: a: N/ C/ k, R1 ~  s! n% @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# k( b$ Q+ R* m5 z9 R1 ^9 Z- ^
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' s3 H- u0 f) q) I
  67. & W: Q6 D2 S: M8 }7 f
  68. dma_addr_t dmaphyssrc1 = 0;
    1 {( ~1 Z* o7 h" s6 U) n
  69. dma_addr_t dmaphyssrc2 = 0;9 s# z! i1 Z( C
  70. dma_addr_t dmaphysdest1 = 0;
    / D; A" A5 ?' G" Y- b$ j/ j
  71. dma_addr_t dmaphysdest2 = 0;" E3 E- F1 |1 O5 N) V
  72. . J$ l$ i+ S9 W
  73. char *dmabufsrc1 = NULL;
    % b) \% g- k. O
  74. char *dmabufsrc2 = NULL;
    ; U5 y& h9 T) N! \
  75. char *dmabufdest1 = NULL;; ~( h& @( ?( N) @  M
  76. char *dmabufdest2 = NULL;+ |" u! `; K9 V' z' O

  77. 9 f$ b4 x9 r' q: l( t
  78. static int acnt = 512;
    , _; n( H* j# s' o/ D" i1 A9 w0 Y
  79. static int bcnt = 8;- V/ V) v) Z6 o6 G9 q& a4 B; [
  80. static int ccnt = 8;& L; R9 c, s; Z

  81. ' k2 q$ f& D; R8 A$ y/ M  d( z
  82. module_param(acnt, int, S_IRUGO);3 {" F( ?1 K8 V5 m1 V, E. f+ x
  83. module_param(bcnt, int, S_IRUGO);
    ! P. m3 S* G) }& Z) U
  84. module_param(ccnt, int, S_IRUGO);
复制代码
: T. D- V8 _& k( y
  D+ D' C. i1 H7 p* m
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用/ r2 F3 {6 K( o& H8 k* d' C! S' h5 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。  ~& E8 z0 H& j( n5 y- ^, G
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% H' k) T3 a5 B6 L3 |4 T

- h- p7 f1 F% Y3 S, Q6 v. ?4 Z0 ]: \9 |- R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-4 12:51 , Processed in 0.046140 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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