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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 5 y5 B. G4 S3 i# S6 U+ A
  1. [code]EDMA sample test application) G2 z, m0 Y/ u+ H% ?
  2. /*4 R" b  N4 q9 a( i& \; y
  3. * edma_test.c
    # z$ j/ q6 r' X
  4. *) D0 ?) e9 i* A: O5 E
  5. * brief  EDMA3 Test Application$ h0 W9 k8 {7 u- A& u* Q0 Y1 R
  6. *5 r! m- ?5 W0 ]
  7. *   This file contains EDMA3 Test code.
    2 P, g* N! Z+ j0 ~1 `2 X
  8. *
      r$ Y# m6 c9 u  r' T. I, s
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    1 v& }/ d) F$ R. X# }1 T  @
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ; \, q/ k* {5 n' p7 P" Y5 _
  11. *         TO CHANGE.
    / r2 `3 ]! _& U* }! K3 A* g
  12. *$ {' q8 a/ w3 u" d; N; h4 F
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) ^2 l# r* l, D2 L9 f$ t
  14. *) {6 T6 u! U8 T0 @
  15. * This program is free software; you can redistribute it and/or
    . Z# O3 b: _7 t9 w- [/ G" {
  16. * modify it under the terms of the GNU General Public License as
    1 k- w" o6 v8 q6 q( Y! I
  17. * published by the Free Software Foundation version 2.) Q, u" I" X2 H) {& J9 f
  18. *
    . k% i7 ]5 h9 b! W" D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # a) L8 D* O. p$ Q
  20. * kind, whether express or implied; without even the implied warranty3 H3 f/ [) C8 D5 F. e- h
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the; V7 w4 l  [  T/ J/ ]6 y8 V
  22. * GNU General Public License for more details.# M& Z! y- y6 v4 t2 Z: f
  23. */
    ( Q, E9 s3 ~3 F8 Z
  24. , H. p) k& ^; t! F, e3 j% N5 ?8 `
  25. #include <linux/module.h>
    - p; l* Z3 T$ }4 y. ^
  26. #include <linux/init.h>
    0 m! K$ F: Q  I3 m  o
  27. #include <linux/errno.h>. k, k- U2 S5 X  T0 J9 ^3 I
  28. #include <linux/types.h>4 ~5 H3 ^& `. A/ h7 I
  29. #include <linux/interrupt.h>! L" b3 h% L9 s, E
  30. #include <asm/io.h>) ]  [- W3 F0 f" O
  31. #include <linux/moduleparam.h>8 Q9 K/ O  m1 @3 R( w
  32. #include <linux/sysctl.h>. l) O( L; x) z  K" i& S# G" f
  33. #include <linux/mm.h>5 B" _' C8 s* x7 I! S* t$ ~
  34. #include <linux/dma-mapping.h>
    4 w! i1 {# u+ s  z

  35. : `$ e' M9 x6 |3 g" U- n
  36. #include <mach/memory.h>
    & `1 o6 X9 S4 U* F; J* h- C
  37. #include <mach/hardware.h>& @0 E4 J: {  b& n' k! @, O* F
  38. #include <mach/irqs.h>* H4 f+ P0 L8 u- M  |6 k
  39. #include <asm/hardware/edma.h>
    2 q& _# ~6 ^" s
  40. ! m( M9 q. y5 D; l) T
  41. #undef EDMA3_DEBUG
    1 d7 [/ m3 r# V1 O4 b0 I
  42. /*#define EDMA3_DEBUG*/
    / R# x7 x7 l2 D0 {2 R9 ^
  43. % Y$ N3 K8 r, y/ C
  44. #ifdef EDMA3_DEBUG
    & j* y5 t4 [" W4 g/ w
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 f* y+ _( j0 E6 a
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 d0 C% Z1 z% F* }, Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__), i( w" V/ {3 d3 E( j9 O% }
  48. #else
    , @% X* i- B* c' H* w, i) W/ z
  49. #define DMA_PRINTK( x... )
    $ Q  |/ m$ F& {6 m0 h
  50. #define DMA_FN_IN
    ' @% S9 i* W% _: v) h3 H; A% f
  51. #define DMA_FN_OUT
    * V8 p- K9 O+ u4 ]8 I: g3 X
  52. #endif
    ( G8 W& I3 R: ?$ U4 O9 A* O% Q# p

  53. ! z, U3 P+ k4 d: c7 _- k2 J
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ' c# V4 E# ^& _3 g
  55. #define STATIC_SHIFT                3
    7 M! U& f; @: |" E! m
  56. #define TCINTEN_SHIFT               20
    6 j4 M# a+ l$ C3 d
  57. #define ITCINTEN_SHIFT              218 P* K9 g  L4 B  Z$ S* |6 }6 ?* L! e
  58. #define TCCHEN_SHIFT                220 r4 k5 q  _+ H! b) m  m' Q" a6 a
  59. #define ITCCHEN_SHIFT               232 ?+ R8 F4 d, K" M
  60. ; o+ {  s2 S) o& W9 ?- F
  61. static volatile int irqraised1 = 0;
    8 J# ?' V+ {* F: G: a/ E
  62. static volatile int irqraised2 = 0;3 [4 _& z4 M. K% C+ Q. a0 ~

  63. # V9 _9 p8 I% s  c4 X4 N- u
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , b/ t" ?# p7 S# K# z4 y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) ^4 g. q# q6 {7 c; z* R( \5 j- \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' \. X: M: G  M2 C/ S
  67. ) a& r2 ?" x7 W2 Z- p
  68. dma_addr_t dmaphyssrc1 = 0;6 P, _+ T4 P) F$ T  L1 H  k5 p
  69. dma_addr_t dmaphyssrc2 = 0;
    3 K: ~) O) v9 Q0 j* d4 @$ Q1 K2 ^% o
  70. dma_addr_t dmaphysdest1 = 0;
    8 W  T$ y+ }. W, u
  71. dma_addr_t dmaphysdest2 = 0;" [6 i8 Z  L8 t5 G! ?$ d
  72. % ?* s3 Y/ Y: Q2 e; k
  73. char *dmabufsrc1 = NULL;
    / \" e3 J8 ]$ c3 p
  74. char *dmabufsrc2 = NULL;0 A# g) ]7 K3 U0 ?3 l8 |' |
  75. char *dmabufdest1 = NULL;
    6 |2 N  X% y1 S/ W' \9 t
  76. char *dmabufdest2 = NULL;
    3 X! Y* e. w6 a7 ^7 D& `% k. A

  77. 0 \! p- s% b9 H& {8 r2 w
  78. static int acnt = 512;
    , e$ u6 P) I" ^6 Q
  79. static int bcnt = 8;6 ~% r& P! ]& l9 E# w
  80. static int ccnt = 8;
    7 R1 [: {' n. u- p& [- j# @

  81. / X5 [% `" e3 ^, T& b% q, H% j
  82. module_param(acnt, int, S_IRUGO);
    * b' h) B2 b  o2 Q3 s: {
  83. module_param(bcnt, int, S_IRUGO);# ]1 F! A! I' O& S9 F% l7 y' u
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) v& v' v& P' A) v+ x: ?! {' y: T" t) r6 F( M
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
) S" I1 H9 ~! d8 @* o9 N! k) xarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
- h" e1 M/ W' U( t! a     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
  \  _4 i3 Y0 J9 V$ ~6 m( s1 F. [! l5 k# z
- }3 I4 ?8 K) p9 \: V. x) g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-5 07:30 , Processed in 0.036864 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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