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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 2 _- Y7 j4 y, P
  1. [code]EDMA sample test application- J$ y7 H( G8 K# p% s
  2. /*& }  Q- I: J# p' f
  3. * edma_test.c' ^2 U4 I6 s' r, h
  4. *, T7 p" |" l3 o5 e
  5. * brief  EDMA3 Test Application
    8 H; D& ?; {6 b+ e  c! Y* L0 \' T
  6. *
    # a4 `4 p7 \. y% k1 m! K. _
  7. *   This file contains EDMA3 Test code.
    - [$ E& T8 Z$ [1 x: Z9 Z
  8. *: }  ^- ^" e1 o& L2 X* k
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    & a% P' A6 j; S* }! u3 {6 q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% Y2 W+ R; l$ W$ T4 N
  11. *         TO CHANGE.6 `% r3 L  r1 ]1 ]
  12. *
    , F4 Y! I8 ?1 W  a% X$ C( l# c! _
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 F. x; Z. P$ v4 N. O
  14. *
    ; ~1 B  Q9 ^- q8 R/ T8 u4 G
  15. * This program is free software; you can redistribute it and/or- s( A# X1 b- J% D) X; p' H
  16. * modify it under the terms of the GNU General Public License as
    ) S& J: q! n1 `. s0 M& R' Y7 K
  17. * published by the Free Software Foundation version 2.4 r$ j) f5 X, b  q0 A
  18. *4 O( Y1 q2 |. E% N
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    : g% Q; y# w1 r6 a! ?) J  G6 `
  20. * kind, whether express or implied; without even the implied warranty( @: K3 _9 e( ]* X
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$ K8 ]4 w: `/ l  M+ Q
  22. * GNU General Public License for more details.
    : t6 |3 T: W7 {2 L( {: e
  23. */4 t3 K! Z" i7 [2 r; o

  24. ! H. N0 z% H* i& ]
  25. #include <linux/module.h>! r2 |* i7 n( _* |" S" \# W0 t
  26. #include <linux/init.h>( m0 w% ?) H7 w0 T, I, e
  27. #include <linux/errno.h>. s  I! F+ M  F  u7 u
  28. #include <linux/types.h>
    + B6 F7 o! o; M
  29. #include <linux/interrupt.h>! ^& G: u; J0 \& \$ q
  30. #include <asm/io.h>
    2 F5 C: e+ b) u2 B! w
  31. #include <linux/moduleparam.h>7 q2 o( T' d& K' u& Y4 V
  32. #include <linux/sysctl.h>
    ; u) p% C" Q/ O7 S; m; x
  33. #include <linux/mm.h>
    ! h$ `6 _0 ^, s) J* _3 o
  34. #include <linux/dma-mapping.h>9 D9 |! F/ Y. h/ s- C6 E7 R1 y

  35. . f. l4 \. W' M, I, [- s4 C. F+ z
  36. #include <mach/memory.h>
    ( Z0 L+ V( _* ]1 S& T& E
  37. #include <mach/hardware.h>
    ! j) Y2 {8 m) |" Y, c( u: o( j+ M
  38. #include <mach/irqs.h>% g% W5 B& L2 l9 H
  39. #include <asm/hardware/edma.h>) ^, Q7 [/ h9 h2 k: f" b; k" o
  40. 7 F& _) l7 V3 W. [: x$ f
  41. #undef EDMA3_DEBUG. [! ]& S* h2 k1 q8 _
  42. /*#define EDMA3_DEBUG*/
    / `) |- ~# ]: N/ H9 @% U5 T+ u/ _+ X
  43. . i6 Q% R$ B: k# T# z2 O2 g
  44. #ifdef EDMA3_DEBUG0 `/ f+ S0 b* e% s0 w- M8 p- o) b
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( B. r: Z5 _! E4 x# ]2 N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__): h# `- f' r% Q% r' e3 {* A+ u
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    4 O' D- c" I) I8 ]
  48. #else
    1 Z( M" P6 B  u* m* U  R, t
  49. #define DMA_PRINTK( x... )  b& [; w/ a; _7 {( o' b. b
  50. #define DMA_FN_IN9 w( F  t1 K) j' q' q( R
  51. #define DMA_FN_OUT2 p# Z& [8 X+ P  {  D
  52. #endif
    ' n0 Q- k5 Q, l( l5 q7 a% l
  53. ! \, w0 `+ V* Q* n( o: l
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)# {" W! I% w; y; D; @6 }. I
  55. #define STATIC_SHIFT                3- k7 Y2 [, V8 a& d. m( `% [4 D8 n
  56. #define TCINTEN_SHIFT               20
    , j. f& o, t- v. T
  57. #define ITCINTEN_SHIFT              210 {$ x; E% Y+ S( K2 ?
  58. #define TCCHEN_SHIFT                22( T4 W  V/ g( O7 `: d
  59. #define ITCCHEN_SHIFT               23+ r; v" \4 \: R4 a2 r/ ]
  60. # J- ~# _: n8 J1 ]3 \- q- f
  61. static volatile int irqraised1 = 0;
    - a' s. ?6 W1 r: ^- V4 I
  62. static volatile int irqraised2 = 0;) d" F1 R+ |' E2 O: J# l# z
  63. ) a5 @! c  Z7 a1 U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 i9 C! O0 \8 i
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 X+ N$ Q$ ~9 j) {9 p
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " N5 }! H' h# ]1 ~% J9 `+ M" M

  67. 9 W% V2 F  |  n) L! e
  68. dma_addr_t dmaphyssrc1 = 0;7 M5 ^9 p. {, Z1 X
  69. dma_addr_t dmaphyssrc2 = 0;
    . k1 p5 p1 U8 T( n2 x& {. L$ H. h0 N
  70. dma_addr_t dmaphysdest1 = 0;
    % S$ S& v( G; y0 \. l' V
  71. dma_addr_t dmaphysdest2 = 0;
    2 K( W+ `9 L& E' K1 w  S2 Y  k0 P

  72. : y% t- A% X& A9 u
  73. char *dmabufsrc1 = NULL;) X; x; V7 p9 A- |; C+ H
  74. char *dmabufsrc2 = NULL;0 M' C6 d9 V8 {
  75. char *dmabufdest1 = NULL;
    ! t0 c. @/ z* e
  76. char *dmabufdest2 = NULL;; f! u+ l; I( M2 n8 P1 ^" w

  77. $ d* k0 @7 Q! W7 S
  78. static int acnt = 512;0 G  F8 M  l5 T8 g
  79. static int bcnt = 8;, S5 K% F# m" l! W7 j: E
  80. static int ccnt = 8;
    , v- a$ K6 j( D7 u- y! r' I

  81. ( w2 z3 Y0 l/ i% X7 w: f$ L
  82. module_param(acnt, int, S_IRUGO);" a" z/ n; H6 F
  83. module_param(bcnt, int, S_IRUGO);: n2 b1 Z$ L7 ]0 p- a) D
  84. module_param(ccnt, int, S_IRUGO);
复制代码
* u, h7 ^) @0 P

# i* ^9 \) `2 a4 _9 E& P      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
0 F: T" P& k. Z3 larm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
6 E8 X# q; n" u( [! \1 S     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。: ^  h$ A8 P- P; G7 j2 `; h
. g  |6 a- H/ @; B
, ^! q/ u) P4 M, e, K% ~; ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 02:26 , Processed in 0.040620 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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