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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
' M/ T9 L4 @  O  |
  1. [code]EDMA sample test application
    5 s8 V( r( r  b/ Y
  2. /*  M" p8 @/ D  O( |. ~& a7 Y
  3. * edma_test.c
    ( ?6 B% R8 E- V0 u! P
  4. *
    % P/ f% [# }( D' S0 v6 ?* V* f& Q
  5. * brief  EDMA3 Test Application
    . A  k- S0 X& P
  6. *
    6 y3 o. R$ e# I; ^' k8 w
  7. *   This file contains EDMA3 Test code.
    7 q6 A) m$ I7 X$ z# y
  8. *
      t& V5 j/ {! s$ ]3 B- d5 R/ D
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: T6 }( B9 q) V& O' Y2 R
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT" C# b: z0 y5 j# s5 ]
  11. *         TO CHANGE.
    + k& O5 P8 `% v0 b
  12. *
    : z3 l! b. N# Z* {( U+ {  D
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    5 D8 `/ T# ]. @* a1 w
  14. *& _3 h. e$ R+ M: \0 R7 v
  15. * This program is free software; you can redistribute it and/or
    * }4 @  @7 Q. ^9 `& h' s
  16. * modify it under the terms of the GNU General Public License as
    ! Q; p* p" F" m4 V
  17. * published by the Free Software Foundation version 2.
    8 ^5 _7 q: i; y; w" o  E
  18. *  P- I- B" _; L
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- e: N7 I9 O% R" U+ z3 S. G
  20. * kind, whether express or implied; without even the implied warranty
    % u2 H- a, k& ^& D* {( q" H
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the0 t& K4 g/ r7 K
  22. * GNU General Public License for more details.
    " L" e& I! b; X+ v% P
  23. */
    ( k. F1 ~, M! ?; A: H3 K- ?

  24. + t7 L- \7 C, v( v7 t# j
  25. #include <linux/module.h>  i& V) d1 T3 E1 I# O$ v1 s" q+ M
  26. #include <linux/init.h>
    2 \: g/ e1 A, t  i1 y# T' e- m
  27. #include <linux/errno.h>. o4 C6 x1 |1 o' h
  28. #include <linux/types.h>
    2 `- i( U9 t/ Y. I3 z0 X* ~
  29. #include <linux/interrupt.h>
    * x4 |6 B- @6 ]. e
  30. #include <asm/io.h>% P/ [5 Q, ], S3 j
  31. #include <linux/moduleparam.h>) P( F' h" m( z/ g3 p+ _2 }5 u5 F
  32. #include <linux/sysctl.h>0 x$ e- G) }  |8 d1 b" V
  33. #include <linux/mm.h>
    + L, e$ F5 x9 A! i; r
  34. #include <linux/dma-mapping.h>
    ) l/ g* |; ?0 \2 K
  35. / p6 r% w& `6 c& y
  36. #include <mach/memory.h>$ v- p" c" l4 E  X
  37. #include <mach/hardware.h>( B& x. B( R/ ?6 n
  38. #include <mach/irqs.h>
    / t! D* g7 [' q5 X
  39. #include <asm/hardware/edma.h>3 b- W8 ]7 D" u8 q' S8 J
  40. : a/ b8 D1 U% c+ Z" L4 f0 q
  41. #undef EDMA3_DEBUG
    6 {4 n' y' x7 G: K5 `- r
  42. /*#define EDMA3_DEBUG*/
    ! |& {/ u) X: P& U" G0 @

  43. 8 D, ?) b: i. S: t& S4 d4 I
  44. #ifdef EDMA3_DEBUG% N3 I& }5 d+ r7 f
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ( E) Z2 d8 C( E9 B3 T
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 Y% O7 t, d* c% q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)8 N0 f" y  D1 `6 B: H. P/ z
  48. #else8 k! O6 H/ P& V0 I9 K
  49. #define DMA_PRINTK( x... )
    ' h' s; Q$ h3 U' P: N
  50. #define DMA_FN_IN* e# j: y0 a% [% @6 `
  51. #define DMA_FN_OUT9 Z$ y% E4 ]5 L2 A5 L  p! g
  52. #endif( A$ C5 `' k' u, Q5 n+ b3 t- n
  53. 9 T: ]9 \# j" W5 @2 B7 W
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)" r6 d7 {" {, R4 _
  55. #define STATIC_SHIFT                3+ s: ]: ?$ Y! |& h
  56. #define TCINTEN_SHIFT               201 {# a- L$ U& ?8 f
  57. #define ITCINTEN_SHIFT              211 T- T7 }0 g/ [& @3 _1 \* j0 e/ @
  58. #define TCCHEN_SHIFT                22
    3 N( ]) F) n4 i8 R2 G
  59. #define ITCCHEN_SHIFT               23, O0 h0 J0 r: i% J
  60. * J' o; A  A6 Q0 o2 g: c& s) I
  61. static volatile int irqraised1 = 0;9 ^/ j& B6 N1 b  D
  62. static volatile int irqraised2 = 0;) [9 ^# j7 p0 v4 G8 U
  63. ) b6 M) m8 T" |7 h& J/ s
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ |- F! F& `6 |: E0 A' Q6 b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : s! v3 O7 v+ r( Y
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 n2 E. Y1 A1 ^+ @' Z' p2 U# T
  67. 0 y" O* Q5 d! ?
  68. dma_addr_t dmaphyssrc1 = 0;
    + H2 q2 L/ A) {, a
  69. dma_addr_t dmaphyssrc2 = 0;
      x, X8 N- D8 e1 {- a
  70. dma_addr_t dmaphysdest1 = 0;
    ! o: {; ^! J! x. W3 N3 L% I* r9 h8 o2 b
  71. dma_addr_t dmaphysdest2 = 0;6 o4 X- g5 N4 f' ]' Q
  72. & d5 R; q4 R" O+ M' {: f. |
  73. char *dmabufsrc1 = NULL;
      S6 k3 @7 W9 d, [1 c6 e
  74. char *dmabufsrc2 = NULL;
    8 M) r2 A: h, @( \5 q# T4 }
  75. char *dmabufdest1 = NULL;# Q# r3 t9 [' i! I
  76. char *dmabufdest2 = NULL;& a1 }* F* x$ y! z' S' s1 i  A1 S4 ^
  77. - o; k/ y$ V3 U5 L, c1 r
  78. static int acnt = 512;
    8 K4 `! W: q" [- ?; i  z, J
  79. static int bcnt = 8;
    3 I' k/ H# w6 m! ?9 r
  80. static int ccnt = 8;: m# c/ H* w' z! z- Y- H. {

  81. $ w5 J/ N( n  ]- T, p
  82. module_param(acnt, int, S_IRUGO);
    % W5 c! m+ @* w5 x% v
  83. module_param(bcnt, int, S_IRUGO);
    & e+ [0 q" C, ~  H+ O
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ d3 d5 h: i+ \/ A

3 v  d/ z  F( m4 ~7 U# v      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用/ B7 C* a3 o7 T: I7 e
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。$ {8 N+ e' p1 L% P! l  v& O! L, h
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
4 ?! [1 {+ K5 [% F& u8 l8 C2 a4 i$ p% M6 M; m
* a& J5 ~; H# ]- Y1 O" Q+ P* W2 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-20 03:58 , Processed in 0.042835 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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