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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. S0 W) u8 u- s% F8 @4 @- C
  1. [code]EDMA sample test application; d, R3 ~: P2 T6 ?& {3 w
  2. /*; f/ X% o! Z: {- l
  3. * edma_test.c
    # {: o9 y1 K  e# p( @
  4. *8 ~7 u% t" P2 a  y+ {
  5. * brief  EDMA3 Test Application
    ! D% ^1 c' w( ~  n- @: r/ B
  6. *
    + H1 _; Z$ o) U8 }, N5 H& R
  7. *   This file contains EDMA3 Test code.
    7 m, g- e5 _; h! T7 T0 W: m7 q
  8. *; t3 W. p  I  z% o2 q
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE( v/ o4 `6 c: z0 |) N
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    5 A4 H( L; X, a: S3 A; p, `
  11. *         TO CHANGE.
    3 l. U, i) e+ \3 G
  12. *2 [+ M7 w* m) ]
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    " |5 C* W* l1 O, Q6 I! l
  14. *3 [5 ^1 h: G2 Y! M! U" s3 h
  15. * This program is free software; you can redistribute it and/or
    0 m& i5 F: H4 b% a5 p& m
  16. * modify it under the terms of the GNU General Public License as
    ! g# o" J7 o4 q' G
  17. * published by the Free Software Foundation version 2.
    & b! U( l2 I) @1 h  T
  18. *
    8 ]) C# J) N9 Y! [
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    6 `; Z% Q& J6 e" h: L* `6 j
  20. * kind, whether express or implied; without even the implied warranty
    , ~  K! \& P- v3 }" Y: B
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the- \5 G4 e2 T( }5 s
  22. * GNU General Public License for more details.' H( [) \# I( }$ z
  23. */" [8 |8 a& C. i  v& t

  24. 8 p8 J$ t# v( ^: f' ^
  25. #include <linux/module.h>
    : h* C3 Y6 t4 K# W  ]1 K
  26. #include <linux/init.h>
    * r7 f/ x" Y/ Y
  27. #include <linux/errno.h>
    , j5 |2 i7 {7 u" r- w6 a  {5 A. m
  28. #include <linux/types.h>+ O) I, J6 d5 ?
  29. #include <linux/interrupt.h>
    , B! q8 u0 T* A
  30. #include <asm/io.h>6 c9 I+ ^( f( U% S2 }+ ^
  31. #include <linux/moduleparam.h>. y! P5 Z9 m. b! Q! I
  32. #include <linux/sysctl.h>. ]: s! w/ |7 M3 A
  33. #include <linux/mm.h>
    % L, s* S: M' w+ A3 p& L4 D) F; r( e
  34. #include <linux/dma-mapping.h>) y7 l3 K- _) m" g( f6 f3 Z) i

  35. ( j2 s2 h& M' p2 u2 O
  36. #include <mach/memory.h>
    8 \6 }; X. Z2 Y4 \* T6 S$ Y) u
  37. #include <mach/hardware.h>
    " P' g0 P' |$ g; P! T& k
  38. #include <mach/irqs.h>
    1 `9 y7 l) C+ ^, c* G# l, k4 [
  39. #include <asm/hardware/edma.h>0 f+ s3 A& R+ F) b5 ?

  40. 7 v3 v0 x9 X. _9 I
  41. #undef EDMA3_DEBUG1 k5 t4 l) F9 _% |4 J/ X: U
  42. /*#define EDMA3_DEBUG*/
    1 N+ j& z' ~: Z
  43. / ~' }0 }6 E! _! ]0 D$ K( O+ L# Y
  44. #ifdef EDMA3_DEBUG
    5 X" ?* T! F4 m8 x- K
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! i0 Q4 }& x7 l! Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ) E+ S' A4 d( w) B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)+ k$ n' d# H/ `4 l; d
  48. #else! p9 L' A" U/ D2 Y
  49. #define DMA_PRINTK( x... )
    2 g% e+ E3 w% x: J, a# W
  50. #define DMA_FN_IN1 X* a& {( e- o
  51. #define DMA_FN_OUT2 S) r0 ]. M9 F/ o* \
  52. #endif) A4 r- y; a' a( [6 ?5 n

  53. ) r4 _$ p) c2 d  i1 L
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 N$ u- r5 W- }! D5 O* W
  55. #define STATIC_SHIFT                3
    0 n5 R1 y7 s4 y- g& m
  56. #define TCINTEN_SHIFT               20
    . W2 B( ]2 a2 s
  57. #define ITCINTEN_SHIFT              21" i1 e0 ^1 C% o* O' @9 _
  58. #define TCCHEN_SHIFT                22% q5 ^! E: }4 G
  59. #define ITCCHEN_SHIFT               23
    . u5 ?# [6 s$ l1 e
  60. - B, U0 x. q6 \
  61. static volatile int irqraised1 = 0;
    ; v9 c9 X& D" g; I: Z+ Y
  62. static volatile int irqraised2 = 0;4 g& t& r3 b; T
  63. ) S6 k4 `0 l7 T
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. h7 |3 U, _& i( J- a7 {
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  q' U6 A* c; M: W
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 _2 A3 S, q/ y1 x; ?
  67. . v) j- m' b) `1 ]: `" Z
  68. dma_addr_t dmaphyssrc1 = 0;# Q+ E) d) Y# a( R5 v0 b9 l
  69. dma_addr_t dmaphyssrc2 = 0;- I1 _' i5 u; k. a5 |
  70. dma_addr_t dmaphysdest1 = 0;
    " X6 C- D- e7 r2 K# {* P  i
  71. dma_addr_t dmaphysdest2 = 0;# ?+ w, S1 q6 n: n( e2 M3 \
  72. ( W, j4 L- \/ y& l
  73. char *dmabufsrc1 = NULL;
    ) h% E$ i3 H" d. N6 m# }
  74. char *dmabufsrc2 = NULL;: V  o' D8 B7 y
  75. char *dmabufdest1 = NULL;
    : q) _9 r4 G- I; J, i( _! h
  76. char *dmabufdest2 = NULL;% b/ W% @9 y- p/ x; {! `9 B0 n7 l& g
  77. 0 o+ }% `: c" {7 o% I/ S9 h
  78. static int acnt = 512;
    2 D! R, h- R. h- `) c: P
  79. static int bcnt = 8;* ~' T9 u; U9 k3 n" e: U
  80. static int ccnt = 8;, C0 B3 C* B9 A4 W1 i4 x9 u8 W* u
  81. " i5 c5 G# W- P$ e4 i5 o+ z! F* `
  82. module_param(acnt, int, S_IRUGO);
    ; m% {7 F( |2 _  j; D4 R
  83. module_param(bcnt, int, S_IRUGO);
    8 b8 [  g6 s+ E+ z
  84. module_param(ccnt, int, S_IRUGO);
复制代码

1 k, \0 f. A( `0 _
4 Z* {! \3 P& `" Y9 i7 s: v      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
& E. V( h( j! C9 w' U- @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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。0 Q! t# s! N4 T3 j
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% t% [- A2 e; x' M0 `$ I8 ^6 @& Y9 ^/ x# ]; f6 o7 ?9 F

$ a- S1 x! A7 r8 W% e) e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 04:47 , Processed in 0.041477 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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