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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ n  y5 E" c* W
  1. [code]EDMA sample test application
    0 W* [" K3 H' N& N' ?
  2. /*
    ( D* f7 P$ F; h/ G; I4 d7 r
  3. * edma_test.c
    1 O& S2 D- e+ I2 d1 u
  4. *
    2 w7 U. E" @  I- q- f( z
  5. * brief  EDMA3 Test Application- |3 _% h0 u) p5 m, }* h
  6. *  g+ D; u6 x! w7 x- ^4 E
  7. *   This file contains EDMA3 Test code.
    0 v! j/ f4 o$ `2 F" k+ h' G
  8. *) v$ ^# V( z2 ]/ n3 @  }3 \/ J
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE0 B4 E, [: V3 E$ z+ v0 j1 C1 s
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    & ~4 N7 ~1 Q7 H! L8 z
  11. *         TO CHANGE.! c" Y+ n3 o- x2 S. D& m
  12. *4 }# e, B5 c: {( w- e9 {0 S
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    5 W: }$ j; s& j
  14. *
    % W/ W3 Y2 {% T- ?3 a" |0 ?/ g* X- H
  15. * This program is free software; you can redistribute it and/or, a0 a) X2 R2 w3 D
  16. * modify it under the terms of the GNU General Public License as+ M7 e& h& k$ j. B9 |. o
  17. * published by the Free Software Foundation version 2.
    ( }% I- ?1 W( R9 M' q
  18. *0 w* a/ ?) N( l% a% X% e
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 ^- ~3 C% `) Y8 E7 w8 v
  20. * kind, whether express or implied; without even the implied warranty3 n1 B% m$ C4 H3 E6 t) |
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    % M6 D/ O* D( b% K7 Z: C; A" B
  22. * GNU General Public License for more details.
    2 f4 t/ k2 N' I1 f
  23. */2 ?" P  l' N. {) @  s  _% M# Q
  24. 7 n6 c# w, _+ i: C
  25. #include <linux/module.h>
    ; v1 [5 z/ V8 O0 N
  26. #include <linux/init.h>
    % x' Q. q0 L2 ]  v: j3 q
  27. #include <linux/errno.h>
    " {. V- [% ]) R+ S5 ]0 v; @% X
  28. #include <linux/types.h>9 L# v, |% }) V6 L9 R
  29. #include <linux/interrupt.h>
    " \# e# R' z# [9 B9 t8 d( c+ w4 s
  30. #include <asm/io.h>
    ) q. n# R- Q6 l- g
  31. #include <linux/moduleparam.h>: R( n% F; E$ l* c8 r) X6 w& \2 }
  32. #include <linux/sysctl.h>
    0 Q; J8 K* g3 K+ y5 D7 ]$ B$ v
  33. #include <linux/mm.h>5 Q5 D/ Q8 H% D6 S: V
  34. #include <linux/dma-mapping.h>
    $ ^2 X+ f, M" V8 g& m0 E( T
  35. + Z" k$ p: O: P. i, L
  36. #include <mach/memory.h>' Y$ U$ m) a7 o6 g
  37. #include <mach/hardware.h>
    ) b) o( O, m0 ^4 u& B; F* m0 |
  38. #include <mach/irqs.h>
    ) T: H% f1 b$ R' K% T
  39. #include <asm/hardware/edma.h>, s+ ^$ C3 }1 g" ~+ o$ X

  40. $ y, K/ D" ~! ]5 `
  41. #undef EDMA3_DEBUG' n5 o7 y( {' w/ f% Q( A
  42. /*#define EDMA3_DEBUG*/
    2 n3 t2 _0 s1 a2 N

  43. 2 {* d5 ]8 _1 M% }% I3 x' j
  44. #ifdef EDMA3_DEBUG% ~, u% N. v& F* S' o6 V, `
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ' J+ Z0 U0 x1 A* k  H9 n6 J/ \
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__); h) s% a  {) |. J% k! n
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)' y7 u6 H3 R# [$ H8 l# ~
  48. #else+ y1 q* g- A0 j1 @. n5 D  m$ R
  49. #define DMA_PRINTK( x... )
    5 N4 j* ^" j; V  U6 U9 s& l
  50. #define DMA_FN_IN" c2 [9 M/ O  \' Z0 |) a6 y( d
  51. #define DMA_FN_OUT  i; l6 U1 L5 }% M
  52. #endif5 Q1 E6 x! i- i' }8 c: d
  53. / }$ @- j* D- b, T* `' V
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)" a! V  A" P0 l- o. V
  55. #define STATIC_SHIFT                3
    : ?; }5 j( q) t2 H" e3 f
  56. #define TCINTEN_SHIFT               20
    0 o) z: N1 {. K1 H+ s9 q, r/ U
  57. #define ITCINTEN_SHIFT              217 Q8 K8 T2 A( x) Y
  58. #define TCCHEN_SHIFT                22
    3 d& B' u1 A* V0 K9 v; R
  59. #define ITCCHEN_SHIFT               23
    " e9 o- `- t+ Z: z/ m3 c

  60. + t) E4 o# E# S4 N# W2 L1 b" E+ [
  61. static volatile int irqraised1 = 0;* v# @# }! ?! O! R. D
  62. static volatile int irqraised2 = 0;
    + f9 f+ U* Q- {2 |0 [; s! h# I9 S
  63. 7 t; G1 H0 c5 H2 K+ W+ ?, C
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 |7 S3 o0 O* K' d5 o: Q4 K, P6 `7 u
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. ?5 h- o( b: t  y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) D7 d6 d! p) _* B8 p1 K
  67. * @& w/ L6 u; l% @, g' ]
  68. dma_addr_t dmaphyssrc1 = 0;- j0 |7 q/ z: p, v8 S
  69. dma_addr_t dmaphyssrc2 = 0;
    ! ]5 [  z5 a4 [2 v8 Z9 O
  70. dma_addr_t dmaphysdest1 = 0;
    6 n0 g" p1 Q% U
  71. dma_addr_t dmaphysdest2 = 0;
    " h' a' F( |2 J, z" Z% m/ i8 ?

  72. * D5 `; g: Q$ O4 y( G. n9 \3 ?* c
  73. char *dmabufsrc1 = NULL;
    $ D2 Z+ C' }! T1 {7 \( R+ S
  74. char *dmabufsrc2 = NULL;
    # d5 ~( w: r9 i( q
  75. char *dmabufdest1 = NULL;
      w4 p5 u( {/ `" ~( B
  76. char *dmabufdest2 = NULL;. S! G& Z6 v& Y9 K
  77. ( N6 V+ I8 A& ?; x3 o
  78. static int acnt = 512;+ V8 N& ?* N) a3 J! }/ y; j( o
  79. static int bcnt = 8;9 M+ h, z' B! h& q' q6 t, w1 J+ M: H
  80. static int ccnt = 8;
    + ?9 m/ w9 I7 p5 u5 O* i' d1 E2 s- C- b

  81. 4 t$ `( m( c" R
  82. module_param(acnt, int, S_IRUGO);1 H% D. m& N4 P2 m* [
  83. module_param(bcnt, int, S_IRUGO);- C3 S9 p: O0 z4 }/ g
  84. module_param(ccnt, int, S_IRUGO);
复制代码
& e/ O# b/ X# V8 K/ t' p

$ v. T5 B- j' I* u      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用2 l+ M  `3 D, g& v# @
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
% `" L  \$ g5 }5 I/ |, ]( S% J     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。8 s3 V; E+ H8 r
% f) P& s' X4 f2 Q0 H) v

" G8 ~. u6 L5 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 17:20 , Processed in 0.037020 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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