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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 7 |1 L* o1 b, Y
  1. [code]EDMA sample test application) w& D2 G9 c( a1 j3 }7 ^- B
  2. /*7 E2 w& k) P) r5 `: O
  3. * edma_test.c
    2 M$ |! c0 n% Y- T! ]- D! q4 v
  4. *1 f2 t3 S5 D' j2 i2 e
  5. * brief  EDMA3 Test Application; A! O; C; G9 \- c% {8 O1 S! ]
  6. *2 Z3 U' r: J  f5 r  H7 w: o8 G
  7. *   This file contains EDMA3 Test code.
    3 E7 g9 m! ~: E7 U, _/ e' o# h
  8. *
    & w" h' }4 d* q1 F) t2 u
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ! B  s, _3 u& c& X; b( D
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT9 c6 g7 H  T( w/ ^. X/ u
  11. *         TO CHANGE.4 \  n) F) m8 l) J' E7 o% o# ]
  12. ** L( Q2 P! }' a5 n1 X" B7 m3 r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    : O/ U# n; [* |# N' V+ f: N
  14. *
    ) x& A0 Y6 ~+ ^0 J
  15. * This program is free software; you can redistribute it and/or
    4 L3 T4 Y6 ~. P, U) l. e- S' N, l
  16. * modify it under the terms of the GNU General Public License as/ h8 o$ L0 ^4 X1 S6 v  x7 c& \3 J2 Z
  17. * published by the Free Software Foundation version 2.) |6 [) R2 O  U6 e* \3 G
  18. *! r! v/ U6 m% x
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ n& y: \. G, f5 Z
  20. * kind, whether express or implied; without even the implied warranty( u  v' G7 i1 r0 |: Y( L9 L
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 O; L4 h# d( p% R
  22. * GNU General Public License for more details.1 B) g/ ~! J) d  _5 _0 n
  23. */% |' m+ B* D5 n+ c; n9 g
  24. 3 X4 A& K7 z" c) W+ E/ S
  25. #include <linux/module.h>
    - |8 E  w. a9 V: f
  26. #include <linux/init.h>
    + b% n8 n* \% P7 [$ t. @
  27. #include <linux/errno.h>
    2 v" T; B, F/ J2 K# A7 v5 Y2 A, a
  28. #include <linux/types.h>/ L/ S, |' R6 Z; h
  29. #include <linux/interrupt.h>/ H$ D$ q: y& ?9 S; v3 S
  30. #include <asm/io.h>5 B) W; L2 L! q8 }
  31. #include <linux/moduleparam.h>
    : ]+ W& B& W5 R. q
  32. #include <linux/sysctl.h>2 h  I$ e0 P1 `. a. z6 I9 X: O0 q
  33. #include <linux/mm.h>( ^& n8 D4 x) ]5 d, ?, {8 N% T
  34. #include <linux/dma-mapping.h>
    5 @, g) M9 ]0 T2 Q* f4 m
  35. 7 V7 t* `5 G3 L+ f% ^
  36. #include <mach/memory.h>
    7 s$ e1 m- a3 k# N* U# `! a
  37. #include <mach/hardware.h>- c: ^3 R( `9 ], k+ a- k4 J
  38. #include <mach/irqs.h>5 E" N! N+ Y+ {  _9 F
  39. #include <asm/hardware/edma.h>
    ' k3 i& x: U3 p

  40. 4 F) P, d, Z/ D5 G4 u
  41. #undef EDMA3_DEBUG
    ' i4 t  t( q$ E7 K
  42. /*#define EDMA3_DEBUG*/
    ' ~  \. A2 ]/ L' P4 e
  43. 8 a% l: I$ _: G3 _& X
  44. #ifdef EDMA3_DEBUG( D5 n  w: I( Z6 i0 y( I) n# x
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    $ S) S  L+ y6 A6 c
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 S" B1 ?/ g* }# d5 K  ^! Q' H
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    . o7 f# R- V* v2 f: }8 Q
  48. #else
    / ?3 {+ Q8 i. D) D* j, q
  49. #define DMA_PRINTK( x... )
    # h% k! ?, i" e% R! ]
  50. #define DMA_FN_IN8 c, d* |3 L- D/ B
  51. #define DMA_FN_OUT" a1 E! g" L; F7 _+ y( S* v3 T- W
  52. #endif* M0 D" q  b6 I" p2 j+ z
  53. , n+ P  T, _$ `7 p9 M
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)+ s4 P8 }+ c- K. o; t
  55. #define STATIC_SHIFT                35 i' {" Z% b7 Z" [  J( i
  56. #define TCINTEN_SHIFT               20; @) X) |" |" |
  57. #define ITCINTEN_SHIFT              21
    * a6 F' t9 C+ ^# Q. `5 ^
  58. #define TCCHEN_SHIFT                22% }, e5 g0 h" M7 W- B
  59. #define ITCCHEN_SHIFT               232 X7 O) r# C3 T+ g

  60. # _* ?$ z2 |5 F, q  Q
  61. static volatile int irqraised1 = 0;$ @! X7 ]! X. r: J- ~9 r
  62. static volatile int irqraised2 = 0;
    ) Y, J  E4 t4 ~; y* u# s

  63.   @2 F3 w/ b# H2 g7 K% l
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . I- d' y( S; h" ~& t  ^- Z
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 K; |3 y( M5 h: ^) @
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - E2 d2 A1 |, h! g8 }" f* ~

  67. 0 ]1 V  t: r( a  n+ d
  68. dma_addr_t dmaphyssrc1 = 0;, m8 U% T/ j( ]. d7 G1 p
  69. dma_addr_t dmaphyssrc2 = 0;7 L: W1 }0 x5 c1 j; Q
  70. dma_addr_t dmaphysdest1 = 0;0 e/ E' Q# ^! c# z
  71. dma_addr_t dmaphysdest2 = 0;
    + P* f  E; J  U7 W" h

  72. 6 S) Y9 P% j, h/ H3 Z7 l* X
  73. char *dmabufsrc1 = NULL;# |  j! d$ K4 u8 W0 |, }( c$ ]
  74. char *dmabufsrc2 = NULL;
    ! L5 f+ R, ^. b1 A
  75. char *dmabufdest1 = NULL;
    # x5 Y5 m  ]: {
  76. char *dmabufdest2 = NULL;' `, A  q/ R  \: ?% B2 ]& S$ B
  77. 1 z2 y; v& a, c; e! A
  78. static int acnt = 512;
    ) h0 d; p7 T8 k* f
  79. static int bcnt = 8;
    3 E9 v: Q% O+ b+ g, ^* L3 s3 v" }
  80. static int ccnt = 8;
    ( `; J* m! |: x/ Y

  81. ( _& L% z/ B+ G+ X
  82. module_param(acnt, int, S_IRUGO);. L7 L  O( C/ I5 j" o- |
  83. module_param(bcnt, int, S_IRUGO);
    " W' }# X( x% E& M( J' e
  84. module_param(ccnt, int, S_IRUGO);
复制代码

5 l" f; i8 E* ~) N; S" s/ s# E. J
; m0 a: [5 k9 y  \9 _% o! B      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用$ R( C" C" L; m$ Y# a3 e; o8 B
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。9 S3 |6 h  l/ o0 Q' T+ }0 x0 _0 J
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
6 p$ L$ v) T/ A; ^  F- P! P) b! O* a5 d% l6 Z  P
. I7 p. f' N4 C- ~, S/ x6 t8 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-29 18:32 , Processed in 0.038949 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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