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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % q( A1 ]( S: q5 l9 R# B
  1. [code]EDMA sample test application6 S, \! g/ \1 R  q) d% N; ?
  2. /*
    ; b2 i+ V) ?1 S3 T0 ^6 N
  3. * edma_test.c
    ) s* }( V# X4 C! T& i
  4. *9 p: P. W! S$ \* f, v
  5. * brief  EDMA3 Test Application' @* H$ ?# P5 N
  6. *
    + f# [$ V& o* [) _# l- `
  7. *   This file contains EDMA3 Test code.
    # v' ^8 R/ V  [$ u! i4 w4 U7 V  O
  8. *9 I) _( V9 n& n9 E
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE! ^6 N' j, w; U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT# T. r" U7 T8 u" m
  11. *         TO CHANGE." {0 B# g9 y% ?( _8 T; G
  12. *
    # c: A9 _7 R* i6 \
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    . A( F$ W2 |! R! S
  14. *
    ( U6 T9 v" a  Z8 T( @
  15. * This program is free software; you can redistribute it and/or- v) W& s5 p) x, J( W
  16. * modify it under the terms of the GNU General Public License as3 X+ y2 f# }- a3 J7 y2 h7 u# }, m
  17. * published by the Free Software Foundation version 2.
    ) D8 c$ o9 C% r9 q
  18. *
    ! J2 H& U* i) E$ J
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any( ]/ J% y8 q. b/ ?' C5 w
  20. * kind, whether express or implied; without even the implied warranty% z( Y2 M0 @& r- S  K1 p
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ) V8 z& ?3 f' v; B
  22. * GNU General Public License for more details.0 o- Q) F! [1 {# f2 v
  23. */
    0 `7 @7 A; v- E: C* @

  24. 0 O7 M; v; Z0 g+ P: |1 M, i$ e
  25. #include <linux/module.h>* }4 r$ n# Q) }& m9 F, k
  26. #include <linux/init.h>3 P6 G$ ]& D( C! R
  27. #include <linux/errno.h>' X# D  r/ x5 z. O7 Z/ x  |
  28. #include <linux/types.h>
    ' F* b( E% w( L% Y* E
  29. #include <linux/interrupt.h>* E; e+ y9 \' D, r, Y6 `3 ?3 i
  30. #include <asm/io.h>( S! l, ]6 {: e" v
  31. #include <linux/moduleparam.h>6 Q2 \1 y- H$ }7 B: }/ S0 D
  32. #include <linux/sysctl.h>* E! ?+ _1 @5 \0 k
  33. #include <linux/mm.h>
    & |3 O' z" G: w$ Y* x5 D
  34. #include <linux/dma-mapping.h>% D/ @0 {% t5 l# A0 h

  35. * W- t3 |) C5 j( e4 a+ L( ~6 X/ e
  36. #include <mach/memory.h>
    2 g1 N) D' w" u+ s, ~* ~
  37. #include <mach/hardware.h>" X5 d. a+ A3 {- O* S
  38. #include <mach/irqs.h>
    / L" m  x7 b% I5 E. `
  39. #include <asm/hardware/edma.h>$ M* G* O9 h& m- ~
  40. 0 Z: e( w! x$ B; N( l2 \% ~% v
  41. #undef EDMA3_DEBUG
    2 W. A$ X/ ]" @
  42. /*#define EDMA3_DEBUG*/7 T) C* Z- j0 {* l3 t
  43. ; i$ ]* ]' [! N
  44. #ifdef EDMA3_DEBUG0 ?7 C( ?- ~% l1 u2 f; P
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    3 N1 z# D6 @2 c+ `
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    6 B- j) N0 y$ o$ ?5 D2 f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 N! q# i8 j! @8 c  P( v
  48. #else
    % \3 n1 c: D, q
  49. #define DMA_PRINTK( x... )0 u- K% s' m, m4 Y! ?
  50. #define DMA_FN_IN; M1 g4 A6 s$ s0 V) k; W1 k
  51. #define DMA_FN_OUT+ K7 _; g" B$ r6 i# y" P2 O
  52. #endif
    . U3 I) b6 z9 z0 I: I6 Z
  53. ! E9 c3 j! U' N/ M2 F" n! p/ u
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)7 z; [7 s* k& [9 f- E0 |5 ^, V
  55. #define STATIC_SHIFT                3
    . e: ], J( f9 W0 }) O  t+ y) s
  56. #define TCINTEN_SHIFT               20- h; u4 G3 b$ v1 `) X  ]
  57. #define ITCINTEN_SHIFT              21
    1 U8 g; g1 x/ Z
  58. #define TCCHEN_SHIFT                22  l, H5 j0 V* U/ e1 C8 \2 g7 p& n
  59. #define ITCCHEN_SHIFT               23
    5 k) T5 S$ ]2 @; Y  Q5 J

  60. ) K' R8 _4 @5 P! r
  61. static volatile int irqraised1 = 0;% Y% g  ^. q9 O$ f" y, Z, \
  62. static volatile int irqraised2 = 0;
    9 n: n5 T/ x4 ^- [! r8 d7 T7 R

  63. . C+ b7 D+ E. h9 M4 W: c4 y  U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 _' F# M/ m6 \
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' J: [: s. c& q0 O" h! B, F' m
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% K- B& V0 h+ R  Z

  67. , I4 Y* ~) U5 C+ ^) J
  68. dma_addr_t dmaphyssrc1 = 0;1 Y; |& V/ y9 f# m1 k9 ?- [  W
  69. dma_addr_t dmaphyssrc2 = 0;% z! `; S6 n& `8 L
  70. dma_addr_t dmaphysdest1 = 0;
    ) p* A% u- Q- w( r
  71. dma_addr_t dmaphysdest2 = 0;$ P5 L& M+ @1 R4 h' q6 e

  72. $ G: a* |. X6 {# x
  73. char *dmabufsrc1 = NULL;8 B2 {7 {# _& ~$ p" f, t% k
  74. char *dmabufsrc2 = NULL;
    1 M& ~' D+ r; A3 P
  75. char *dmabufdest1 = NULL;
    ' A$ b6 f) O9 R+ Y: `
  76. char *dmabufdest2 = NULL;
    # [  W* P$ I' S2 E$ \0 n4 ~
  77. ' u) M6 T0 Q6 e0 D$ l
  78. static int acnt = 512;
    + Z8 L; F' w' d& ^8 h+ i
  79. static int bcnt = 8;
    + \" h0 a% T6 K' r& g; E7 P! R  F8 G: Y
  80. static int ccnt = 8;0 H, e2 _2 J* U4 o6 f

  81. + c+ E, C* M0 L
  82. module_param(acnt, int, S_IRUGO);/ Y( R1 E: d2 h9 ]6 _
  83. module_param(bcnt, int, S_IRUGO);
    6 C+ H2 f" [& G
  84. module_param(ccnt, int, S_IRUGO);
复制代码

" S7 y/ j% E& L; G0 M( B6 ~% [; z( A) `7 H" _. T
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用8 J# r- V! S, k4 I1 `; O% n" T
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
3 z* G  y8 |7 o+ V) Q     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" b5 U& ^' d" A" g: C9 [" p6 L( a
9 c! R# x8 s. ?. v; u* ]7 T" e
6 y  D* V# S) i- \! T
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-21 02:59 , Processed in 0.044122 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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