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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ h# }5 T/ _! T' M7 ]/ Q2 V
  1. [code]EDMA sample test application$ z* t0 g% b' w7 Z, r
  2. /*
    ' p: x5 _' }  M- V! k
  3. * edma_test.c: b# X! P; u1 x5 L0 w( t; J
  4. *6 P7 v9 ?# x; ?6 e6 u5 Q) l
  5. * brief  EDMA3 Test Application
    8 F5 _; M5 w& E7 m
  6. *+ D. P( [# ^$ `1 B
  7. *   This file contains EDMA3 Test code.. M- w3 Q4 `  y  c8 }( T
  8. *
    0 I* N$ ]# [7 ^% O) A' T
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE1 R1 x6 d  I, D0 N* ?  u
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    # u0 s1 I/ a' w$ F$ f4 O( B$ i
  11. *         TO CHANGE.
    " W: O8 j" ^+ o0 Z' h& ^; V
  12. *
    2 X# q+ D+ b) I$ C8 m
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 l) f& w4 d2 h- z1 Y) V: d
  14. *- `  A4 V' Y; W% E: g
  15. * This program is free software; you can redistribute it and/or
    + x: K" ?6 D3 I
  16. * modify it under the terms of the GNU General Public License as
    & _# _" |, M7 P9 k1 _& i! {8 F! n6 ]
  17. * published by the Free Software Foundation version 2.7 S' j4 Q& x+ C" b& d7 D! Y0 K3 \* W
  18. *
    . q8 G- {6 B7 `, k! B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; W5 H3 G* A. ^) N" U4 m4 o! f
  20. * kind, whether express or implied; without even the implied warranty) S5 u7 j: x- W% T+ u7 e6 S
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the3 }1 B6 K0 l+ b# [
  22. * GNU General Public License for more details.. n' h3 V  y6 u% s5 U( |
  23. */0 V& I0 o) s; T+ G
  24. + U# b2 |+ f! N0 T7 J
  25. #include <linux/module.h>
    ; ]% ]1 |- K5 Z5 G
  26. #include <linux/init.h>
    ! {" q6 {2 F  e, \; x3 K# s
  27. #include <linux/errno.h>5 s1 i2 _8 p) O% I
  28. #include <linux/types.h>) F" k- T! |7 h) I3 Q) Q( n
  29. #include <linux/interrupt.h>
    , |: A1 a9 R4 h( b3 t: I
  30. #include <asm/io.h>
    " a8 J6 T* O' u, E$ @$ @* k
  31. #include <linux/moduleparam.h>
    : J' k& c2 [7 Z: i
  32. #include <linux/sysctl.h>
    : e' u" X+ Y" W; I  D
  33. #include <linux/mm.h>% ^1 R4 A0 F$ H' P0 |+ ?1 f- Y* Y
  34. #include <linux/dma-mapping.h>
    6 T" V. E2 O* D2 M' g/ x& J

  35. 3 P( n. S. x; ^/ H
  36. #include <mach/memory.h>
    + s) w1 s0 g4 W) m" l
  37. #include <mach/hardware.h>3 T9 Z& A- \  i( i  l! j1 S
  38. #include <mach/irqs.h>% y, W" `+ Q( J& `* ?
  39. #include <asm/hardware/edma.h>
    , f( p" |. @8 n0 f0 N+ g6 K2 {
  40. 4 X6 r# p# z0 l$ Z/ N% V+ C
  41. #undef EDMA3_DEBUG. ^5 g+ A" `+ k( l
  42. /*#define EDMA3_DEBUG*/
      u( {6 ~, z% P; _

  43. + d- `8 `8 S0 r8 w$ j9 \4 z
  44. #ifdef EDMA3_DEBUG
    ( P1 O. z: S7 D" a+ ]3 h7 _1 d$ C1 l
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    % c4 m3 Y7 Z- M, l& B: O9 S* t
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( X6 d+ h+ n) J2 T, {; a
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 e% }! J* R& G% `
  48. #else
    1 q: @" i0 b2 E; o( l7 K+ i
  49. #define DMA_PRINTK( x... )
    # z* t0 M; C2 k* a
  50. #define DMA_FN_IN7 V" m; A0 G+ s& P# m$ J) d" c
  51. #define DMA_FN_OUT
    ! o6 ~, t% f; S; R" c6 v
  52. #endif4 p5 O; D; \( t( V4 J' {
  53. 9 J+ d( c- e6 v' B% U( v4 N
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)9 E- Q. m; @+ ^% h( q
  55. #define STATIC_SHIFT                3
    2 w% _; f8 q7 u3 s+ \5 v
  56. #define TCINTEN_SHIFT               20- ^# |3 E9 b* y3 a
  57. #define ITCINTEN_SHIFT              21, h4 L( v, O0 f/ i" S6 }1 W7 |
  58. #define TCCHEN_SHIFT                223 j8 n) m+ ~0 K( e0 D+ w1 c3 o
  59. #define ITCCHEN_SHIFT               23
    % O- v7 A$ P% M4 f9 O
  60. . z, B0 ^0 _" p1 ]
  61. static volatile int irqraised1 = 0;4 z) x$ \- F" g, d( L. B
  62. static volatile int irqraised2 = 0;/ d7 J- ?6 z+ a8 ^  x. L
  63. # I1 T* x- o$ b, I+ s
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! [+ N( ]7 K  q
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  f% b4 c8 O6 I! u+ j; b7 D
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ I; d5 A1 N& J' j, t

  67. / q3 n4 _6 {7 X! t% Q: L
  68. dma_addr_t dmaphyssrc1 = 0;
    / A) k/ H9 b( \; n" X
  69. dma_addr_t dmaphyssrc2 = 0;& C" N7 _& ^/ c. V
  70. dma_addr_t dmaphysdest1 = 0;
      ?8 c# T- C5 x7 O
  71. dma_addr_t dmaphysdest2 = 0;' M" i( w0 i( c6 X) Q* E+ x! s  W
  72. 2 k9 W  S- Q9 m! O
  73. char *dmabufsrc1 = NULL;; C9 l' g  j% P! _; A# M+ [
  74. char *dmabufsrc2 = NULL;  N, t9 K3 E3 W- L( i
  75. char *dmabufdest1 = NULL;
    " ~, s" A. s. P' u
  76. char *dmabufdest2 = NULL;
    . z  W) j& u2 j+ j
  77. % U/ W' Q5 ~6 C4 h8 a
  78. static int acnt = 512;3 ]* B7 I  E9 N3 G+ [/ Q& v
  79. static int bcnt = 8;
    : S! B; V: A5 K
  80. static int ccnt = 8;: _, b! V! b& Q" \

  81. + u/ Z% L; E' N' w
  82. module_param(acnt, int, S_IRUGO);
    9 B8 T4 t( I& Q( e# e. N3 a
  83. module_param(bcnt, int, S_IRUGO);
    7 b9 v. `* i4 p# B% m1 O4 f) S
  84. module_param(ccnt, int, S_IRUGO);
复制代码

* [  M0 B) S; _8 J9 W5 |
3 _8 b+ B2 ^: Z$ m      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用% n8 m! Y$ K: a
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' z( ^; B; K. _0 H
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. Y9 N, P) w0 \6 F, u# A6 N: v

3 C' `4 m9 S" q$ d) E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 05:00 , Processed in 0.038062 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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