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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
6 p* P) i* l* G( `6 U; s
  1. [code]EDMA sample test application8 a% Z/ W$ r9 J! I
  2. /*
    ' s, K4 @" Y! }
  3. * edma_test.c: m3 {# {: \: u' _7 C, e
  4. *6 V& X! H6 f( x- ~* O" U
  5. * brief  EDMA3 Test Application; S+ m( J  W! s: t* @, l# T
  6. *
    . C# l1 h" M% P8 V: n% J( X& L/ u
  7. *   This file contains EDMA3 Test code.
    $ x( o! O3 g, \8 L7 M' f& Q
  8. *7 e  @" b; p! @/ @+ {/ m# w
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    * D( p' Q2 u! t8 @0 l
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT7 I) S& U- [% Q+ }& q  ~( s
  11. *         TO CHANGE.
    ' j0 E  _; ]9 M4 ]
  12. *9 |) e# n6 X2 x' i, S
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/- p# v6 u/ B, R
  14. *
    , ?  g4 b8 p* ^
  15. * This program is free software; you can redistribute it and/or% F- ]* K" a( @! {; z4 y4 i/ g
  16. * modify it under the terms of the GNU General Public License as/ J" H# D9 m3 A6 Q0 s0 O
  17. * published by the Free Software Foundation version 2.
    9 T% d( l) E) `% O$ ]( n
  18. *
    ' E$ @/ ~- w! t; z# j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
      j8 \! G& \, \
  20. * kind, whether express or implied; without even the implied warranty
    : V+ _5 c, B8 h( w3 G5 l$ T# Q3 @
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ) g) b1 a: C) _  R. }
  22. * GNU General Public License for more details.3 D* w- l! v# ^( J( {
  23. */
    $ u( ?) t* g- E' K

  24. % ~& k9 R: \1 v
  25. #include <linux/module.h>
    + ^7 v  z+ l# z# m. y0 w; R1 j% c
  26. #include <linux/init.h>! ]) O* t% [; z% z3 W- u
  27. #include <linux/errno.h>
    1 t3 S4 p" q8 v# w& N2 T9 g
  28. #include <linux/types.h>" P( |/ j, S* c  F1 _; x9 t
  29. #include <linux/interrupt.h>
    7 I. b; v: y9 a0 j8 W3 |* M1 v$ q, S( s
  30. #include <asm/io.h>
    5 t% u9 L( e. A! X+ K1 o
  31. #include <linux/moduleparam.h>& h! e! s% [# f8 e7 |
  32. #include <linux/sysctl.h>) B9 X( O  o' v" `; q
  33. #include <linux/mm.h>
    0 g; }" N1 b, }6 w# |
  34. #include <linux/dma-mapping.h>
    , K& }/ |- e& R4 y& \; _

  35. + N9 J# l: Q- c+ S+ P( h# T% g8 R$ H
  36. #include <mach/memory.h>
    # v% S/ s7 A# l9 d
  37. #include <mach/hardware.h>
    / J1 M! Q' P- E+ e& Q; h1 m
  38. #include <mach/irqs.h>4 b; q( H: }3 t8 ]
  39. #include <asm/hardware/edma.h>
    5 q0 X; K0 b. m6 P; @4 ?

  40.   R$ |5 G  g4 C) F
  41. #undef EDMA3_DEBUG$ U( S  w6 ~. d: v" a4 }
  42. /*#define EDMA3_DEBUG*/4 o5 C6 I$ N! c- M
  43. 8 D( P' a$ j2 C9 B' J
  44. #ifdef EDMA3_DEBUG1 k3 A" \7 j) f  j2 V& i6 z
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    8 X, v2 O5 \( t! P, }/ z# W9 z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    . d0 e3 w0 e7 v
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 _+ ]: ~' k: R' @* f* y5 |- [
  48. #else
    8 U# b1 o0 T" S+ Z3 l
  49. #define DMA_PRINTK( x... ). n; F5 q$ `  t7 @0 C$ A
  50. #define DMA_FN_IN
    - S# c2 \( Z% v2 S
  51. #define DMA_FN_OUT
    0 D% r* n& q& u
  52. #endif" i, B  \; ]/ u5 G
  53. ! v5 J1 V, ^  I  s; P3 p* c/ J: f
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    # M/ [" b: \2 w) ^5 B6 p2 ~( J+ S* f
  55. #define STATIC_SHIFT                32 [5 c2 ]/ V1 a' F! y
  56. #define TCINTEN_SHIFT               200 |% G5 j8 v/ m) l1 j( r
  57. #define ITCINTEN_SHIFT              210 c9 @4 a  g( V( A( g1 s- F
  58. #define TCCHEN_SHIFT                22
    . u6 n3 e3 N) B: d/ F! S
  59. #define ITCCHEN_SHIFT               23
    ; E9 v- R! g3 K5 S
  60. 7 H3 k7 {  e1 F
  61. static volatile int irqraised1 = 0;: J8 A1 x4 f4 `9 S! z. c+ I! A5 E- l
  62. static volatile int irqraised2 = 0;
    $ D- `7 Z. C5 T, U" u2 A& {

  63. & u& E7 ~5 m& X0 P
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , J  t# x6 j" a$ Z3 c. ]  j$ B2 d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 M1 H8 Y+ D# p3 r6 i5 _
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( R! F/ i( ^, n: K, y

  67. 3 [7 u+ e# d0 {
  68. dma_addr_t dmaphyssrc1 = 0;
    . {$ G* x6 b4 Z, p8 `' M# S
  69. dma_addr_t dmaphyssrc2 = 0;. i- V* l# S: n7 s2 T
  70. dma_addr_t dmaphysdest1 = 0;7 Y  J( a6 }* s' G
  71. dma_addr_t dmaphysdest2 = 0;
    # y9 }9 N. W' \5 h- ^9 }- Y
  72. : R+ Q$ r6 G3 ~  K' U# M
  73. char *dmabufsrc1 = NULL;
    ; ^9 t4 r0 ]: x8 B) X+ \  @+ H
  74. char *dmabufsrc2 = NULL;
    ; r( m! ]7 J& O$ x* X) E
  75. char *dmabufdest1 = NULL;) m9 Y" I3 G7 S3 X9 |
  76. char *dmabufdest2 = NULL;
    ; j' x/ v8 `3 P% {% L8 `
  77. ' ^; L: T+ I+ K( C1 v
  78. static int acnt = 512;
    7 o, |: ]- ~; T( r
  79. static int bcnt = 8;
    / `9 e: o" D2 }; o- }4 F
  80. static int ccnt = 8;
    4 R$ S7 C- o2 P- r6 x$ n# U2 ^
  81. - |9 L' q/ q3 M2 V: g
  82. module_param(acnt, int, S_IRUGO);+ T& q  t5 T+ E+ |9 @# c
  83. module_param(bcnt, int, S_IRUGO);( I7 v' Z& C" x$ S- e
  84. module_param(ccnt, int, S_IRUGO);
复制代码

( W# L) R# W: J1 E  L% W% s8 [- n4 J: p. R( I* X
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
: M1 d; z. n( }  i( d6 Sarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 \: u, l! c8 p* k     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。0 A9 Q4 O) M2 ?  A' r2 ]
/ ]" w) j  Y: ^/ J  L
( G" I8 V' {# M1 c3 J  R
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 14:30 , Processed in 0.044879 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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