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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
* \- H1 |; i9 O/ `% b
  1. [code]EDMA sample test application' l' V) c' n2 ^% i$ E
  2. /*& Z  H: v3 ]% g
  3. * edma_test.c
    1 l! ~: J8 t6 Y) j, }
  4. *, N0 f# k5 f( n& |/ u# U
  5. * brief  EDMA3 Test Application
    . l5 H; Z5 X/ g. M% ~
  6. *5 _9 P2 C2 a+ [# k) m
  7. *   This file contains EDMA3 Test code.
    # D5 q; T: ?7 _7 [2 ~
  8. *
    / O& l% v$ _$ c# u
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    0 \; d! R) w9 w0 |& T! ]6 Y9 C
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % m. l- I1 G4 r) F' Y$ _
  11. *         TO CHANGE.% `' {. [, K6 w/ P7 ]0 |
  12. *
    : ?9 |9 G, B. d2 f
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ) ~! ]) m0 X, ?/ p# G5 G8 a: n
  14. *! L. o2 W' L/ \- h5 V
  15. * This program is free software; you can redistribute it and/or
    ) i8 l& I9 O. C6 g6 i; g" ~
  16. * modify it under the terms of the GNU General Public License as5 j! _  l& Y0 e$ |2 g
  17. * published by the Free Software Foundation version 2./ }% U$ o  b7 [
  18. *# B& y& \7 r, x+ ~
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ! O) q4 C3 G& z0 R7 [
  20. * kind, whether express or implied; without even the implied warranty: ^, N- a- ~1 l+ `- O9 h
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the2 t% W  v9 _" H7 F
  22. * GNU General Public License for more details.: M6 ^, ]3 z: {
  23. */
    ' N5 J5 d5 u/ @3 d* R

  24. / j0 k# p  Y& p" v( V  _4 r: A
  25. #include <linux/module.h>
    1 ~' P" B/ ~6 T
  26. #include <linux/init.h>
    7 T- G) A( K9 o( X5 L: L+ a- Q
  27. #include <linux/errno.h>/ E! ^' k$ W& K- l
  28. #include <linux/types.h>
    0 b3 w9 c6 R* g0 W( D
  29. #include <linux/interrupt.h>/ V3 J7 l3 v- w) o- \; f/ Z
  30. #include <asm/io.h>0 G; v% W8 G9 U
  31. #include <linux/moduleparam.h>, M6 z8 v+ B' b1 t$ J& M' F, x
  32. #include <linux/sysctl.h>- M4 B, |# o( R1 v, e% h) t
  33. #include <linux/mm.h>
    , A3 X& C( j0 m) a! \2 n* a& z
  34. #include <linux/dma-mapping.h>
    * o) P0 u3 C# Q8 i8 V: g4 m

  35. 3 _8 u  E# Q- M2 a
  36. #include <mach/memory.h>3 G5 l; y9 i2 {; X  W% u+ i# O0 a
  37. #include <mach/hardware.h>
    + y! H+ I. V7 a/ y, N: g" F
  38. #include <mach/irqs.h>
    ; q' Q3 d# l0 o  d" V# X2 E: ]
  39. #include <asm/hardware/edma.h>. D6 @! U" F  E1 [8 D# x" `$ y5 p
  40. * I7 [3 b5 f. |" }* n: D8 L1 c
  41. #undef EDMA3_DEBUG
    7 d  ~+ b6 s; X9 S$ p( j' l$ D
  42. /*#define EDMA3_DEBUG*/
    , v- E! I9 P: j" Y; w

  43. % m/ C* \- e! m$ [( Q
  44. #ifdef EDMA3_DEBUG
    5 R2 t" q  S; q8 P* X& U1 G# ?
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ B1 b% G" ?3 Y  z4 o
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    " P6 b% Z9 o1 Q3 C3 @- c) `9 ~! G
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)6 t* m, Z' T. K" T& p+ u8 z5 @6 g
  48. #else9 c( Q. [4 h* p/ q
  49. #define DMA_PRINTK( x... )
    1 T% k# N0 X8 o2 z# r
  50. #define DMA_FN_IN4 U# g2 s4 ^) E9 V/ I: ^
  51. #define DMA_FN_OUT4 A2 R# }- p5 t4 [
  52. #endif
    6 m, ]% h5 f, p3 J0 D2 a; c: A

  53. 5 A6 n& T% r2 ~. e5 r
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; G: S8 r) A' h8 j
  55. #define STATIC_SHIFT                39 y' g/ v5 _$ Q2 `
  56. #define TCINTEN_SHIFT               20
    3 Q6 g( V0 |$ B$ |
  57. #define ITCINTEN_SHIFT              21
    ( A; X6 E8 A; E0 N- p8 n8 R
  58. #define TCCHEN_SHIFT                22
    7 H0 q; L6 x( s, @5 ~7 \
  59. #define ITCCHEN_SHIFT               23( z, C6 O. C0 q% \2 z
  60. + J- q2 @/ n1 B( S
  61. static volatile int irqraised1 = 0;
    $ ]3 C) w: g5 q
  62. static volatile int irqraised2 = 0;
    9 k9 s% P" V+ b$ j

  63. : W- P$ Q# o3 z' t, e
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, F) _0 a& G  C' Y$ w8 K- A
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! S: [' Y+ M1 Z; a% I% R7 Z' U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 B& _/ w6 c3 }# v5 _6 @

  67. " k9 |  A' t& G4 V
  68. dma_addr_t dmaphyssrc1 = 0;2 t1 f. k7 O6 k- m+ @8 p- A
  69. dma_addr_t dmaphyssrc2 = 0;% b% g2 D2 Z# K- G. J+ D+ _
  70. dma_addr_t dmaphysdest1 = 0;: l2 v/ j* W- F" C% }
  71. dma_addr_t dmaphysdest2 = 0;
      K1 @. |$ G9 w, F# H! r( A

  72. 1 O; {3 S% G& `3 g' t4 g
  73. char *dmabufsrc1 = NULL;
    ( J, \6 E6 T# U+ J  q7 T! X0 D2 M
  74. char *dmabufsrc2 = NULL;
    ! y1 o, j" M6 b1 C/ g% v
  75. char *dmabufdest1 = NULL;
    1 o+ Y) _( B0 H$ l: Y2 X
  76. char *dmabufdest2 = NULL;- y: Q" p6 B" w/ j' W- X

  77. 7 U' |+ Y  t2 ]- A
  78. static int acnt = 512;
    ) c  H: p) L0 t4 v
  79. static int bcnt = 8;2 |: `" ?# T5 y
  80. static int ccnt = 8;* O6 g: s8 x& y/ L0 y- ]% S, d

  81. # a3 j5 ~# i& z3 H1 F
  82. module_param(acnt, int, S_IRUGO);% I. L6 e5 G$ R; |2 t7 P1 Y9 j  r
  83. module_param(bcnt, int, S_IRUGO);5 a3 V, S$ x: a5 t  {
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 `9 A8 W  E6 _$ y

4 O, V! d8 R  j( B/ I+ ?" g      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
. y# w! I" u0 O) y& v1 narm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。  s0 |3 C" {# y% j* ?! p
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! _: b+ w$ |- m, Z+ S
" X7 z5 X% U7 @+ n3 T/ f
2 V. h1 R6 \% Z. M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 11:10 , Processed in 0.046168 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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