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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 r& t8 q/ B. s8 P
  1. [code]EDMA sample test application: E% [, p* b; F- c- X$ Y' F
  2. /*! j) e  Y7 E6 Z1 j2 J' W+ K( s
  3. * edma_test.c
    * Z+ X+ l  u: W
  4. *
    ' ?" l6 W8 x  l% S. `: H
  5. * brief  EDMA3 Test Application
    3 Y4 N0 _$ f& B& o. v
  6. *4 R2 b& R4 `$ p& n% w# q
  7. *   This file contains EDMA3 Test code.
    " O- o- A6 B' I& h' M$ W5 v' y' v
  8. *5 M& M, @0 b5 {
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    7 ?/ z' P7 b8 ?' u! C# l
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT  }, ^3 {( k( I# Y0 U8 H
  11. *         TO CHANGE.4 o/ y# O9 v+ v) J
  12. *
    ) b& H* C* y! {& y( H, d) M2 R
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/; ], C; y( L% d$ u+ L* w# B
  14. *
    0 [9 }3 O7 p0 t! f* \7 p
  15. * This program is free software; you can redistribute it and/or9 A* T0 O( X( u3 D3 e
  16. * modify it under the terms of the GNU General Public License as
    9 a2 N% a- w+ o  M( B) n% K
  17. * published by the Free Software Foundation version 2.& w; e! A  w# ]" a1 f
  18. *
    8 _2 a" \3 v) n7 K. Z* k; v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    1 F4 |$ G) B; l" v' m
  20. * kind, whether express or implied; without even the implied warranty: h+ _4 k6 l9 I3 {4 X8 p4 }
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the  n6 E8 A2 X( d
  22. * GNU General Public License for more details.
    # B4 v, `0 E6 h+ V8 q9 Z3 \
  23. */
    * P1 {+ ^) u. x1 e8 p8 p# }6 i
  24. : A' }' X: _8 s6 R3 l/ y
  25. #include <linux/module.h>" }+ q9 a. ]% R) O; F6 l5 o! ]+ B+ W
  26. #include <linux/init.h>& f' A$ p3 R+ K, K& ]8 h
  27. #include <linux/errno.h># j& |# Q7 F. v# \( e
  28. #include <linux/types.h>
    1 k, s0 l9 V% k2 B, Z
  29. #include <linux/interrupt.h>; x% m% i7 l. M) ~  G- D; o: A6 {! p
  30. #include <asm/io.h>
    ; M) u9 i/ R# }
  31. #include <linux/moduleparam.h>
    0 {4 t4 r6 Z' Y/ N$ ~
  32. #include <linux/sysctl.h>, k& m/ @2 ]( d* G! _
  33. #include <linux/mm.h>
    3 }& u* S8 K' j0 n% X8 S
  34. #include <linux/dma-mapping.h>
    " q& ]* v9 o8 m; w7 ~& M

  35. 0 Q( h. X- h7 |: [
  36. #include <mach/memory.h>
    - Y! h9 R* j) O
  37. #include <mach/hardware.h>
    1 m! a5 u1 M7 ~
  38. #include <mach/irqs.h>, R( ^- L% c) w0 ]. e" a
  39. #include <asm/hardware/edma.h>7 w  J& n: {7 v+ r! }
  40. : g/ A; M$ z6 E
  41. #undef EDMA3_DEBUG
    ( A- E6 N: \* \+ z
  42. /*#define EDMA3_DEBUG*/
    ) Z. N. V' P4 a

  43. ! |$ E$ ^6 L. s  E4 P3 C5 M/ ]
  44. #ifdef EDMA3_DEBUG+ @& ~# I, z" ?1 V
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    - O! h: @( q4 _( n8 u
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    2 P7 B6 Y7 ^, w
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    . E* v( j+ F0 @7 X. M  V
  48. #else
    ) Q5 Q" z3 t! ?) `+ B3 r8 f
  49. #define DMA_PRINTK( x... )
    + D8 P4 E; k/ N, t. w) K
  50. #define DMA_FN_IN0 o2 Q# w1 _$ i+ c. c3 q* `$ }- @
  51. #define DMA_FN_OUT
    8 c; a9 r1 L4 V( Y7 q( `, q' J+ A7 R
  52. #endif
    . ^7 E( O( _$ `7 P9 k" v
  53. 5 |; K; x9 m6 r# \( ~
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* J1 `2 l1 [, \% v! B5 ~$ P2 z
  55. #define STATIC_SHIFT                3
    : y. C& {8 j5 A" Q$ x! u0 i+ |. t( C
  56. #define TCINTEN_SHIFT               201 w( z6 e3 J4 V0 y
  57. #define ITCINTEN_SHIFT              21' Q6 z; g: w" ]1 D. L* \
  58. #define TCCHEN_SHIFT                22% h% q, w' L. A  r0 Q
  59. #define ITCCHEN_SHIFT               23# i# x0 `' k( Z9 G! _, H

  60. * x+ n: l( U6 J6 ?& n
  61. static volatile int irqraised1 = 0;) s: y! u+ V* Y" @4 S
  62. static volatile int irqraised2 = 0;2 R$ W9 ^# G) U6 ~& W1 Q; l

  63. 4 M7 b7 z$ Z! X; V$ y( n
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' h! V, }4 E& F) e3 U3 t0 p
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( K- U8 n* G' t4 F$ r, [# a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 l) h6 [+ t; B$ h! c4 r

  67. ' ?# L/ a) O5 J. o1 D3 @
  68. dma_addr_t dmaphyssrc1 = 0;
    2 [9 h9 m; c$ I6 ]
  69. dma_addr_t dmaphyssrc2 = 0;0 h0 }8 |: c# @) Q1 b6 V
  70. dma_addr_t dmaphysdest1 = 0;
    " w) L! s7 A1 v) f
  71. dma_addr_t dmaphysdest2 = 0;
    3 K" c3 U( c  q! W4 u; K

  72. $ p' f- u1 k6 u. s
  73. char *dmabufsrc1 = NULL;
    ' ^* j/ w& j) p' @
  74. char *dmabufsrc2 = NULL;5 E6 _; W9 g* _9 x
  75. char *dmabufdest1 = NULL;* S5 a4 t+ V6 c2 c3 h# E
  76. char *dmabufdest2 = NULL;. t, `7 T; c- q3 o' p

  77. 2 A. o% z% O1 @( {9 G2 |
  78. static int acnt = 512;3 y( `7 s. e6 _8 _# ?, _
  79. static int bcnt = 8;
    0 g$ G4 j2 {1 b' `2 `
  80. static int ccnt = 8;  J0 F3 F3 W/ W# d. p* n0 S% y
  81. . }3 g7 D( ~7 L/ u! S" q: A& X
  82. module_param(acnt, int, S_IRUGO);
    2 S; b' b) g. J. O+ \" i
  83. module_param(bcnt, int, S_IRUGO);
    0 b, K9 W9 l+ M
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 X( j& D: g* c7 C7 H

5 E2 `1 g( r/ i8 W$ ?" `. A2 a      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 R# z3 v0 t7 d( {1 G! c3 O
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。9 L, r5 }5 p# s& D' v
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
5 x) E# J6 O4 M, d( _  ^9 v8 I- h' j" t. d

8 }. W( a3 g. s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-31 16:20 , Processed in 0.047169 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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