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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 v3 Z9 ]9 w& r) k$ B+ e. Q, H! Q
  1. [code]EDMA sample test application
    + h( K6 W% o0 u
  2. /*6 S- @6 f: E9 v4 v5 {9 |
  3. * edma_test.c; A6 F7 \3 t9 g0 \# ?. y
  4. *
    / e/ |2 T# L1 U  r
  5. * brief  EDMA3 Test Application
    ) {' J! F+ J& v  g- I8 x
  6. *
    / y0 M9 Q' ~* j
  7. *   This file contains EDMA3 Test code.
    8 |4 T4 E0 ]: x7 J8 s* ]4 m8 X
  8. *; J7 b9 N$ J2 x  I
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    % g! Z1 y& a7 K
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 s5 u4 v0 _: [; f! q8 X
  11. *         TO CHANGE.
    2 `4 E1 v6 |5 [$ t2 c3 O8 f, E
  12. *
    ) ]* S, U! n) s& }
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/9 C) r- C3 z: ?: N+ c5 R* w/ l2 Y! T
  14. *
      U; G2 x8 Q: Z  }1 _5 I
  15. * This program is free software; you can redistribute it and/or
    . a; B0 x$ L7 ^
  16. * modify it under the terms of the GNU General Public License as
    + v9 h, F- P: |' w1 b: [
  17. * published by the Free Software Foundation version 2.. q, p) \% c2 O2 R8 o
  18. *
    ) Y  I4 W) v- D3 ?
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    9 k6 o1 i. D/ F" Q
  20. * kind, whether express or implied; without even the implied warranty
    , Z( a0 f) S  S8 r0 E3 P
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    : q/ T3 S; e& t
  22. * GNU General Public License for more details.
    4 y' q+ N$ D/ j1 P3 [$ R7 n3 v
  23. */
    2 d3 O" c+ [  Y, U

  24. 1 R$ N1 f) ~' W9 p7 j1 {1 _
  25. #include <linux/module.h>7 D% v% \& q, N. ^3 Z& m3 b
  26. #include <linux/init.h>5 S- _, r2 ]5 x7 d. ]4 f1 B; |8 |, L
  27. #include <linux/errno.h>
    ' B5 R7 Q4 y7 P/ O
  28. #include <linux/types.h>
    4 f2 O3 N7 \; j
  29. #include <linux/interrupt.h>% a, S" @) g  t3 x. g
  30. #include <asm/io.h>, i) N* K, Y4 R7 y
  31. #include <linux/moduleparam.h>
    6 U$ ~; {! C7 C! C* B3 N
  32. #include <linux/sysctl.h>
    8 N: ~) Y# j& e: p; }. P! w
  33. #include <linux/mm.h>6 I6 U1 B& d! @" w, w
  34. #include <linux/dma-mapping.h>
    . [6 _1 L' k, f& z2 E

  35. , E9 [+ m7 m0 p1 ~
  36. #include <mach/memory.h>$ a2 g5 d! W0 ], z
  37. #include <mach/hardware.h>' X$ f+ J' Y; _7 k
  38. #include <mach/irqs.h>
    . }$ g$ l' s/ z) u/ [1 Q
  39. #include <asm/hardware/edma.h>5 {! D/ K, F: ?/ F* K5 w+ v( f; ~7 s6 ^( y
  40. 7 Q* M+ g; F5 I! L# o3 Y
  41. #undef EDMA3_DEBUG* q3 y! z2 b( Z9 I' v/ h8 z* O
  42. /*#define EDMA3_DEBUG*/
    * P6 C/ ?# p& y7 j
  43. . ^+ j3 ?( t0 Z9 N- y
  44. #ifdef EDMA3_DEBUG( ~, E  C  s6 ~* ?3 X/ R5 e+ O
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    7 C- c: s% h$ {1 Q. }  R+ {
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    " f8 E$ ?+ Y' v$ a9 K4 A* s
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ( n; `4 ~# l5 z" q3 |- P
  48. #else3 s/ w1 }/ l$ M. J: W; ^- v
  49. #define DMA_PRINTK( x... )2 [7 F8 \7 G) Y& b
  50. #define DMA_FN_IN1 @) C5 P5 X2 U5 {* M( U' h
  51. #define DMA_FN_OUT
    " V) O1 j9 ]: ?* F* M
  52. #endif8 H) d: r# U7 U, o& R
  53. ! W  k7 |) x# z  v
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    - G) Q1 c: t  \' \# R
  55. #define STATIC_SHIFT                3
    ! Q( k5 `5 T) t& ?2 u( V
  56. #define TCINTEN_SHIFT               20- a7 C2 {& x4 |0 T- \
  57. #define ITCINTEN_SHIFT              21" _: H: @2 m% h3 _" I
  58. #define TCCHEN_SHIFT                227 d9 I# ?( q4 T9 c( M: R
  59. #define ITCCHEN_SHIFT               230 A' h) T" z7 D* c% s

  60. & C+ b0 n4 j7 F
  61. static volatile int irqraised1 = 0;1 \0 ]& ]9 J+ A( A8 K8 j
  62. static volatile int irqraised2 = 0;
    * Y/ P! I5 b1 a5 s! S  A; a6 g$ b$ V

  63.   [1 I7 W' A) C+ K  G
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( Q4 N1 h4 i; Y0 P- |: p
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; k% q  l! G! c; i, f) F
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) b9 `0 z5 A* @* v

  67. 2 N  N3 ^5 `3 f( c- z) `
  68. dma_addr_t dmaphyssrc1 = 0;
    + y, J7 I9 X1 M) P8 @( e
  69. dma_addr_t dmaphyssrc2 = 0;* l( j8 j2 h, l- a* Y
  70. dma_addr_t dmaphysdest1 = 0;# g2 s3 _0 e2 D  z( r5 ]
  71. dma_addr_t dmaphysdest2 = 0;8 w0 @6 O" `8 }, R6 S& O: T* D* O

  72. 5 w7 [5 A& A2 ?* S. g9 j
  73. char *dmabufsrc1 = NULL;
    2 n1 S" ^5 C+ v  K+ e; o
  74. char *dmabufsrc2 = NULL;3 p7 j6 I4 B  F
  75. char *dmabufdest1 = NULL;8 N9 f6 K/ x. u' D! B: h
  76. char *dmabufdest2 = NULL;2 w5 e+ B# B4 j7 J4 ^# u) |3 I

  77. ' m- {0 p" ~; V
  78. static int acnt = 512;
    , P/ T( }5 V5 n4 ?& e
  79. static int bcnt = 8;
    : z( W9 U9 a4 e
  80. static int ccnt = 8;
    9 @! C# {; G$ p! x' `
  81. $ W7 x( \) j9 |8 J5 h
  82. module_param(acnt, int, S_IRUGO);" G2 F8 T4 o0 t  f3 h/ E- u
  83. module_param(bcnt, int, S_IRUGO);
    ( v) L- s3 l3 F" I+ N
  84. module_param(ccnt, int, S_IRUGO);
复制代码

; b, t& b9 Y5 u3 D) b1 N$ B; e2 ~- G3 p( {" y- G
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用% f: D; Z$ H# z. S# T. 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。1 D& q3 o& ?% ?
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。$ e# G  i6 p( f, s8 b* o  w

( z: M( E1 H  o% x5 I
' N  C2 H5 f% o8 y
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 03:28 , Processed in 0.040443 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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