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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- K* M9 x! c' t
  1. [code]EDMA sample test application7 w( n1 D1 n* k8 e& Q
  2. /*$ c8 ]5 u& t& \* H. \2 P' f5 ?
  3. * edma_test.c, z- \& m0 Z5 \# A- T& _
  4. *- L7 H- h/ m+ [! b) }/ t2 T
  5. * brief  EDMA3 Test Application
    # j" ]- P5 I" \' F. Q1 s& _
  6. *
    : z- v$ b4 I) `$ ]8 {
  7. *   This file contains EDMA3 Test code.+ ]! T  x1 A7 ~+ l8 P6 h
  8. *
    ) t( C2 F) k/ u+ }/ C3 k  I
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE- O. R3 g/ O/ w
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT5 O" g5 T! G% g! E6 Y$ x" X
  11. *         TO CHANGE.
    7 h9 @7 G/ H8 }! K0 \" s% i8 s
  12. *+ Q! U6 @) {2 o- m) h3 g' U  o6 Z7 v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    9 G* u' j* O. O9 ~
  14. *, {) @# s: L+ G0 I" D) n  N) @2 U
  15. * This program is free software; you can redistribute it and/or, f1 `8 E9 Z. L
  16. * modify it under the terms of the GNU General Public License as
    6 ~, z. @9 R, Z' B
  17. * published by the Free Software Foundation version 2.
    ' O. ~/ k/ D* W7 q
  18. *! B( n% g8 g- h+ ~- [- a
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- @! ]5 \9 j+ @, @
  20. * kind, whether express or implied; without even the implied warranty
    ; R0 p8 Y# e6 I+ z: F9 X; e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 n, x. W3 J3 d2 U9 @" u3 I9 F
  22. * GNU General Public License for more details.6 {8 R1 z4 F8 c1 O5 K( @* J1 @
  23. */  ?+ H' Y( y4 k5 ?. Z
  24. 5 D+ i1 H6 \$ X9 c
  25. #include <linux/module.h>
    / V8 [- N9 v3 B, j& e
  26. #include <linux/init.h>
    - u5 ^, u% f. n& F% G2 ~
  27. #include <linux/errno.h>" U0 `% ~  p& n2 ]% ]: v
  28. #include <linux/types.h># F- r9 B' Y+ x5 e# q- v
  29. #include <linux/interrupt.h>
    6 \3 B% E3 l1 c
  30. #include <asm/io.h>
    ( L* P+ e3 X+ {
  31. #include <linux/moduleparam.h>
    2 d; g  l- x. t
  32. #include <linux/sysctl.h>3 d9 Q, v  v, a) z8 t& ?1 u
  33. #include <linux/mm.h>; A) B" X( p* B! b8 w
  34. #include <linux/dma-mapping.h>
      ]9 P, ]7 [! Y! K2 ]2 z

  35. 4 i. e9 N' N/ \5 z4 _( @8 u2 I
  36. #include <mach/memory.h>- O- z$ M" c% M% J' s# I
  37. #include <mach/hardware.h>4 m" q# g. j7 L7 O% E
  38. #include <mach/irqs.h>5 R4 d/ l0 D* v0 I* ?( ?" h% a0 N6 U
  39. #include <asm/hardware/edma.h>
    " H) |! R( f& c- B9 T

  40. 2 a0 U) t' q3 z$ ~% [; u& P
  41. #undef EDMA3_DEBUG8 T1 h& v6 Q2 e2 ]
  42. /*#define EDMA3_DEBUG*/1 c5 a4 I8 o/ R9 b
  43. 8 ]& ], x: [9 B" Z& Y2 N$ P, D
  44. #ifdef EDMA3_DEBUG/ {, i1 f# @3 J
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)4 o# `# ~+ y9 k5 x
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 c# _" f) w; T4 k: Q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)7 W9 A$ b) J6 K8 G& g; _  [/ i$ n6 T6 N
  48. #else' a& v2 I+ d1 Q9 d+ a
  49. #define DMA_PRINTK( x... )
    - p) r$ N3 ^- |9 n$ |
  50. #define DMA_FN_IN
    5 U5 U2 k/ E- Z# d
  51. #define DMA_FN_OUT
    . h" s5 L( J" p- u' s( D( D9 c7 E
  52. #endif& W+ D7 A/ H, b* \/ x
  53. ' ?% m3 {+ X' t
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)& u- Z! @1 G, B- @
  55. #define STATIC_SHIFT                3- F1 _6 p- h/ c2 x3 u5 q
  56. #define TCINTEN_SHIFT               207 i0 F* A: b# d  s
  57. #define ITCINTEN_SHIFT              217 w" S% }) f5 x( x$ `
  58. #define TCCHEN_SHIFT                223 C( J- n! z8 w* r! ^8 A9 H
  59. #define ITCCHEN_SHIFT               23. S- u$ D4 @7 P

  60. 9 a% [* M  f0 @; e) }
  61. static volatile int irqraised1 = 0;
    9 d7 }- n$ q' J& y! \# y& ^7 @
  62. static volatile int irqraised2 = 0;/ x  g0 R2 v" |8 D5 f9 O

  63. 7 f! \, J. }3 J8 @
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 T# L: s2 C& e2 ?2 R* _) x" \
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * }* }( F% k6 O% W8 Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, A) W/ T7 M+ M/ J0 Y/ j$ q; d9 y
  67. 4 J& C* r/ E6 o5 J7 o
  68. dma_addr_t dmaphyssrc1 = 0;
    ( `5 r. \* |- k# x0 Q! R8 Q& T
  69. dma_addr_t dmaphyssrc2 = 0;" o: c+ V4 T9 ~/ T% J+ X- I
  70. dma_addr_t dmaphysdest1 = 0;: M$ ]7 C8 T" w; a' s7 c( ^! ^+ E
  71. dma_addr_t dmaphysdest2 = 0;. t3 q6 w. T6 y$ i3 y

  72.   A/ ?% V* U! _1 n- B2 p, F  J
  73. char *dmabufsrc1 = NULL;+ f. B( Q5 D  |" O3 U/ G2 l9 l7 y
  74. char *dmabufsrc2 = NULL;0 L/ g( i3 t' b4 }- {4 C4 \
  75. char *dmabufdest1 = NULL;( Z+ E3 [4 n4 F6 [. o6 J2 [5 q
  76. char *dmabufdest2 = NULL;/ @1 M7 j+ T. K
  77. 6 d. j/ S- ?- [
  78. static int acnt = 512;1 g4 o$ u1 M- P
  79. static int bcnt = 8;
    3 K) F( Q+ o/ h9 X$ }
  80. static int ccnt = 8;- F8 s# k- r/ p4 `' K

  81. , C$ o) Q5 [' g% W
  82. module_param(acnt, int, S_IRUGO);9 P9 A' j) k. k+ c& Z7 G5 [
  83. module_param(bcnt, int, S_IRUGO);0 i+ ~* n+ ~: ^" E0 u+ D
  84. module_param(ccnt, int, S_IRUGO);
复制代码
1 b2 Y- S6 E+ V+ u+ n2 Z% A6 ]- H
) l! c# u5 B' P  }* l
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用7 x% }  S. S$ v! W
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ x# _% }& Z/ d- o% f4 W% R% `$ ~
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  f8 y8 H! v; V" K! @  S  v

! ?0 r4 g6 X" g! ]' D  \) t* Q8 D
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-6 06:18 , Processed in 0.037453 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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