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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 & h+ @' a8 b& s2 z' O
  1. [code]EDMA sample test application
    8 m1 {' n, T) Y
  2. /*
    . R! B9 ?' o" d. \
  3. * edma_test.c* }  y: F. o! ~1 c" _
  4. *# _4 l1 b2 s; N  \1 j& Z
  5. * brief  EDMA3 Test Application1 O; C5 j/ G% I3 V
  6. *7 [% B/ c9 v& X
  7. *   This file contains EDMA3 Test code.4 w  {- b8 V0 p; ^8 t
  8. *
    # y3 q" T2 _# I& |' [8 H5 W
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    - X& l: f9 t1 g* b
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    + i7 y* ~( {  C0 N* ^) t; z) }" B
  11. *         TO CHANGE.
    % i9 I4 b) _4 r0 F! J$ S0 V
  12. *
    ' c+ I& E8 F7 M7 G' U# B9 X
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/* }4 r0 d4 ~5 {4 W' I
  14. *0 F; l+ R5 ?" E  q
  15. * This program is free software; you can redistribute it and/or" a3 _  v. N6 K; j. b+ p/ Q0 q9 A5 y
  16. * modify it under the terms of the GNU General Public License as
    & W$ q# E# j: z6 X7 u+ d1 T
  17. * published by the Free Software Foundation version 2.  O' H! ?1 {3 g2 M) g7 I
  18. *
    , l2 ~* g4 L# w8 |8 S0 j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 w4 u3 T% `* Q' ~1 B* ]
  20. * kind, whether express or implied; without even the implied warranty
    5 G+ ?# `" A2 K. i: i; c6 ~
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2 T. H- M2 \6 n. l: R
  22. * GNU General Public License for more details.+ n* b  Q6 ^1 T" p/ I& E
  23. */
    0 m. |* J2 H* T9 d

  24. ! Q, Q( E6 e0 ]* M% m/ K) N' l
  25. #include <linux/module.h>
      a$ w9 b. b/ E: q; X& _
  26. #include <linux/init.h>
    : {' [' J' u! I8 J# L  w
  27. #include <linux/errno.h>
    ) }0 P1 \, A  x7 K) ~' q. k
  28. #include <linux/types.h>3 n: B; ~: K  F: B+ X( q
  29. #include <linux/interrupt.h>
    5 y* O0 R6 X. C
  30. #include <asm/io.h>
    1 l, W1 \0 n  j: D9 u4 s
  31. #include <linux/moduleparam.h>
    ! D- D# C8 v: w! p. f6 r" L+ e
  32. #include <linux/sysctl.h>
    + r) [7 x3 _0 X: h
  33. #include <linux/mm.h>
    $ V0 k9 n9 g1 F+ v/ R' p  r
  34. #include <linux/dma-mapping.h>
    " }, b6 j2 a8 ^# S

  35. * @* b! a" R9 }. |4 k
  36. #include <mach/memory.h>7 v4 z7 R4 _3 H/ e
  37. #include <mach/hardware.h>
    ( b( h* ~' T$ H+ J& i# q, D0 L
  38. #include <mach/irqs.h>* {! |! Y+ ?( H/ V
  39. #include <asm/hardware/edma.h>- T6 O) m$ \4 ]

  40. ( N- T6 Y! k: A+ |
  41. #undef EDMA3_DEBUG
    - k+ X, E$ g* C/ p  y: A7 Y& M
  42. /*#define EDMA3_DEBUG*/
    6 `- Z( e' i% l- V; E4 F+ w0 _

  43.   {) W6 W/ f% r5 d( }- K
  44. #ifdef EDMA3_DEBUG& o4 @7 c( S7 o; N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( V* l, H4 E4 l* q  p6 ~
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)* F5 u4 Q5 I- D7 _8 S% t
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    & L' Z) I2 D: y* w/ X/ f. b
  48. #else- `( G" ]& X; O. V, E/ O
  49. #define DMA_PRINTK( x... )7 _: Z) v8 A4 K/ b, |' [) `7 i
  50. #define DMA_FN_IN
    9 u' p" G5 K. V2 y3 Q
  51. #define DMA_FN_OUT' M& ?* Y; H" C
  52. #endif
    $ e) k2 C0 f4 u
  53. - _, G4 a) k' S0 {' }1 Z( {3 q2 s
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)$ W. R  c% m. ?; k* K
  55. #define STATIC_SHIFT                3
    ) r% E7 b) E! I, Y9 u8 o
  56. #define TCINTEN_SHIFT               20
    - h  v! H) y! f2 O1 M
  57. #define ITCINTEN_SHIFT              21' z+ }1 W: q+ T9 {0 E. E
  58. #define TCCHEN_SHIFT                22  `; L( |2 L: {7 w/ \
  59. #define ITCCHEN_SHIFT               23+ S0 X' P0 f' i" b5 k/ @) Y

  60. & E* _' Z: m( G& R" C+ t
  61. static volatile int irqraised1 = 0;. `+ {2 u% l) e
  62. static volatile int irqraised2 = 0;
    - @! @3 o4 q! t) u4 ^& B$ S

  63. 8 ]" n/ Z) G9 n8 c1 h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 E2 ~# ?3 i# _9 a; o
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) r$ N7 F7 e9 s: D' b! f! r" p
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 ?" c0 c' p1 _
  67. 3 q! o% W( s7 C# d- U% l1 X
  68. dma_addr_t dmaphyssrc1 = 0;4 d$ r+ J3 K/ O# P3 N2 }
  69. dma_addr_t dmaphyssrc2 = 0;
    2 m/ L9 c0 n, `- _+ ?( L. m/ t
  70. dma_addr_t dmaphysdest1 = 0;
    0 O2 v8 K, W- r' ]  u$ w
  71. dma_addr_t dmaphysdest2 = 0;
    6 E3 K$ K1 I* |, [' z) e
  72. * e& B4 x1 ^5 M$ W, o  p
  73. char *dmabufsrc1 = NULL;" N' c  b2 \) j+ ]- ?9 B. w6 P
  74. char *dmabufsrc2 = NULL;
    # Q9 w9 @3 O/ m! H: K2 L" |* U
  75. char *dmabufdest1 = NULL;
    ; b7 m& W( w6 r5 Y( B6 E/ U/ A1 u
  76. char *dmabufdest2 = NULL;. M& u1 s; T$ m4 E5 R2 T+ R
  77. - b3 A! I7 \! G) Y# v. y( J0 \
  78. static int acnt = 512;
    ) K9 F  ?+ r6 }- w4 f
  79. static int bcnt = 8;4 ?  H) U, ]7 D& u1 H* I2 s
  80. static int ccnt = 8;
    " \3 s7 H' d5 U1 `- M$ E6 W3 E
  81. 3 @0 X4 L9 D& q( M+ N, m
  82. module_param(acnt, int, S_IRUGO);7 t6 C& p3 @8 l
  83. module_param(bcnt, int, S_IRUGO);3 I3 M4 S5 N) b6 A# S- |+ O
  84. module_param(ccnt, int, S_IRUGO);
复制代码

9 s" p) s( S4 {" U6 F  L' t  Y5 [* F: Z  i& Q( X' E1 R8 n
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用) x2 q4 s8 h7 A6 H; }8 x( k
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。* b* p3 z# W" D, q
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。1 h* p8 I2 Z$ I/ X

2 h) \2 M6 M' y& G; ^7 b4 l, {  ^- F6 T6 q7 O/ [% |+ L3 \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-18 01:46 , Processed in 0.038029 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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