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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) s- n! @$ `+ E% x/ y  a6 h6 t5 n- c" l
  1. [code]EDMA sample test application
      o' s, x7 f( _2 ]5 `
  2. /*% X$ w$ J; a4 P
  3. * edma_test.c! n$ [& z* m3 t& @  ], U
  4. *, p" h  A' }) @5 l
  5. * brief  EDMA3 Test Application
    - \, ]( u# {0 B& D# S
  6. *
    2 Q& A) e! k: e8 }8 C& J$ q2 [6 Q
  7. *   This file contains EDMA3 Test code.
    * \9 V1 V% {$ z4 p
  8. *" W9 ^- i1 \+ [5 W' y; Z6 ~
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ! h# |. ~' b, C7 W! `
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT6 [& l) f6 n, }
  11. *         TO CHANGE./ y% k+ T6 Y" p; v6 R
  12. *7 P$ X6 [9 \/ |* H) r4 I/ D
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    / r. h( n0 m' |
  14. *
    . J4 `; A5 @4 \
  15. * This program is free software; you can redistribute it and/or+ z5 ~+ ], j- ]  E
  16. * modify it under the terms of the GNU General Public License as; u4 C) e$ m  C+ R, _7 P+ Z
  17. * published by the Free Software Foundation version 2.' {5 g3 z& C( l' s& b
  18. *
    ! v1 k1 J/ k9 a! m' P, ~
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any3 ]) K/ q; S  X& I
  20. * kind, whether express or implied; without even the implied warranty/ L" C% d3 u2 |& i
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# x6 p. }) h$ M5 d6 ]( `
  22. * GNU General Public License for more details.; O  U. C6 m& ^1 p2 g4 y0 g: t; }
  23. */' V: @- l1 `! k0 i3 q; Q, C1 L

  24. : d- A0 k; {6 O$ x# Q
  25. #include <linux/module.h>& H0 l6 J0 O/ ^9 u) r
  26. #include <linux/init.h>0 d) d7 d9 C; F3 G' ^8 E
  27. #include <linux/errno.h>
    , h1 R+ V' Y5 C9 M: f
  28. #include <linux/types.h>
    " {* M0 ?2 ]0 {+ F/ b
  29. #include <linux/interrupt.h>
    7 J  A8 N# Z* Z' U
  30. #include <asm/io.h>! K3 X3 l: A6 L: N$ Y& t4 c
  31. #include <linux/moduleparam.h>
    ; Y( d; ?$ Z7 m
  32. #include <linux/sysctl.h>5 D( T  N7 f; C( ~
  33. #include <linux/mm.h>; p; V' g* R: H& \) a0 K1 B2 w- O) u
  34. #include <linux/dma-mapping.h>
    : K# n$ i/ [5 |1 c; z- B

  35. . ?; [$ i* L8 U: Q
  36. #include <mach/memory.h>( X& |2 e4 E0 C" M0 D' W
  37. #include <mach/hardware.h>
    + {' u8 ^( \- ]5 Z: N" P& b& N" }9 x0 Q
  38. #include <mach/irqs.h>
    " |& A$ f6 Y1 H# P
  39. #include <asm/hardware/edma.h>
    6 W5 J0 ]" u3 S" r7 q1 b
  40. * E. R' w; G. @/ J
  41. #undef EDMA3_DEBUG
    ( L7 Z- a- |$ b6 A7 E! \0 B. D
  42. /*#define EDMA3_DEBUG*/
    ( |4 S) F5 R' j3 Y
  43. 2 L+ k1 M3 C: z6 g/ Z1 m
  44. #ifdef EDMA3_DEBUG/ ?! ~! H4 D: }4 ?- D, {1 C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ! C# {- ^; a2 M
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    9 P% Q; m/ h9 I7 f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    , V+ C' H2 R9 p& o& E8 |1 l- B
  48. #else
    1 r/ X* ^- j8 L- g" b* o% i- v
  49. #define DMA_PRINTK( x... )
    ' U$ D$ q; m! B, @! U6 H
  50. #define DMA_FN_IN# i% @+ a* Y4 W# X: i+ ^( t
  51. #define DMA_FN_OUT
    ' g* N0 S8 U2 \* v3 j# {% N
  52. #endif
    9 b' C% `4 ?7 X4 P: v8 E2 Y
  53. & b3 G7 C# y2 o' q3 x& X: M: {: ^+ L( k
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 q9 \+ u- c6 E+ y5 j
  55. #define STATIC_SHIFT                3
    + H) A$ d+ A' W: E7 \7 r; _% o
  56. #define TCINTEN_SHIFT               20
      X0 Z3 O! E6 a8 {4 i- Q" a
  57. #define ITCINTEN_SHIFT              21
    + E: n; s! u' Q+ Y) ~. H
  58. #define TCCHEN_SHIFT                222 l3 A, Q- m' q3 ^1 G
  59. #define ITCCHEN_SHIFT               23" u  x" H5 l, B. I) \
  60. + U: m( K( C( P* v  f1 B, q2 ]
  61. static volatile int irqraised1 = 0;1 S8 W1 |* z9 ~, F
  62. static volatile int irqraised2 = 0;
      |9 U6 a: Q# e# |: E4 @+ d
  63. : G9 I/ [3 L5 E: k5 u9 h1 O1 N
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, T/ z  _" i" F3 S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* V2 _3 f% \5 B8 D, K
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % U, O% a2 k: J: X1 I

  67. " K- T2 \4 d$ M' X" p8 W8 _( o, O+ e
  68. dma_addr_t dmaphyssrc1 = 0;! q2 L0 z) j3 \7 l- R9 `
  69. dma_addr_t dmaphyssrc2 = 0;
    4 f2 {: i0 J1 t
  70. dma_addr_t dmaphysdest1 = 0;
    6 F1 x4 S3 Z' D  y1 n% P7 O
  71. dma_addr_t dmaphysdest2 = 0;8 H% ~9 o/ S# N3 u4 R( s

  72. 0 X! a, G1 ~1 i  h: [. @* k5 t
  73. char *dmabufsrc1 = NULL;0 ]1 ^7 d3 u0 E/ O6 m$ l
  74. char *dmabufsrc2 = NULL;
    ' |+ y5 Z- d* W# z
  75. char *dmabufdest1 = NULL;9 T% s  E: z. F, N5 r- J! O; @; I
  76. char *dmabufdest2 = NULL;2 A, g: g) _& K
  77. + \$ G9 n- l4 d+ z  Y1 s) K
  78. static int acnt = 512;
    ' W# q+ S$ [! ?+ j" q7 _
  79. static int bcnt = 8;6 O( b7 }) [& x* t
  80. static int ccnt = 8;
    + G/ D4 F2 I* J, Y) Y. q

  81. ) H( t$ p) `: v
  82. module_param(acnt, int, S_IRUGO);
    ( T/ [' B( \2 U) H' d/ r4 p# G
  83. module_param(bcnt, int, S_IRUGO);
    8 i( y% s& \7 Q9 M2 A' W
  84. module_param(ccnt, int, S_IRUGO);
复制代码

" F8 `( `4 T& y5 ?$ b7 M7 d
# _; C( _( q3 J3 r/ G$ ~+ t9 `      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
6 h# S+ R) l2 N4 P, g0 garm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。! D7 f1 W7 Z7 J; G
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ v* G6 L, j8 m. ~) G
/ z4 E9 E. \; G' s5 I2 n! M- S& e- S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-10 16:13 , Processed in 0.041897 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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