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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
( V! K; @) E( t0 [2 Z
  1. [code]EDMA sample test application
    - p. S$ j& l# ^8 L3 i4 Y6 U- r
  2. /*
    : t3 U3 ~. y' Y% b# h9 F, Y
  3. * edma_test.c
    & [) t" |1 M( z6 m, P: C+ H( \
  4. *. u; k# ]! b# \. S2 }! v
  5. * brief  EDMA3 Test Application/ }& \% Y' m: \" T% [1 s
  6. *- F( e9 M( C% s8 u- y5 a* D, P% x% n
  7. *   This file contains EDMA3 Test code.
    1 v! u% X2 J3 s, {3 Z
  8. *
    2 `) `' o8 P- R7 }' Y! D
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE; s+ R& z6 A9 z5 c
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    8 ~. q  L' N1 h8 w+ T  A8 E8 B4 R* @
  11. *         TO CHANGE.
    ' P4 ~1 u9 O4 B. ?  M, O0 p
  12. *& D9 w- O) ]2 N0 C7 k
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 t7 n  {; Q8 S, s5 N
  14. *4 y: [" [& {5 O0 D! _
  15. * This program is free software; you can redistribute it and/or
    4 D( e/ E! `. @3 l1 {
  16. * modify it under the terms of the GNU General Public License as# l: T* _  h  {4 B7 J! O, e: d; }
  17. * published by the Free Software Foundation version 2." {& E3 r( y% ~! h/ ]
  18. */ a! D+ l! Z; Z$ ~* c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    3 _" C( r: \1 c( m" w% P5 _5 M
  20. * kind, whether express or implied; without even the implied warranty0 `% j! n! M6 N/ }7 J2 `  ~
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    3 v1 j- d2 q; u) N
  22. * GNU General Public License for more details.0 |- ~$ i# {/ e2 p1 K! s1 l
  23. */
    * N$ e) R( J* k
  24. ' ?1 V2 B0 P0 N; h7 C
  25. #include <linux/module.h>
    ! |4 k  j8 o  M& {% ^. [- m: y
  26. #include <linux/init.h>- V1 g/ N- S9 X+ A$ e
  27. #include <linux/errno.h>3 @) F8 x6 G% r4 M; g
  28. #include <linux/types.h>; E+ t, Q, f1 V$ _" U
  29. #include <linux/interrupt.h>
    / {# y2 y8 z( U$ K
  30. #include <asm/io.h>$ v  L9 m9 l" c
  31. #include <linux/moduleparam.h>
    5 A1 p! g6 b. k" e; U
  32. #include <linux/sysctl.h>
    # N- A+ u+ i) L# j
  33. #include <linux/mm.h>
    * \$ \% D, @$ v. Q3 d
  34. #include <linux/dma-mapping.h>
    $ z+ y- m5 ^0 n

  35. 7 L8 L+ I; z( _+ p
  36. #include <mach/memory.h>
    ; x. ]# U3 b) p  t( ^
  37. #include <mach/hardware.h>/ m5 a( E7 G$ g0 A9 p9 y/ u
  38. #include <mach/irqs.h>
    0 P7 S/ [+ o8 P* z
  39. #include <asm/hardware/edma.h>. ?4 U0 D5 t# T, w* i7 i# I8 W2 D
  40. ( W' v' @, b6 L' m: _! S
  41. #undef EDMA3_DEBUG0 \6 y7 W. G* R8 V) F
  42. /*#define EDMA3_DEBUG*/
    1 }" x* o' m" O
  43. 6 v" r* g9 X3 x$ C; S) g* k) ?6 i
  44. #ifdef EDMA3_DEBUG+ I' ?* \1 p! Q" n' Z( i
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    6 R4 ~( C: `( d2 f; y) i- \# l9 ]$ f3 _) M
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__). Z* ^' J) ]% L/ D) x/ M( Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    . A  U2 V7 x" u& |- o! `
  48. #else2 a' g$ L0 F; l8 _; }( g$ z0 O  ?
  49. #define DMA_PRINTK( x... )
    / z0 b$ P$ W$ E5 ^  G' t% R
  50. #define DMA_FN_IN: V- F5 a' }9 Q% O- @9 [) `# s0 ^
  51. #define DMA_FN_OUT; F. \5 k; t( n1 T
  52. #endif
    * k) U7 W8 ], q9 _' r
  53. 5 C* M1 u6 ?; |: a
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)0 z1 t+ E5 Z2 p
  55. #define STATIC_SHIFT                3
    2 q) A4 _: g. \4 I
  56. #define TCINTEN_SHIFT               204 f5 H3 c: Y8 f& a
  57. #define ITCINTEN_SHIFT              21
    3 Q' B3 L; b+ V5 `, F  J
  58. #define TCCHEN_SHIFT                221 i* e, ~% j  L6 O) E
  59. #define ITCCHEN_SHIFT               23/ ^& e6 R( w! U
  60. ( Q5 X, @! ]! M; @7 M
  61. static volatile int irqraised1 = 0;
    % B9 W8 d& ?6 t" C
  62. static volatile int irqraised2 = 0;) S' o/ W7 H' |) X- L

  63. 4 ^$ R) N* V$ s5 }
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - f! s) k/ c: k; y2 p( U. H: D: Y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 O5 Q2 G3 ^3 G3 y3 H4 A$ V
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( r: Z  _3 N  N, I' m5 v4 C
  67. 0 x( k/ M2 O" W9 B/ W
  68. dma_addr_t dmaphyssrc1 = 0;/ @3 P" w2 t4 |2 i  U
  69. dma_addr_t dmaphyssrc2 = 0;+ i( `/ H+ O: K$ u2 S- I
  70. dma_addr_t dmaphysdest1 = 0;1 N# x6 @3 i0 U$ c9 r2 x. w% u* F
  71. dma_addr_t dmaphysdest2 = 0;% N, i( I/ k6 U! b8 X% m

  72. 3 }, h' X4 R3 _
  73. char *dmabufsrc1 = NULL;' x9 q0 B0 U6 ^, P. I
  74. char *dmabufsrc2 = NULL;
    " _" b) q4 C% W4 D( q1 ?
  75. char *dmabufdest1 = NULL;
      P" T$ x0 n% M
  76. char *dmabufdest2 = NULL;+ S, I' `% }: J% J

  77. & l2 u# W+ t: m9 R0 K. Q
  78. static int acnt = 512;7 J/ J0 E) Q5 h& F( S9 A4 i& a* O
  79. static int bcnt = 8;6 ?& B* O$ B4 t9 }) X6 D/ v6 Z: L
  80. static int ccnt = 8;
    2 p! s5 h9 W! m0 O: \
  81. 8 q5 |7 ^- _0 C$ k0 G
  82. module_param(acnt, int, S_IRUGO);
    . {' f; E/ [0 H: q/ i
  83. module_param(bcnt, int, S_IRUGO);3 ]5 `( f) p$ N" [. }; H
  84. module_param(ccnt, int, S_IRUGO);
复制代码

7 ]" m# f  l; x; T6 ?5 S% V0 A
' n% A9 j" m  r2 a' V. f      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
2 d+ S6 b5 r3 M) q# U3 m* Zarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。( h6 u# R3 s7 M: P5 f3 ]6 H0 `
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# _1 r8 S9 M. M" t9 \
! w6 i  J/ T1 h) I" i/ M
' K  L, W1 N# n$ Z% ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 15:44 , Processed in 0.044644 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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