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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 9 B$ M5 d, S" A4 b' m" R( V) x3 p3 K
  1. [code]EDMA sample test application
    4 {' v2 ]( `6 I" B0 l  T5 j% s1 z* ]
  2. /*% b! h7 S/ W) H7 w; Q
  3. * edma_test.c
    * r+ l# `) R7 r2 P
  4. *
    0 \( I. g, Z) Q
  5. * brief  EDMA3 Test Application/ K4 a! `" Y. U, o  T
  6. *( D) X8 J6 m) s! |% n' a
  7. *   This file contains EDMA3 Test code.
    " A/ d4 I  @1 D9 U# R
  8. *4 J& b$ [& f# U
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( e3 {( k& S4 y; x" k/ b, b& Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT- ?! g! h. o( X* x1 b3 n7 h! q
  11. *         TO CHANGE.
    9 }: w: [! c* w1 O& d
  12. *7 Y9 v. s( z7 C0 \8 B, }- Q8 o
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    7 Q& y0 ^& A7 x. K
  14. *
    - C" M$ A) I2 F
  15. * This program is free software; you can redistribute it and/or
    ! ^$ q& h* p6 \: @
  16. * modify it under the terms of the GNU General Public License as, @. X* j# z' p! Y1 {) D3 d
  17. * published by the Free Software Foundation version 2.1 C+ e9 U% F5 H
  18. *
    & Y- w8 W2 A$ V4 F: W
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ V  P/ v, J- ]$ X7 z6 A
  20. * kind, whether express or implied; without even the implied warranty
    / I) c* c! u1 V9 k
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    5 i$ B; c7 S2 r! |
  22. * GNU General Public License for more details.
    , h5 W* b! u$ W" K1 ^
  23. */
    8 W# `6 m  F- w2 `3 M1 I( w! v! j! Q
  24. 3 P& m2 I2 Y' P$ `& c+ \) i. |
  25. #include <linux/module.h>
    3 ^0 D  F. G8 X* Z; S
  26. #include <linux/init.h>
    3 z. q6 Q+ K* N. h2 v
  27. #include <linux/errno.h>1 ^1 u5 W2 o. ~
  28. #include <linux/types.h>
      K: }% X& K* G% s1 l+ L# D2 N4 G
  29. #include <linux/interrupt.h>1 ]- U3 h2 A* ^! z' J% b8 c! k
  30. #include <asm/io.h>
    4 c- A0 c$ `, ]- N. M5 N
  31. #include <linux/moduleparam.h>0 n' X6 H, s7 L) g" P
  32. #include <linux/sysctl.h>* V; d7 V$ _9 U8 f
  33. #include <linux/mm.h>
    ) |# F/ w3 m. P: W7 m  z
  34. #include <linux/dma-mapping.h>
    $ K5 R8 n! F$ f" o# p! @, x

  35. 2 H$ Y2 b2 H: p! ~$ f- `
  36. #include <mach/memory.h>
    ' u/ w+ T5 c. M0 ?
  37. #include <mach/hardware.h>
    % e% ~( }5 {$ a
  38. #include <mach/irqs.h>; I9 A% q# U8 S# c2 y9 p. P  ]
  39. #include <asm/hardware/edma.h>
    . B( M/ b" d' P
  40. * ~# ~  {2 y0 Z5 {
  41. #undef EDMA3_DEBUG
    8 Y5 q7 [/ _3 t6 D
  42. /*#define EDMA3_DEBUG*/( u9 _/ n. T  l
  43. ( Z, u9 j  z+ r- ~* t
  44. #ifdef EDMA3_DEBUG
    * B  X/ T. ]0 ^6 X/ A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) O% q' {' \8 P/ w8 }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)7 L( c) U. y5 k' @8 W& ?( u) m8 T
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)4 K3 W7 ?* c( I% l, _8 S3 M
  48. #else
    2 g! p+ Q: K- ^, E3 r/ C" O
  49. #define DMA_PRINTK( x... )3 B0 i; }! D4 H2 H
  50. #define DMA_FN_IN- A2 X) T# ^+ A, ^  E
  51. #define DMA_FN_OUT
    5 ~/ a! z& d! k. e: m% G. y7 `
  52. #endif. i5 s/ h3 @4 g" c

  53. . R# L  d, w  y; ^: K( v+ O4 ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    # X$ S( R: N  y# a' s; J
  55. #define STATIC_SHIFT                3
    0 b+ i6 I/ m- \( d1 v4 f
  56. #define TCINTEN_SHIFT               20
    8 y  U% D1 _; ^& ~
  57. #define ITCINTEN_SHIFT              21( y2 }5 y& I: \5 W; A
  58. #define TCCHEN_SHIFT                22
    4 }8 c, ^8 x. _' Q+ E! W
  59. #define ITCCHEN_SHIFT               23
    5 \1 h9 I5 @' [9 a; h; j
  60. 2 U% z6 t* D, }+ ]8 O2 G
  61. static volatile int irqraised1 = 0;
    6 a, W3 h& a! H! |% q
  62. static volatile int irqraised2 = 0;% G: p* L( V& n$ u

  63. 8 v; O1 m/ u% o8 x
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; o% _8 u$ w  o
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( |: l  s, x+ J, I
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 m$ F6 r$ u  X" M/ `

  67. 4 L/ V; G' z$ O  e9 ]+ c( x. B. y
  68. dma_addr_t dmaphyssrc1 = 0;6 a9 y0 M5 ^: y
  69. dma_addr_t dmaphyssrc2 = 0;5 @2 v7 s6 `& {3 Y- J0 d. ?
  70. dma_addr_t dmaphysdest1 = 0;
    * ^. p+ }$ c: z; _$ M& G" p2 d
  71. dma_addr_t dmaphysdest2 = 0;
    5 o% {. a5 g) {$ S) a) ^
  72. 8 C4 [- Y) `6 N& u# M, l
  73. char *dmabufsrc1 = NULL;
    " Z3 g+ ^: u' R' b. p8 M
  74. char *dmabufsrc2 = NULL;) G) e/ J1 T6 \# w
  75. char *dmabufdest1 = NULL;
      x1 t' Y9 a$ q) A. o9 O" r
  76. char *dmabufdest2 = NULL;
    . F! N# I0 M6 L: S4 n
  77. % W, t# s' a  S* d/ `
  78. static int acnt = 512;. l6 U/ ]9 C6 K; w
  79. static int bcnt = 8;
    % r- H& m( e* o- o6 R
  80. static int ccnt = 8;) q! U9 A0 H/ \# ~- x
  81. ; Z8 Y, u$ _" a* I" s. ?
  82. module_param(acnt, int, S_IRUGO);3 d3 S$ f& z2 s5 p, S% y, M/ q+ N
  83. module_param(bcnt, int, S_IRUGO);8 {& Q0 n- e1 c1 h( @5 U6 z+ H
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 Y: o- b! C4 ~' F" r
& a& S; G/ s5 W9 ^% ^/ W! F2 u4 e
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; e+ q' [# E5 a! C+ Q' iarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
5 ]4 I) p* c- \( s! }+ U     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! _5 r3 F" Q- p' N. C9 E" {3 ]# `

6 r' Y' b4 X/ T3 k8 \# X! m2 Z# R* X
8 z) h' p2 f8 ]0 l7 \% S- F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-14 05:24 , Processed in 0.048092 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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