OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 " C$ `; S" @! e3 Q# }( p6 G6 M
  1. [code]EDMA sample test application
    1 R+ }% `2 _$ C- N5 v! J
  2. /*8 @) D" J* k; }6 h; Q- T) I
  3. * edma_test.c& Z# d/ B. i7 N# v
  4. *+ i& v0 l* {+ V. I
  5. * brief  EDMA3 Test Application' k' b( G. V& S8 M6 N
  6. *
    + B  ^  a' x& P* X
  7. *   This file contains EDMA3 Test code.
    1 b1 }9 ^: p) [3 q7 l$ O
  8. *
    , J* ?' a( f1 X3 _& U
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    : H, q, |, i+ O; ~* v9 P
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT- D$ \1 U0 o  I
  11. *         TO CHANGE.5 l) K* q, d, m" j$ j, b
  12. *
    : M2 N& O- ?* r; P7 ~
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/- \+ V( a' P2 S2 _
  14. *7 X8 W2 J' Z' I+ E  t1 k# m
  15. * This program is free software; you can redistribute it and/or( w6 J  g9 v* ^+ @) _
  16. * modify it under the terms of the GNU General Public License as
    2 c' ~; M8 T4 |$ b
  17. * published by the Free Software Foundation version 2.6 U3 ?- c' a4 m- X% B
  18. *
    5 G# H* T. W2 B, s5 U) c0 x9 L
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # N- |% `- @$ t/ E* F: h
  20. * kind, whether express or implied; without even the implied warranty
    - c8 B5 A8 |" Z3 |% _
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the. }$ \" C& P* t. E3 t: j" N0 |- s& z
  22. * GNU General Public License for more details.
    & J4 Z. n$ m& |' M9 E( j
  23. */) G9 P2 f- b7 t! a+ ~
  24.   W: P7 ]8 ~$ `% |
  25. #include <linux/module.h>
    ! e# ?$ M# ~, v6 ^8 z3 j+ s
  26. #include <linux/init.h>: P7 n7 ]  _5 _" |) \6 w9 I; F- |
  27. #include <linux/errno.h>. ~  @. v/ S: `: P4 r8 G' Y! K- X
  28. #include <linux/types.h>8 Y4 g& q1 J2 z
  29. #include <linux/interrupt.h>) W# D: p  ~" b8 P
  30. #include <asm/io.h>
    & Y& O4 ^& m! R
  31. #include <linux/moduleparam.h>
    # V/ l* h, `# j' s7 }7 W
  32. #include <linux/sysctl.h>
    " g3 G' K& R# e: X' [
  33. #include <linux/mm.h>
      F5 x6 B$ n' D8 g6 d7 J8 K, ~' f
  34. #include <linux/dma-mapping.h>
    4 R! T: T2 v' f% [

  35. , o" d/ V) ]. B5 I# n; L' {* c
  36. #include <mach/memory.h>& [+ i, q# j* @# X
  37. #include <mach/hardware.h>
    6 |4 b5 y1 g! z* w+ s7 j
  38. #include <mach/irqs.h>
    ! Q+ z7 C8 {& N& f4 E$ c* U
  39. #include <asm/hardware/edma.h>
    ) h$ [- H7 ^3 G: R
  40. " D9 e. k4 m( Y  K. P+ g  t2 G
  41. #undef EDMA3_DEBUG+ ]* T8 P# Z! V; ]
  42. /*#define EDMA3_DEBUG*/  _* a+ p% Y' k* E
  43. , }- g4 M1 X4 c, p8 z
  44. #ifdef EDMA3_DEBUG
    ! {# ]) p: _/ Z$ a
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS): O) Q8 M* v& J* B8 O1 y  {$ o
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    6 P+ a$ B+ R% A- j9 ]" q. x8 X' o
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)% A9 a# N" u1 X. O
  48. #else
    ' h3 L1 k8 t# B1 w; l& |+ B
  49. #define DMA_PRINTK( x... )1 f! S5 Z5 u9 d0 @& k7 u
  50. #define DMA_FN_IN- @6 I3 X8 R, i/ [
  51. #define DMA_FN_OUT9 |) j: T/ d0 p( @" S! l+ t
  52. #endif+ h) L! j9 w9 F

  53. / z9 x+ G3 g- O
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)+ H3 S% V, c2 P* Q8 ^' L  A
  55. #define STATIC_SHIFT                3
    8 V( P; a& E. a9 D& H* k. `
  56. #define TCINTEN_SHIFT               20
    2 I; F! e9 H; |% ?( d) Q& W
  57. #define ITCINTEN_SHIFT              21
    1 H  |. i- p6 ?5 ?" T) x; @$ @
  58. #define TCCHEN_SHIFT                22
    ( x* s" P/ @: v0 C! A
  59. #define ITCCHEN_SHIFT               23; X) \+ X% T' C6 x' e

  60.   b0 u+ }  B9 K3 E& f; \9 H
  61. static volatile int irqraised1 = 0;
    , i, F- @. d1 d; [
  62. static volatile int irqraised2 = 0;
    - M# K' B0 q! j3 p  r* n# a

  63. % [3 Q* }# }. `$ B- g* L' ~
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 C# ]* ~, g0 {0 x7 n5 w
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - U2 t6 |4 O4 F6 G7 S+ b
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( E; K  m' c7 z1 ?8 }: ^; N

  67. + X0 V3 C+ c  U8 Z% [; i  l
  68. dma_addr_t dmaphyssrc1 = 0;
    8 I3 o7 x  v1 \5 i
  69. dma_addr_t dmaphyssrc2 = 0;
    ) w; H2 x# E8 a$ I) ?0 G8 y6 f
  70. dma_addr_t dmaphysdest1 = 0;" Q) L8 a* t) Z8 @- U" e+ }: n  G: b
  71. dma_addr_t dmaphysdest2 = 0;( T) P0 a" l! M: ^( V* h
  72. ! f! }7 {+ @3 A4 a6 c# o) I
  73. char *dmabufsrc1 = NULL;  i1 e3 ^, \+ C- J2 L) O
  74. char *dmabufsrc2 = NULL;
    ! t9 B" T0 e* N+ u
  75. char *dmabufdest1 = NULL;' j9 f. T1 {4 v$ p6 ?5 Z
  76. char *dmabufdest2 = NULL;" s, L( c" p- W! V9 S6 s5 [" H

  77. 0 v% A8 e) {3 W5 r# ^9 j
  78. static int acnt = 512;
    + T( i! f7 _6 D8 d! }9 G* O- O: P
  79. static int bcnt = 8;
    ! z- z0 N% _& u/ `( R/ e
  80. static int ccnt = 8;
    : \! X9 @1 y; `

  81. ) J" F3 T( Q3 ]( Y3 E" }; X
  82. module_param(acnt, int, S_IRUGO);( u# d5 y) {4 X. i
  83. module_param(bcnt, int, S_IRUGO);
    5 |5 a9 s4 h. N: F9 e
  84. module_param(ccnt, int, S_IRUGO);
复制代码

  F- U8 Q' B+ ]6 A, G
. M6 @: {9 Q8 u0 y% j      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用0 }- B2 b. Q9 B2 z
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& z, s0 X  S2 ~( g
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。6 x% W( U) b. ?0 s' u1 G* m
4 }' H7 T& l5 w4 u6 V' K/ c
5 i' q0 A" g4 e+ A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 03:21 , Processed in 0.043022 second(s), 27 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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