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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ; R; l& N/ ]* m" j6 x4 b, Q! y
  1. [code]EDMA sample test application4 C6 u  x! ~& v/ P
  2. /*
    : T* Y6 ]1 C& g# o" `8 W( l* h
  3. * edma_test.c) s+ v9 C6 [! j3 g# K
  4. *: u" _  d9 ^; l' `% X% l% y
  5. * brief  EDMA3 Test Application
    ) O& g/ Y0 J4 T# H: F5 F0 ?- k7 s
  6. *; Z  q1 W8 ~, D6 H( z2 @( R( M8 {
  7. *   This file contains EDMA3 Test code.  _* o) \- ~1 E9 j; B
  8. *
    ' d: |% s* T; _, P' j& {0 C
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    $ R- W3 V7 x3 J8 C- ?
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT- C1 g; f- ]+ N2 R4 b+ U% P
  11. *         TO CHANGE.6 S0 l7 d1 l. ^! L9 S  u" Y& E1 P& Y
  12. *
    - Y& {3 F- V  I/ ]0 `( H
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# ]8 G/ {$ Z% K1 d* Z0 d
  14. *
    ) Y" C( e1 S! a- h( _
  15. * This program is free software; you can redistribute it and/or8 c8 M) E* j: v' L% p$ ]
  16. * modify it under the terms of the GNU General Public License as* r8 t" `& D. K  `
  17. * published by the Free Software Foundation version 2.( U$ m! `9 v1 W8 n; p: Q8 Y
  18. *1 e  v3 K2 F( R" ~% f+ m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any! c# ]- f! r$ ~7 ?/ w
  20. * kind, whether express or implied; without even the implied warranty
    7 b' b( [. j& f# g! u; |) K
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    - X0 v. T+ x6 ]7 v
  22. * GNU General Public License for more details.% n" `2 f6 a9 Z& |
  23. */
    # X" t0 [2 F! p$ x8 {% P4 |3 F

  24. 9 n: n6 E- v, e" C, F. U! H
  25. #include <linux/module.h>
    / f# C4 X$ k1 A6 }: u
  26. #include <linux/init.h>
    8 ~- S$ b' K: Z# O
  27. #include <linux/errno.h>  e; A) ^3 ^* n6 x1 X( Z$ G  W
  28. #include <linux/types.h>
    ; E# L' H/ `7 M/ t
  29. #include <linux/interrupt.h>& f. k) I) E1 x" n" a# ?
  30. #include <asm/io.h>
    ; |" A0 V7 c# L) s6 \
  31. #include <linux/moduleparam.h>
    + ^8 l- p9 G- P- e# Z% U/ y: F4 w
  32. #include <linux/sysctl.h>
    / T' k& s' u8 f) P) X( A! k
  33. #include <linux/mm.h>
    ! h3 O0 }  h& D5 C. r: q
  34. #include <linux/dma-mapping.h>5 b/ I" A4 ?: Z9 [
  35. $ S0 g8 }' y4 @' N$ q9 d0 u
  36. #include <mach/memory.h>7 l% u. J. q, v$ y* V+ ^4 r% l
  37. #include <mach/hardware.h>* e! N6 I3 y6 d9 m; Z
  38. #include <mach/irqs.h>
    % e- Z+ n: d3 _
  39. #include <asm/hardware/edma.h>; C; U" n4 Y: Z8 s) J# q

  40. 4 I! B+ A- X8 Z, K
  41. #undef EDMA3_DEBUG
    + q& A6 w, X% O4 X8 D6 k
  42. /*#define EDMA3_DEBUG*/8 l# J( a, U1 D- G% \

  43. 3 I' h& I; F' I: R, B- H" F" `0 [$ _
  44. #ifdef EDMA3_DEBUG1 B# L& m6 {& t/ V/ \/ B/ A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    # K5 C. e- B# Z4 R8 g
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)) t" ]+ B( S* [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)/ B+ @4 p0 j0 @+ R5 W7 x( Q
  48. #else. R8 }) q2 `/ E. p) p( d8 N
  49. #define DMA_PRINTK( x... )
    4 z7 I2 W' R. v; v; o
  50. #define DMA_FN_IN
    . u$ b( ?- X2 @7 u5 U$ C+ i
  51. #define DMA_FN_OUT
    3 Z7 A/ ^5 U9 t' h, E& v1 F9 w
  52. #endif3 a# U3 Y) r7 q
  53. - R# F* R" v3 [/ E5 i7 e8 m0 t
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). [  ], L+ z( F& `2 p/ W) a
  55. #define STATIC_SHIFT                3  [! G; k) [: H; L  r* U
  56. #define TCINTEN_SHIFT               20
    ! X8 v  [. o. v+ u! Y
  57. #define ITCINTEN_SHIFT              21
    + z% \, |, S% q  K9 }+ q
  58. #define TCCHEN_SHIFT                221 M" m" O% z/ h8 }
  59. #define ITCCHEN_SHIFT               239 C$ q* N0 r% V/ N0 u8 g$ A9 t

  60. ( T8 D/ X- W  M& Q8 y/ q) o
  61. static volatile int irqraised1 = 0;  T9 b( s4 ?9 X9 @: R
  62. static volatile int irqraised2 = 0;) [0 Q5 I- D0 [& `, A. h$ Q' U

  63. + y2 v5 h2 @; `2 ^. R8 v. _9 \
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 w# U2 T; {  D; T1 v/ \9 k
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! F7 k1 \4 M1 B' J' t
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 Q& k4 |* Q( j+ Y8 p

  67. + O* T. F( J7 h4 J
  68. dma_addr_t dmaphyssrc1 = 0;. d- h, l/ ]# |5 l* D3 i3 U, s
  69. dma_addr_t dmaphyssrc2 = 0;
    ( R2 o4 z2 w* m* X: \  p# q0 Z$ s* r
  70. dma_addr_t dmaphysdest1 = 0;
    5 _4 [* Y3 l# b; a; b3 g
  71. dma_addr_t dmaphysdest2 = 0;
    0 N4 K& I1 ?1 t9 }* ^  L7 }( o
  72. " M0 }3 o7 c+ B4 ^
  73. char *dmabufsrc1 = NULL;. f2 h3 W. F, f- R7 z
  74. char *dmabufsrc2 = NULL;
    0 H* q( A5 a1 D9 g
  75. char *dmabufdest1 = NULL;+ y/ P2 ]  T9 n7 @5 h" q- f) }
  76. char *dmabufdest2 = NULL;
    5 r8 y/ Y# D/ N" @
  77. & b+ j; w/ J: p
  78. static int acnt = 512;' U; u- d" i/ V' Q  G% W
  79. static int bcnt = 8;
    ) A4 K6 p' u3 p2 S3 M! m0 H# m
  80. static int ccnt = 8;/ m6 M  X; x$ a% L. n
  81. ; Z6 S- I4 L9 @9 k3 n
  82. module_param(acnt, int, S_IRUGO);
    5 o6 k/ d+ Q0 A- [3 M
  83. module_param(bcnt, int, S_IRUGO);
    ; J# `& l9 L+ a- L9 e
  84. module_param(ccnt, int, S_IRUGO);
复制代码
+ ?/ _* @5 k, q: k2 {# Z9 l
% j/ x' Z6 F( K* n3 k0 u
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 N7 V* ]+ b8 }! a5 w
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
- m: j$ ], A( y# r( V% R  u# c6 v     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
1 l- F5 N% V# V1 I) r% m$ o  N$ f

; J, j. s" z! t5 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 09:03 , Processed in 0.040810 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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