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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 , x5 O/ g/ G, V/ H  K' q) l
  1. [code]EDMA sample test application
    1 K  @# `( N* Y1 w
  2. /*7 b7 L. K) C5 x6 Q& {
  3. * edma_test.c
    & w4 F* |  f$ a% I. H
  4. *
    4 K& N4 x/ r' X
  5. * brief  EDMA3 Test Application+ |, s  l4 P3 f* a6 m
  6. *; X5 {4 O8 j. x" m( i4 E9 Q4 R
  7. *   This file contains EDMA3 Test code.
    6 F) B" u) Y7 ^$ M; ?/ D
  8. *7 J; j9 K6 ^" A+ ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' E& v$ {4 ?6 ~9 p+ L* F( C
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ( ], b/ ?( q+ q& N
  11. *         TO CHANGE.' j# w7 r. X8 i" w5 A( L) Q. y
  12. *+ P6 ?7 t, A( ]! n4 N& D) y* A3 e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 q9 w1 D" @( [, `; R) t* t* ?+ [
  14. *; d$ z5 c3 m) E' f! b9 w( y; e
  15. * This program is free software; you can redistribute it and/or
    + G9 U% O: H4 {' b# Y/ `& f
  16. * modify it under the terms of the GNU General Public License as- s. ^9 `7 E3 ]( v1 |# Y$ |+ [8 v
  17. * published by the Free Software Foundation version 2.+ a+ u" y) r! j' C8 d% Z& {
  18. *. h: W6 {- l3 B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 K) e3 l! j+ y1 P- F9 s, q
  20. * kind, whether express or implied; without even the implied warranty
    9 w& V3 l$ c- O. w2 z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the6 O0 z) F6 [4 @/ A( v5 f, ^
  22. * GNU General Public License for more details.$ L% w) |/ R8 d6 b+ C3 @
  23. */, s$ e9 \7 t. B8 Y2 d9 E8 [7 b# n
  24. 1 J' `. H) S* {0 p9 i
  25. #include <linux/module.h>
    3 b4 l8 h: G8 f; s6 x; @. j
  26. #include <linux/init.h>$ u! b+ Z* c) S: ?# @% u) W" J9 \6 e. U7 B
  27. #include <linux/errno.h>
    8 ~" Q  m$ m% X7 U
  28. #include <linux/types.h>. Q/ K- C; g! G- O' j0 C. ~
  29. #include <linux/interrupt.h>" A$ i; Z+ c4 a! }% O
  30. #include <asm/io.h>
    7 {" C7 F) ?6 w7 Q1 O! C! s' I- A8 v
  31. #include <linux/moduleparam.h>+ p& ^2 A# C) m- S8 ^
  32. #include <linux/sysctl.h>
    # S# U) Z, @5 B7 Q# i
  33. #include <linux/mm.h>" f* s% o1 x6 w# u, W6 O
  34. #include <linux/dma-mapping.h>& M) [$ F3 Y8 w

  35. ; X" H! [/ S3 h" O$ o- j8 E$ B) q( s
  36. #include <mach/memory.h>
    $ ^# E2 }1 h4 m$ y: B) n
  37. #include <mach/hardware.h>
    ' l2 C% [: }! d
  38. #include <mach/irqs.h>
    & o* g2 b3 N) T+ A% q3 T
  39. #include <asm/hardware/edma.h>1 Q3 `( _. z0 C, a

  40. % }# R- y0 I  U' B% R7 G, O1 P) k5 p) d
  41. #undef EDMA3_DEBUG+ o4 C- x7 B7 k- A$ \1 y
  42. /*#define EDMA3_DEBUG*/( S, |/ ]: m0 X/ f; x+ H# @1 f( i

  43. " s$ q" n* `1 {
  44. #ifdef EDMA3_DEBUG% \* r  t5 C" U, W1 x' S' t( w
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    9 A' l8 m: e& `4 U
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    & p+ q: ]( [" w5 [' U% e0 V. q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)# {; i1 R2 }" i8 k
  48. #else
    ) G! T( E8 T9 P
  49. #define DMA_PRINTK( x... )
    " k+ m& p8 Z) m6 _/ @
  50. #define DMA_FN_IN
    $ F: r6 a, T+ x. Q; t1 n
  51. #define DMA_FN_OUT3 \; s* {1 D  N. B& M$ L
  52. #endif- E& l- E0 i; X/ o
  53. 0 A9 t$ F6 s* \, ~- k7 ~& Z5 z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)% E5 `- F6 I& K8 T0 h% o% |; R
  55. #define STATIC_SHIFT                3. w, p9 ]+ y$ F3 [
  56. #define TCINTEN_SHIFT               20
    : T0 k6 I' {9 o! l
  57. #define ITCINTEN_SHIFT              21
    . U! v5 r7 d; w9 ^
  58. #define TCCHEN_SHIFT                226 i$ `/ V; j1 g, u) C% Z5 R
  59. #define ITCCHEN_SHIFT               23( |( ~6 y2 r) j4 ~& x
  60. : ^" w) _3 M+ G: Q
  61. static volatile int irqraised1 = 0;* s: h4 t. U2 w9 b
  62. static volatile int irqraised2 = 0;5 [1 b( b! o* \. ]

  63. ! T7 H' s+ H0 Q& F: A  ^* ~% G
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      ~8 F% Y7 q2 W9 @' i
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( G5 H8 y$ u$ ]4 C
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , Q5 {& C1 y9 o$ n6 |# t5 z/ c  n/ ]

  67. 6 \3 w9 k/ M3 V3 L& R$ g8 a4 x
  68. dma_addr_t dmaphyssrc1 = 0;! G) M' {$ w0 c5 P
  69. dma_addr_t dmaphyssrc2 = 0;
    - P1 V  j  V+ ?+ b+ E
  70. dma_addr_t dmaphysdest1 = 0;+ L' n% b5 q" g+ a' I% M
  71. dma_addr_t dmaphysdest2 = 0;- K5 ~! ]7 O6 ], T
  72. & B% X  a/ I( T4 V9 B3 g
  73. char *dmabufsrc1 = NULL;) [% G8 c3 W9 u4 \6 V# h8 p/ G
  74. char *dmabufsrc2 = NULL;4 O! z) ]( Y! u
  75. char *dmabufdest1 = NULL;
    8 C; g' l/ k7 f
  76. char *dmabufdest2 = NULL;$ B4 X3 z% n* f1 q( @2 V
  77. & S+ V& k1 ?; ?$ }4 s  e9 l) V
  78. static int acnt = 512;
    0 W; E. i0 m) s
  79. static int bcnt = 8;" _* x. w" b, p( z
  80. static int ccnt = 8;
    5 v9 [" v/ ]1 ?4 i. B
  81. 6 Y3 v; G8 U, ~% t$ |3 @1 V% z8 b
  82. module_param(acnt, int, S_IRUGO);* ^; r: B' A1 d8 b4 ]
  83. module_param(bcnt, int, S_IRUGO);
    9 J/ Z9 o" ^) D) a, ~% w
  84. module_param(ccnt, int, S_IRUGO);
复制代码

* f$ L" D; x: w& {8 N& K
& Z& u9 J7 u  H4 Q  H      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用, o  j5 [9 F; K, o) Y, L
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 x. r# F/ }# l
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, v8 o7 `( d" \; e" q  o" s8 l6 o! X
8 u* w/ f: ?) ~/ W8 e: F# J

, U" g# H# k  R  k9 C3 G, X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-11 15:06 , Processed in 0.039144 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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