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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 / g8 h7 ~- |) b0 }
  1. [code]EDMA sample test application
    ; V: U0 Y% `  b8 n4 O( Z
  2. /*: U6 }- e% z# B. v( A, h1 b2 }
  3. * edma_test.c
    % M) h# i+ U; N) O. F6 R; l1 ]/ \5 A
  4. *
    9 I3 w6 t$ S6 }* p
  5. * brief  EDMA3 Test Application# o0 Z1 t' Q( r  O
  6. *
    2 o6 s* e5 a$ Y" y: B
  7. *   This file contains EDMA3 Test code.
    1 a1 w' J  p% b! Q3 B, K6 M4 D
  8. *6 |+ o* f- d! d0 P; f" p
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. S) l6 z6 ^: w! x
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    2 o: \* ^- W6 w4 P
  11. *         TO CHANGE.2 W2 c. h5 @( i2 z0 K
  12. *+ `7 P$ d2 ?& E& I& B! ]3 S9 M
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/; \$ ^* q" Z2 r/ [; ^* e1 |9 f
  14. *
    ; M  q' t  Z% I' u
  15. * This program is free software; you can redistribute it and/or# Y; Z8 }% }4 N* m7 w4 u# V
  16. * modify it under the terms of the GNU General Public License as
    : |( B, h) R* [# e( c
  17. * published by the Free Software Foundation version 2.
    ' W% }' H) f0 y0 Q0 F  O1 V
  18. *
    ; d& Q  N- s3 n
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any8 G# O, @- P- p. @
  20. * kind, whether express or implied; without even the implied warranty4 y' D- m+ N+ {/ R. A( }8 [
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4 t/ z% n0 K5 i
  22. * GNU General Public License for more details.: N8 K; E& V$ t/ a6 o/ [
  23. */
    0 d: t7 h5 H. ^& r1 n( |# r
  24. ( G! p3 k- `+ }' N# ]
  25. #include <linux/module.h>
    ! }* _/ B! I; G$ ^* O, O
  26. #include <linux/init.h>
    9 R5 @6 T/ t9 V% }9 @6 N
  27. #include <linux/errno.h>6 T7 h5 o1 V8 [. v9 M
  28. #include <linux/types.h>4 d! X) P  C% R4 H: P/ h2 G( j
  29. #include <linux/interrupt.h>& G6 j( p0 X! z3 a
  30. #include <asm/io.h>  u: U; e, S# T  }0 P
  31. #include <linux/moduleparam.h>% a) o$ }) k- }, q
  32. #include <linux/sysctl.h>
    - d/ {6 p. O2 l( k
  33. #include <linux/mm.h>( K, G" [$ ]5 n% Z9 P* C
  34. #include <linux/dma-mapping.h>! I* Y8 l7 I9 U5 G

  35. . l- C1 Q7 x- ]
  36. #include <mach/memory.h>6 P. m+ \  R' ^
  37. #include <mach/hardware.h># \2 }+ _+ \+ v, N# u5 b8 q
  38. #include <mach/irqs.h>
    ; m. s5 h( M  s; R1 Y8 G
  39. #include <asm/hardware/edma.h>- h: K: C7 C0 j0 X" I' M; N4 @! P& Q9 g

  40. ! v5 j2 K2 Z- ^7 Z% H0 {
  41. #undef EDMA3_DEBUG
    & Z1 o# e; i$ R: _" E9 n
  42. /*#define EDMA3_DEBUG*/
    9 Y9 H5 r! H9 m. L. D

  43. 0 m  ]/ r# \' n  k% x% t3 v9 `
  44. #ifdef EDMA3_DEBUG8 Z- d/ G. O  U7 P2 V9 D
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)0 \2 S; |# H" Y, |% s" Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 h* S7 K/ L3 F+ h
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)( _5 f- w5 Z: f; ~
  48. #else
    : M% t- }6 U1 O7 u# i
  49. #define DMA_PRINTK( x... )1 U3 I0 \5 Z: {* E* c! j
  50. #define DMA_FN_IN
      p  ^, ^. y8 K
  51. #define DMA_FN_OUT
    ' ~' ]+ O% Q' \8 m% d7 ^- o  e
  52. #endif
    ( Z% l  t0 k  a6 @  u0 w

  53. 6 c$ Z( V5 R" C, J! l. ?
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)5 u5 Q4 Z* B! c* [2 j/ ~/ _% Y5 Z; R
  55. #define STATIC_SHIFT                35 X9 C- {6 s( c& r% ?
  56. #define TCINTEN_SHIFT               20% d) f8 Q" B. c9 f1 c  r, |0 y
  57. #define ITCINTEN_SHIFT              217 K/ i8 Y$ Z  i- y. b
  58. #define TCCHEN_SHIFT                22
    $ S# [3 l6 K  F" b9 S
  59. #define ITCCHEN_SHIFT               23
    / f3 f6 a9 ?3 t* c* y) F
  60. # Z: h( [4 D" b. }* l
  61. static volatile int irqraised1 = 0;
    7 b. s. F$ c8 |0 O: L
  62. static volatile int irqraised2 = 0;
    2 G6 M6 F& P4 V: ^9 c

  63. - R2 t* \9 |  Y) x, \
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; C0 [) `/ f. W- _. ^- H, l
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 @2 N  u- |7 l! W- V' i2 @
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & G1 Q+ @' D, O. h

  67. 2 w1 K0 e/ A5 [0 |$ \' N" w
  68. dma_addr_t dmaphyssrc1 = 0;5 z2 t, I; k0 S# T
  69. dma_addr_t dmaphyssrc2 = 0;
    , |. t2 E. W6 B" {  _. y/ k
  70. dma_addr_t dmaphysdest1 = 0;
    6 b8 j8 E& C- E4 h; j' N
  71. dma_addr_t dmaphysdest2 = 0;% c9 w9 u2 ~( S3 K" }7 G

  72. + b# O9 l) B0 B. J2 O
  73. char *dmabufsrc1 = NULL;! d; b* ?/ F$ X
  74. char *dmabufsrc2 = NULL;
    / a! v' b. T! m1 L* |, s
  75. char *dmabufdest1 = NULL;
    2 \1 S+ S  T# G1 Y  W! d
  76. char *dmabufdest2 = NULL;
    4 A7 k/ }" d6 G2 b, `" L

  77. . V2 x, H# O$ P/ o
  78. static int acnt = 512;
    ( g7 l) f, t; Q' k* a
  79. static int bcnt = 8;
    ) ?) f7 k" L+ w1 K9 p
  80. static int ccnt = 8;
    2 B. J+ j& D9 v" i
  81. 3 I. x' T4 z7 t, `: m/ P4 I
  82. module_param(acnt, int, S_IRUGO);; S# t  m/ s( m) Z& S1 L% p
  83. module_param(bcnt, int, S_IRUGO);
    0 L  Z5 f9 y4 _/ x4 t$ D
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- Q; h  [' g. i$ p! k3 W
! M. y( e3 u2 o      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用7 a9 J( g, x% c
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, J3 o' Q, f+ m7 k* ?- u
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 e2 O4 z" p9 `# R. I4 v! d

. y8 h! x0 Z( i
4 j! n  T% o6 P8 X" U" c
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-7 11:45 , Processed in 0.038654 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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