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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 g0 ?" W% t1 }- [
  1. [code]EDMA sample test application, R0 j. f& l9 [7 `
  2. /*; E, |; Y/ Z) O, P3 M
  3. * edma_test.c
    % t: p8 A3 Z' b7 X7 A' E3 k5 p
  4. *
    2 v# w4 q' \1 u  V% L
  5. * brief  EDMA3 Test Application; K; q# d& q4 u. u
  6. *$ Z4 W4 l, j+ [1 j, {
  7. *   This file contains EDMA3 Test code.3 G: S7 m/ d$ [* E+ G: [6 F
  8. *
    2 M; Q( o% a1 |7 ?0 A9 t6 @
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ c9 ^8 ]# q6 h6 d: I  G
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT6 D2 g8 Q, a0 ^' Q
  11. *         TO CHANGE.
    : m/ r  `( P' M( W  k6 I
  12. *
    4 [: p, X+ |& g# R  R+ q0 ^% [# f
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/7 u2 K" i$ T3 D0 m
  14. *
    ( p* \2 `. h1 e; ~* _" g
  15. * This program is free software; you can redistribute it and/or
    ' z6 S# u+ i; }& f* x" D2 U# z" Q
  16. * modify it under the terms of the GNU General Public License as
    3 g% f/ w. ], r2 J9 k. f
  17. * published by the Free Software Foundation version 2.
    1 I( b7 y( v4 B# j2 H0 K0 u
  18. *: T0 ]/ w# h& i
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any5 V( q' |, Y0 |9 }2 w
  20. * kind, whether express or implied; without even the implied warranty% U2 h/ [1 e' ~& k* ]) h9 W
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* y7 [% O, G# i8 O7 z9 W
  22. * GNU General Public License for more details.
    : V% r5 ], O- e  b. U
  23. */8 a0 N! `. c  X

  24. ; @1 d) L1 ^: a' K
  25. #include <linux/module.h>
    8 |. {% D5 Y- Y- ~
  26. #include <linux/init.h>
    ( \4 |5 q! U+ J! v0 I5 }  w
  27. #include <linux/errno.h>2 z2 a  g# M/ N4 u0 Y
  28. #include <linux/types.h>9 f2 Q0 O( y/ e7 i. b0 ]
  29. #include <linux/interrupt.h>
    & n$ m$ r- S2 u  c, ]- O
  30. #include <asm/io.h>) z7 g4 d" Q' r3 r9 M, J3 U
  31. #include <linux/moduleparam.h>" N# }5 `; u! v" S5 \5 ~
  32. #include <linux/sysctl.h>" l1 I$ Z& [1 W, N) p% d% ?8 z, I  H0 Q
  33. #include <linux/mm.h>+ v4 {$ u! W+ t: a
  34. #include <linux/dma-mapping.h>0 m/ O0 q3 s% R6 N: R
  35. * d& l+ b# d1 k- y; G
  36. #include <mach/memory.h>
    . A* b& y3 H$ [1 z- U
  37. #include <mach/hardware.h>
    # T1 _& q4 X5 \3 h$ ]1 ]
  38. #include <mach/irqs.h>
    . q% g. Q8 G- Y3 ^9 f
  39. #include <asm/hardware/edma.h>9 g% ]/ w0 ~* U- r/ u$ k
  40. 8 Z2 s, K) K! i; J7 N
  41. #undef EDMA3_DEBUG
    - Y( {3 J1 n( ^- x
  42. /*#define EDMA3_DEBUG*/# E* v! y( Q: u" z' Q

  43. . w% R  Y, F3 ?: }
  44. #ifdef EDMA3_DEBUG8 d0 q6 ]1 K$ M; A: G5 g+ K
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 _6 U/ D* Z0 y- D8 N- U
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 ^: A, }$ o0 I6 L6 x! j. M
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)# t. a9 w* H' r) O5 Z* M9 W
  48. #else
    , _. w7 a% }0 H* D; g& u2 {7 q
  49. #define DMA_PRINTK( x... )
    ; _3 ?9 o2 ~- [, k- D- y- Q9 ~3 I
  50. #define DMA_FN_IN
    5 q5 K9 N6 t7 e
  51. #define DMA_FN_OUT
    ! Z4 O( q$ r8 a4 u
  52. #endif2 t- }2 N0 y+ S0 ^

  53. 6 Z; d7 L% S4 O. \
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) i& T; h2 t: o: S
  55. #define STATIC_SHIFT                3) f9 ]4 ^0 _9 q; S# M0 E
  56. #define TCINTEN_SHIFT               20- {' k; e* e/ q) S, S, s4 I2 p4 d! D. S
  57. #define ITCINTEN_SHIFT              21
    3 _3 [  P6 Q+ {. z$ {# B3 N  M8 \1 O* B
  58. #define TCCHEN_SHIFT                223 ?, _6 @, J5 _0 p
  59. #define ITCCHEN_SHIFT               238 w6 |) z5 n1 j3 a0 P+ h, C/ x4 k
  60. 8 I% [* X' x0 {- X
  61. static volatile int irqraised1 = 0;
    ) M$ m2 q' l1 E3 t' T2 a( N% T" y
  62. static volatile int irqraised2 = 0;
    - @  U' Y8 J3 N, x- A5 ~2 Z; ?$ N
  63. ; p3 L7 I% N3 [0 e; k  H9 O+ M: S1 t; c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 i" D. \4 s* J. x8 h' |  w( \! e
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 b$ x5 R' s8 `3 e
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ) C; l4 y- M- z. o" Z5 i4 ?. `

  67. 9 x# ?" f0 |: F
  68. dma_addr_t dmaphyssrc1 = 0;
    3 y  m1 q  ?" f0 I- W
  69. dma_addr_t dmaphyssrc2 = 0;
    5 ]3 N" C& P6 |
  70. dma_addr_t dmaphysdest1 = 0;
    5 q# K6 `( ^) n; Y, ^
  71. dma_addr_t dmaphysdest2 = 0;
      ]2 j. D0 R) J; F& ?; P( _8 v: Q: i# \6 D
  72. ; d" @8 F. n1 a2 n( d
  73. char *dmabufsrc1 = NULL;. L7 s, I+ k( H- N2 q5 r
  74. char *dmabufsrc2 = NULL;
    0 b, h/ H0 h9 g6 t6 q9 r% S  O
  75. char *dmabufdest1 = NULL;
    8 Y% e  M* ]" q" ?
  76. char *dmabufdest2 = NULL;. o! M7 x) K5 W; E' x
  77. ; }4 \3 y8 i  }2 N6 j# G: b
  78. static int acnt = 512;! ~/ z1 L7 W) c! i& r* ^; n6 v
  79. static int bcnt = 8;* A" l+ q3 f! f% ?# y- @6 S8 ?
  80. static int ccnt = 8;
    . s  u; W* d5 q# Y: w6 ?8 W

  81.   X, W8 K! A- q7 V& V
  82. module_param(acnt, int, S_IRUGO);# e. ]6 k, j) ^0 c+ X  c1 w
  83. module_param(bcnt, int, S_IRUGO);3 U2 Z! I; U  |2 r9 p$ B
  84. module_param(ccnt, int, S_IRUGO);
复制代码

# r# ~$ C6 R1 }/ F) H, U* _* P+ x: w
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用- b  @% N# q2 Y( _6 r: R
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
6 z6 [& k6 u4 t6 L! h     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& k+ n% e( T/ S% N1 W# b* \4 |2 ?
6 D2 `( \) G  x! D0 b+ i
+ I4 t, n% X. H) W4 G( O8 h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 22:14 , Processed in 0.040781 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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