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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 : a  u) j1 v3 [1 ~
  1. [code]EDMA sample test application$ O4 S9 k4 K9 p$ }  E+ s
  2. /*  h( }# r9 W8 S5 L. [# N" U
  3. * edma_test.c
    3 H3 ^9 a# |7 @+ L5 i* o
  4. *
    * B7 q! b3 X" T/ i9 W
  5. * brief  EDMA3 Test Application
    ) P5 w3 C0 b2 Y7 V
  6. *
    6 [) }# z( j. U* T; i& G
  7. *   This file contains EDMA3 Test code.) ~6 T! X: L& m. m
  8. *
    & e! M. f) R5 W
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE5 D% u* N9 T" x/ A  y& t
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT/ P* Y# T2 M% p/ _- e9 R$ \' W$ L
  11. *         TO CHANGE.
    . z0 S5 x0 w! u, ^% }. C. I
  12. *3 I& _: p5 D4 B; U: `
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      V  a$ Q" j  d7 Y8 `; o4 x% A) K
  14. *
    1 n, n( \- N$ y& P
  15. * This program is free software; you can redistribute it and/or
    / W! G5 H8 z, s3 h
  16. * modify it under the terms of the GNU General Public License as; A& I0 d) e$ M" \+ l. v
  17. * published by the Free Software Foundation version 2.
    ! x* n# M1 \/ F1 N5 `+ G
  18. *8 ~" @) S( j$ H% g
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 e4 f& \7 n0 g- H& E( [
  20. * kind, whether express or implied; without even the implied warranty2 ~  E* n. `2 z, i
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the6 }6 r: x0 x0 s  R0 V1 g
  22. * GNU General Public License for more details.$ w+ M. k+ p+ X0 k! B  A
  23. */
    9 m0 u8 g  t5 S$ V. u6 n( M
  24. & [1 N0 q6 O& o! s
  25. #include <linux/module.h>' o7 E3 q- t9 g! D0 [$ S
  26. #include <linux/init.h>
    % a3 Y4 p! A: p) Y& v/ @
  27. #include <linux/errno.h>
    # j$ v- }  M# b* K; o. v
  28. #include <linux/types.h>( r, K) {: B9 s5 j" q& J2 ^+ r
  29. #include <linux/interrupt.h>
    ! I" R8 m! @* d# @
  30. #include <asm/io.h>2 v0 P. A. L9 x# Y3 _8 ?+ r
  31. #include <linux/moduleparam.h>
    2 e5 _0 W& `0 R* V$ e
  32. #include <linux/sysctl.h># K9 x% Q9 t  M+ k3 Y! f
  33. #include <linux/mm.h>
    4 d- t# q. ?- @9 n
  34. #include <linux/dma-mapping.h>3 E2 K: I6 v* K7 Q7 e

  35. : f% r0 k2 |; Q* R/ ~" p$ d3 q
  36. #include <mach/memory.h>
    4 _( k6 O8 u- C: l
  37. #include <mach/hardware.h>
    3 K9 s8 z0 W7 j; L6 j# X5 h5 S
  38. #include <mach/irqs.h>6 n1 s; {5 f- `, j& R
  39. #include <asm/hardware/edma.h>/ w: n/ G. w) @# I

  40. $ O8 _$ u3 [5 p! Y$ k
  41. #undef EDMA3_DEBUG% \( m; E" K/ i3 ~0 x& L' A
  42. /*#define EDMA3_DEBUG*/
    4 J+ s9 b. x7 y& y5 V# w3 l, V! k
  43. . f1 ^% q6 T: L5 r( V* R
  44. #ifdef EDMA3_DEBUG/ S, r  @' O1 ?; q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) i+ S* |4 S: w% B/ G/ }( J; ^
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ) F# @2 s! |* w
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
      L# v' z; y1 Z
  48. #else
    ' h. C. k6 ^( X. z% X& D
  49. #define DMA_PRINTK( x... ). T/ ]. y' B) f3 G5 f9 K
  50. #define DMA_FN_IN2 p% B2 W1 G: d6 r9 j. f
  51. #define DMA_FN_OUT: \0 e" c/ V; v( J
  52. #endif
      u7 x* n- v4 s% G% o) C" @5 P4 @5 A
  53. # D2 x0 w8 g; d5 Q( {, \: L- P
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    " j1 D' K$ e2 F) x& m9 r, V9 K6 v5 h# K
  55. #define STATIC_SHIFT                3# Q  s0 J6 x/ \- U, R
  56. #define TCINTEN_SHIFT               20% x2 Q5 @5 G3 G* F, S1 e; a0 U% L2 g
  57. #define ITCINTEN_SHIFT              21# k- K+ o, O* @/ l% P* r/ }" b0 \3 J
  58. #define TCCHEN_SHIFT                22
    ( T3 ^! o5 ?- J
  59. #define ITCCHEN_SHIFT               23' G* L' s7 P; a- V# M( m

  60. ) z) ^1 x1 ^. m
  61. static volatile int irqraised1 = 0;4 i& N! p' P0 R, q/ S/ W
  62. static volatile int irqraised2 = 0;( S; U1 s& J" B3 b7 W8 Z
  63. # _# t& G1 m2 K
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , h/ J, q# b/ n
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  |% M% c3 G( {5 ?* M3 K2 f
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 W5 }: z9 e# t  q  s& h4 _5 ~

  67. / `- }) M2 E( k/ b& b1 V2 `
  68. dma_addr_t dmaphyssrc1 = 0;7 u) ^9 F1 v, `
  69. dma_addr_t dmaphyssrc2 = 0;$ f! r+ n6 q' j6 ~
  70. dma_addr_t dmaphysdest1 = 0;
    , D3 r$ t" _+ W
  71. dma_addr_t dmaphysdest2 = 0;
    * ^% w6 H+ A3 S! b0 P/ l/ ]$ n5 w
  72. / e% Y1 n2 i- O/ `$ Z' S
  73. char *dmabufsrc1 = NULL;
    9 y. f9 C$ E0 T9 r1 B  [. S
  74. char *dmabufsrc2 = NULL;9 V# \( p! p& @& v2 O6 f
  75. char *dmabufdest1 = NULL;3 d3 W  h$ O) z! w1 y, z* m
  76. char *dmabufdest2 = NULL;
    ( w6 U9 `- Q. _

  77. * u6 i% y+ ^& R  X
  78. static int acnt = 512;! f5 e& a& T+ z  R( J* f
  79. static int bcnt = 8;
    & v3 y3 G9 Z3 s4 S
  80. static int ccnt = 8;( \; H/ K- p: w' n" T

  81. 4 \# m% b# ^$ |0 n; E
  82. module_param(acnt, int, S_IRUGO);! |) e5 X: c: W% O# k
  83. module_param(bcnt, int, S_IRUGO);) T/ u" G- D, z# S9 C
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 W. N- M2 @8 P* u
% v5 t" q7 Q% W7 N+ d' c  ~5 O7 G5 c- D
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; G! d/ X6 r3 B) T2 qarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
: v+ j% K4 y1 {: c1 }  i7 b     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。/ o! R2 j* v6 J) M2 ~
; @% f8 @+ p0 U4 p

6 _% r2 e# x& ?) }$ b% j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-2 09:26 , Processed in 0.039604 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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