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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: \% ]. |7 h0 P3 T3 c- H
  1. [code]EDMA sample test application$ j% k- k8 o0 R) ?& [' N
  2. /*
    $ `' D" C7 ]3 i" F0 d
  3. * edma_test.c
    / Q& u6 H; q% ]# Q5 R5 s2 M! v8 y7 |
  4. *
    . y, z! w1 q  b0 G
  5. * brief  EDMA3 Test Application
    5 b9 \0 V0 u  r- E: V$ m3 N
  6. *, c  y: Z! w% `7 u4 V
  7. *   This file contains EDMA3 Test code.
    9 f8 i& G3 W* O% g, q
  8. *( \- Z. A/ f& v  J
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE9 U, z8 s  U3 h% S8 k) S0 Q) `
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ; W3 g7 y- H* v1 x* N
  11. *         TO CHANGE.
    . j1 P8 F8 L& A6 A+ E
  12. *  L# }1 `) n) j7 I# k. i
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    7 h1 U- S# F* t% e) k, n8 B2 x0 y+ [
  14. *: \1 H# i4 n; g9 g( G! I
  15. * This program is free software; you can redistribute it and/or
    ; v2 ]: N. t1 o! v6 m( e0 `
  16. * modify it under the terms of the GNU General Public License as3 P4 K+ \, ]- `
  17. * published by the Free Software Foundation version 2.# E6 H# `, b) f/ C
  18. *$ ?% I( ]4 R8 n# C0 j8 @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any$ i; v7 W8 d" g$ c( {. U
  20. * kind, whether express or implied; without even the implied warranty1 V) h/ s  }+ D% |+ G3 d1 r
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 F9 H6 ^. p$ L! h& g1 ?! p
  22. * GNU General Public License for more details.
    . j' Y: w+ S4 j5 \# B: F) o
  23. */
      i& N* q- S, f5 C& X! G1 A4 m) n
  24. . |/ r$ V! \& |( R4 |
  25. #include <linux/module.h>* U( h. f7 \3 }- M% o
  26. #include <linux/init.h>- f/ M! N" o/ z1 \
  27. #include <linux/errno.h>2 z4 y4 |0 E$ T* T; X- m# v! y
  28. #include <linux/types.h>
    ( g2 s! W# k8 ]' |
  29. #include <linux/interrupt.h>* p9 W5 l4 D6 I  i6 @  O
  30. #include <asm/io.h>5 u) L/ ]/ k3 P  Z+ C
  31. #include <linux/moduleparam.h>+ ~# [/ }% X/ p/ P( c% G* B
  32. #include <linux/sysctl.h>+ y: D- ^, s0 U
  33. #include <linux/mm.h>6 i1 C) q6 W0 u* [$ A7 K* _
  34. #include <linux/dma-mapping.h>
    ; [' w% m5 h6 P, m4 N

  35. 5 v# E' K, ^+ m
  36. #include <mach/memory.h>, v2 X; ^% i5 a9 a  X* ~- B
  37. #include <mach/hardware.h>
    : t7 e4 D" h# w) v  A
  38. #include <mach/irqs.h>
      |) b% K0 X" ~7 H$ C
  39. #include <asm/hardware/edma.h>
      W& k% J! m) @- e* u

  40. " S, u1 Z& q/ H0 {* g
  41. #undef EDMA3_DEBUG: A, T( k( G8 x2 f2 U3 [) |
  42. /*#define EDMA3_DEBUG*/
    6 f2 [9 g5 ?/ w, h( ]$ J4 j
  43. # g7 c  T5 t& Q+ H- _
  44. #ifdef EDMA3_DEBUG
    ) T) Y' }* A$ Q- e- C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 F2 U9 d  Y2 `+ z- _
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 P6 Z% `7 b3 I7 _
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    % f6 K  ?3 l5 j! [' s$ f
  48. #else
    * i2 I6 C. u9 @6 ^+ V
  49. #define DMA_PRINTK( x... )
    * [. K, j* j+ g( J: ?
  50. #define DMA_FN_IN
    0 z! c3 V& R! Q9 t' M6 k( e
  51. #define DMA_FN_OUT1 J4 r, `: d. M# {7 e$ d. I
  52. #endif
    * \$ }& [1 m% L2 `" C7 y

  53. 5 y4 C$ L& b4 O8 x; J
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)/ p. J# i4 {$ V2 x7 Y& |; ]
  55. #define STATIC_SHIFT                3
    + @8 r: `5 x6 g' c3 \" y5 g
  56. #define TCINTEN_SHIFT               20( C* I. R* t" w
  57. #define ITCINTEN_SHIFT              21. R% k( O9 ~. z! G' W8 k& m3 g* \
  58. #define TCCHEN_SHIFT                22
    5 H* o$ j/ d6 ~. p3 U' p7 f
  59. #define ITCCHEN_SHIFT               232 c0 {8 A: |2 Y: m5 K( e

  60. 4 @* j  _  U$ ]
  61. static volatile int irqraised1 = 0;
    3 |2 m' P4 Q# F) t$ v# b6 Z# Q
  62. static volatile int irqraised2 = 0;* n3 R, i8 Y7 g
  63. : N, l. u1 j/ s" f' h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& s9 Z1 U" E; Y& t4 m( n/ N
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ k$ F% z1 B) z. c8 l% V+ h$ H9 x2 A
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    # F( C% _1 A/ E& l. \) w
  67. 1 v; t; W# a: W7 Y/ j/ z. A
  68. dma_addr_t dmaphyssrc1 = 0;
    $ ?& e; l* P, R' k1 q2 G& ^# F
  69. dma_addr_t dmaphyssrc2 = 0;* o9 I  ]3 m1 Q9 J
  70. dma_addr_t dmaphysdest1 = 0;  j& C! g1 {+ U; x% k1 G3 z
  71. dma_addr_t dmaphysdest2 = 0;  J! m) T3 V8 N* E( b( I5 Y4 p
  72. . F5 t/ t% A, g: J2 N5 {
  73. char *dmabufsrc1 = NULL;
    : {$ T! T, p7 d% {9 {5 }( T
  74. char *dmabufsrc2 = NULL;
    7 L& l1 u5 v9 Z8 t
  75. char *dmabufdest1 = NULL;
    4 Q% r& L: j! c8 m( K& A
  76. char *dmabufdest2 = NULL;) u1 N2 z  q* r! L( C* k: ~, }0 o

  77. : S/ W/ w% a$ E( j
  78. static int acnt = 512;; ~( q- M+ D/ X% G3 K
  79. static int bcnt = 8;
    ( W- O6 x$ I: J* C7 Z; O% G- _
  80. static int ccnt = 8;
    5 H" M. @* s9 f$ u) E" L
  81. 5 ^& w5 q: d2 w
  82. module_param(acnt, int, S_IRUGO);
    * q' \7 s8 F0 v+ b* z' ]! l
  83. module_param(bcnt, int, S_IRUGO);$ p# N7 N6 H. p/ E" C, x
  84. module_param(ccnt, int, S_IRUGO);
复制代码

; |; n' ~% T3 d/ |" t4 g0 r! S* d: N7 @
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用' B2 I5 A3 o+ \9 Y  d8 a2 l! H
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。0 x* W  D# g0 E: @# w
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) e/ t$ q6 L+ R

7 v1 X( B$ p+ w
5 V8 @! U* r. {' L( U
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-2 17:49 , Processed in 0.041293 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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