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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ c/ ^! Q/ F: D; Y3 k4 _
  1. [code]EDMA sample test application
    , \/ D/ y& u6 j4 b5 H5 B- s
  2. /*
    ( Q5 s' E  J- f/ o, r* |! e6 w
  3. * edma_test.c
    $ s) y9 i5 h" F) }
  4. *
    5 j, G9 ^  ?) M9 O9 M
  5. * brief  EDMA3 Test Application
    + @, }, T- W' N& Y1 ?4 W2 Z1 R1 K9 U
  6. *
    ! T9 }# B+ v5 _- {( v. {# A% g
  7. *   This file contains EDMA3 Test code.# v; u* Y2 C! S) M/ p0 n6 }( {
  8. *
    / ?3 c% g0 Z+ ?1 q
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE  X4 C& f! s5 U4 r
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ! l  X# Z9 M, M" _% s% @$ {
  11. *         TO CHANGE.- l  }9 {' _) l/ e: Y4 D
  12. *
    ; Y+ e0 l6 k1 r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/; X% R' K. @4 ?2 J8 g8 _. Q
  14. *: p: B! r) v, P1 x
  15. * This program is free software; you can redistribute it and/or2 d4 o6 r% E  _! S) u* Q
  16. * modify it under the terms of the GNU General Public License as4 S) o! x$ T$ ]6 p  ?
  17. * published by the Free Software Foundation version 2.
    9 x  U1 H) M& k# N$ i6 k
  18. *5 Z  f! D. l. M' W1 {" q
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ' U; f/ ~- G  {( Y
  20. * kind, whether express or implied; without even the implied warranty
    : W+ }) U' ^2 P: e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$ b( `. o. ^8 i3 S$ X
  22. * GNU General Public License for more details.! f: p/ ]0 q' G
  23. */8 S+ m) c0 ^; R& {( [0 E$ o

  24. 2 z: m' l! {' d* u. W
  25. #include <linux/module.h>) c9 B1 |( u* y- h) Z
  26. #include <linux/init.h>
    8 [5 R( Q: j1 }9 v
  27. #include <linux/errno.h>7 h8 x' |0 a; A+ Y% k
  28. #include <linux/types.h>
    ; y1 L' Z/ s3 H( S* ?
  29. #include <linux/interrupt.h>
    ( w9 y) ?8 X3 j9 Y! M  ]7 q
  30. #include <asm/io.h>
    - k" O5 q* ?* j& v
  31. #include <linux/moduleparam.h>
    2 f" r. T$ Z8 b& l8 ~8 M
  32. #include <linux/sysctl.h>
    . E: V% Q( S6 j
  33. #include <linux/mm.h>' I. E2 S6 O$ g8 |
  34. #include <linux/dma-mapping.h>
    - E2 M4 n2 D. Q( ?& g) i* c
  35. ( c! ^8 {+ q: l
  36. #include <mach/memory.h>/ b7 q0 C* l3 E+ @: Q4 N
  37. #include <mach/hardware.h>
    $ s) ]. Z$ z0 V% @* Q
  38. #include <mach/irqs.h>3 L' N* G3 d6 B6 M# {, a2 s
  39. #include <asm/hardware/edma.h>
    - [7 h' W9 l' b- M; A  H2 d& d
  40. & H& D+ E% M7 Q
  41. #undef EDMA3_DEBUG- a2 E  F3 S; ]% F
  42. /*#define EDMA3_DEBUG*/, B1 m% }7 Y" u2 k

  43. 9 X0 s7 Y! J$ [2 u0 @8 _
  44. #ifdef EDMA3_DEBUG
    : o" e6 Q* c' ]- F; J1 q( j1 `8 E6 G
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 H+ s. p' U' j$ i# |
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__). Y% k% S3 T* s6 w: [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    3 Q" q4 v# w7 u: B. |
  48. #else
    # C/ d; ]2 R& ]+ V; F7 s: \8 ]
  49. #define DMA_PRINTK( x... )' R! c* {. _6 m! C2 D8 m  S4 m" Z! i
  50. #define DMA_FN_IN
    / @7 ?" Y* S& K. G3 {
  51. #define DMA_FN_OUT
    - Y  g& m: o5 r9 X( ?
  52. #endif
    % O/ k4 m/ B2 c7 p

  53. % J0 Q5 _9 R! e8 R7 K. R: @3 }
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    7 h5 u4 P$ e8 T5 a# M4 @
  55. #define STATIC_SHIFT                3
    ! b, s3 S( c) g3 V# c+ D3 S" X
  56. #define TCINTEN_SHIFT               204 x$ t. P( c, @5 q
  57. #define ITCINTEN_SHIFT              217 I! z( E- z1 d# O( T  {
  58. #define TCCHEN_SHIFT                22
    ! a5 u1 n7 k6 ~/ ]+ G
  59. #define ITCCHEN_SHIFT               23
    3 q4 r3 g0 @4 T+ c- J

  60. 9 o$ ^+ k3 g* _3 f! Q
  61. static volatile int irqraised1 = 0;; M. c" D4 g* l/ |) V2 W
  62. static volatile int irqraised2 = 0;) o& p0 M$ z5 ?; l% O

  63. 1 M+ d8 l, F: r' Y2 f+ y" p
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 Z* h* h; J4 d% d6 R, S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & `: h; y0 V: T/ y) j& p; i1 v8 J& Q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : b" F$ o1 v8 N5 D1 e/ b/ i, W! h

  67. / w* Q/ o6 M. B. l
  68. dma_addr_t dmaphyssrc1 = 0;
    ! P1 [) G0 `1 O# b4 o; ?
  69. dma_addr_t dmaphyssrc2 = 0;
    / o' l8 j( G0 m( m5 }8 G# m+ d
  70. dma_addr_t dmaphysdest1 = 0;. U" B: H  q' O+ J9 Q3 B
  71. dma_addr_t dmaphysdest2 = 0;
    + x9 Z$ ?& J9 `

  72. / C6 ]0 z: c. Q; S
  73. char *dmabufsrc1 = NULL;
    3 K2 Y$ s; u2 D
  74. char *dmabufsrc2 = NULL;
    - P+ y0 `8 E0 p* V; v
  75. char *dmabufdest1 = NULL;; d, L  d' P( ?) Q# X7 ?) L
  76. char *dmabufdest2 = NULL;9 Q6 u6 d8 X  s7 A
  77. # e1 _5 S) k% {8 z
  78. static int acnt = 512;
    + q* {! ~, q) Y6 l
  79. static int bcnt = 8;. H& f) Z8 e) y- ^& S
  80. static int ccnt = 8;# Y# `& u# W! \+ K) q% O) h

  81. 5 [$ O1 k4 s9 e0 O
  82. module_param(acnt, int, S_IRUGO);: a: V5 M/ D$ K& @+ Q6 d
  83. module_param(bcnt, int, S_IRUGO);, M# P% e8 i$ x; m; @9 l; I! d
  84. module_param(ccnt, int, S_IRUGO);
复制代码
# }3 K' y; B, z9 ~
# ^3 K: P) y3 J, K7 j3 L, J
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
! i7 [: j  G- E8 z1 O& Varm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
7 A8 {  B% ^6 c/ s0 R     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。6 W3 ?7 a. i( ?# D* r
( {$ b# H0 V- R0 Y- I

8 P3 W( g' e  ^: y, u/ h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-22 03:22 , Processed in 0.043528 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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