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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 3 D& ~0 [/ M3 T1 o5 s$ v% \( D
  1. [code]EDMA sample test application! p% y+ E, T8 ~8 b
  2. /*9 r( P6 [2 {( r) [! q1 K. J
  3. * edma_test.c
    / E% H) r3 n& i
  4. *+ m; c; v8 j& v: V4 f
  5. * brief  EDMA3 Test Application
    $ i3 H2 i* A$ m7 w+ E/ o
  6. *
    / A0 Z% N4 K& @3 ~
  7. *   This file contains EDMA3 Test code.
    2 A& Y' ^+ o8 |! q0 a
  8. *. O7 O  S$ h, [% e/ ^  X9 i6 j' t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE3 |% O1 D: v5 B4 C/ @
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT4 p# j& T6 {, i* Q
  11. *         TO CHANGE.+ t) W4 \6 ?/ _; ^
  12. *
    / N8 D2 R4 T" @1 J6 h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ' d/ K8 ]( W1 m5 k
  14. *
    7 |3 M% u* E  E# S( E4 ?" f
  15. * This program is free software; you can redistribute it and/or
    , v9 b4 [# p0 A6 @
  16. * modify it under the terms of the GNU General Public License as' m* d1 V) C0 K. _5 z# K4 e" M
  17. * published by the Free Software Foundation version 2.
    0 F7 D3 h& {6 O
  18. *
    " E- Z1 ]' q$ W! z
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any5 m9 `7 }6 `2 u' L; d
  20. * kind, whether express or implied; without even the implied warranty
    # a; F2 {5 T) m8 F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    3 w+ B7 X" \8 Q/ m3 l( F  v) ]; s
  22. * GNU General Public License for more details., U" x* c- Q% {1 B# w
  23. */9 {6 w  J& Z. ]5 J4 m9 N

  24. % C3 M9 N; I% A% z+ I( g9 `, c# {
  25. #include <linux/module.h>. L0 ^/ G6 W; {1 x
  26. #include <linux/init.h>1 j3 Q; ^2 K8 `$ Y6 }3 }
  27. #include <linux/errno.h>
    " J) g$ Q7 r2 |$ Z/ S: J
  28. #include <linux/types.h>
    ( d) ^  V7 }& S  Y0 U
  29. #include <linux/interrupt.h>2 a% @+ H  ~. S. G1 C- K2 }+ i
  30. #include <asm/io.h>6 s5 n7 A! P: h7 c( g( L' U4 m
  31. #include <linux/moduleparam.h>
    ( L- O4 h7 R% r' M( k
  32. #include <linux/sysctl.h>
      x# k% s$ b5 {& ^) @9 x
  33. #include <linux/mm.h>+ @% [1 p" I3 W' ^
  34. #include <linux/dma-mapping.h>/ l- R2 @+ F, j, z! D

  35. & k1 b8 _& \8 d9 d2 w2 E* u
  36. #include <mach/memory.h>
    / e4 P9 l) G# [3 s( C. ?
  37. #include <mach/hardware.h>4 O( \& N# H( U7 Y) ~& p; G
  38. #include <mach/irqs.h>
    . x5 w" K  b% }( [, t( [9 B. ?
  39. #include <asm/hardware/edma.h>  W* \6 c5 a" U

  40. 5 K4 ?3 b+ {) W/ ?- R
  41. #undef EDMA3_DEBUG. J; K- D) s# P8 F3 [
  42. /*#define EDMA3_DEBUG*/
    - }$ f0 e; j# x& h

  43. 5 L1 m3 Y- f6 r8 q
  44. #ifdef EDMA3_DEBUG
    1 @- W8 j6 F. F' y+ r) F. Q1 a
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 m1 z! X: n7 C4 g9 J% q
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    % ^- f! }7 T6 J/ y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): l; _! R2 k; K' u
  48. #else; n9 B9 G7 `* H+ O: u
  49. #define DMA_PRINTK( x... )& W0 F3 I# ^- t$ ^
  50. #define DMA_FN_IN
    7 X6 B0 G- _* @. _% _) b) v4 e
  51. #define DMA_FN_OUT! k# v0 }: V0 ?5 m3 }) q4 L
  52. #endif
      n) L' q/ s) e1 B" n3 p. Q# |6 c. E5 s

  53.   i) \# [1 \) [( z9 G3 x5 e* j8 g
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 V) `( s0 t" }7 K: Y6 x5 E$ x! c
  55. #define STATIC_SHIFT                3( s- l! ]- o6 p' s4 v' X  @
  56. #define TCINTEN_SHIFT               20
    ) @$ _0 C0 t9 i
  57. #define ITCINTEN_SHIFT              21
    ! k0 [7 g  e: `4 F
  58. #define TCCHEN_SHIFT                22
    6 ~1 v" O0 q2 k2 R, R' L
  59. #define ITCCHEN_SHIFT               232 K, Y; B) L% `( `+ [! U

  60. $ P3 x6 b$ I5 J0 Z8 h" ?
  61. static volatile int irqraised1 = 0;
    ) s: i. K& D1 \$ d0 G8 q& k
  62. static volatile int irqraised2 = 0;. P) ^6 d4 d6 W1 v, l1 x; F: B" C- m
  63.   G8 k4 ^$ W, w9 u# s( O3 |
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 O- d  h9 q1 g0 ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! n# o; \$ H5 v# i/ o5 X
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 r. U0 s. V  h
  67. 2 b: v- t, S( v7 \. h4 X; B/ i/ g, {
  68. dma_addr_t dmaphyssrc1 = 0;3 a0 M1 d, P  `/ E1 J+ ~6 {
  69. dma_addr_t dmaphyssrc2 = 0;- C; ~9 p* x0 k( i5 @1 r
  70. dma_addr_t dmaphysdest1 = 0;) R; K$ T# ?1 l7 O7 O! @
  71. dma_addr_t dmaphysdest2 = 0;$ A( Y1 r% i, n3 m6 o" D  U# i7 ^
  72. ! a! T$ y  C$ x' R$ m! h/ V* K
  73. char *dmabufsrc1 = NULL;& I$ ?9 J9 e  w0 c- a7 L' A
  74. char *dmabufsrc2 = NULL;
    8 e$ d( q7 O* X( e+ l# l
  75. char *dmabufdest1 = NULL;8 E# j8 X& x, A& _$ r$ x( _
  76. char *dmabufdest2 = NULL;
    / |8 P1 \/ Z1 {0 v5 q4 g

  77. 1 N, o# T( m9 A3 C! H
  78. static int acnt = 512;3 }& j0 d# y! H% B
  79. static int bcnt = 8;
    5 p- t8 m9 p; }
  80. static int ccnt = 8;
    . m8 Q( s% |5 C. B- i3 E6 N2 T
  81. / i+ q% M5 M! J
  82. module_param(acnt, int, S_IRUGO);
    / l$ T2 C- t" Z' t1 B7 \
  83. module_param(bcnt, int, S_IRUGO);
    3 o; e9 W6 w1 v3 q* w; h( |# f
  84. module_param(ccnt, int, S_IRUGO);
复制代码

% n& I+ }) }) D$ T3 G* s
; G& T9 K: ?) j& i2 k3 j$ C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" w+ X# H% P3 V. Y/ warm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
; |! g1 F$ s. o     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。' D, Y! c3 t1 f9 X

0 W5 }4 {' E9 i3 S8 W0 C, L+ i' A; f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-29 21:35 , Processed in 0.039044 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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