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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
' J- Z# `- m6 Y
  1. [code]EDMA sample test application2 k- J" o$ ]5 Y* j! [' E7 Q4 d  B
  2. /*/ Y9 b/ ?4 v7 O
  3. * edma_test.c
    ) W5 t, h2 c) S2 U! L6 {
  4. ** Z8 r% F! V+ g3 \
  5. * brief  EDMA3 Test Application
      d) z/ Q  g/ ^# j6 L3 T
  6. *
    " i1 x* Z: O/ M3 p5 }/ L( I
  7. *   This file contains EDMA3 Test code.
    ; N. o- \  K8 j; b2 q
  8. *' D5 @7 l" [( W0 w9 U
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' S- d$ L7 K+ s, d3 ~5 T6 Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % f6 G. k% P' R7 A% I
  11. *         TO CHANGE.
    ) A6 W+ E' M- r* s, j
  12. *0 A% m* Z! [. A- j
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 D  M, G/ X( Y2 W
  14. *0 F. h! }' H: K& R: O- T
  15. * This program is free software; you can redistribute it and/or2 M  m# d. T+ c+ N
  16. * modify it under the terms of the GNU General Public License as- |1 i0 @! B5 `4 y* \
  17. * published by the Free Software Foundation version 2.4 i1 I" X# B- ?9 }
  18. */ u0 ?- K8 Q* K! u( A& P
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ J1 |6 r* }5 G$ b
  20. * kind, whether express or implied; without even the implied warranty5 L5 w* D5 v( _8 v; A
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 n* V5 ?! U- ~6 b
  22. * GNU General Public License for more details.
    5 y6 Q0 v" w8 d& |% H
  23. */
    + T7 R0 X8 s" u6 X0 w: T  a
  24. & J2 w( w  Y0 N& m- ?4 b
  25. #include <linux/module.h>
    4 D0 ]. N) d5 s2 f
  26. #include <linux/init.h>
    ! |7 J) T3 i  S5 ~6 C3 \( Y
  27. #include <linux/errno.h>
    ' x4 k2 R! s; ?# N1 I# _
  28. #include <linux/types.h>: @6 X; T! }6 ~' Q
  29. #include <linux/interrupt.h>& S4 U9 |+ e& |4 R# O& n
  30. #include <asm/io.h>+ x+ K0 X( b' n& q, I  L
  31. #include <linux/moduleparam.h>4 w6 p) x5 r6 l/ M
  32. #include <linux/sysctl.h>
    1 Z- o3 E( m; W" w
  33. #include <linux/mm.h>8 O" o3 e4 w' F/ `* E. f* N+ X
  34. #include <linux/dma-mapping.h>* `6 a! P6 H: B

  35. ' G) R. a0 _+ K" j
  36. #include <mach/memory.h>" T. K# ~8 M6 y4 ]3 v- E0 z" F
  37. #include <mach/hardware.h>4 |6 t4 F7 D! \+ n/ L
  38. #include <mach/irqs.h>
    $ x3 u) B( \" C1 |& c- q. h
  39. #include <asm/hardware/edma.h>
    ! O- Z1 r! X  F

  40. ' O3 W! j3 _6 u$ j7 c; G+ G
  41. #undef EDMA3_DEBUG
    ' M+ Z( \' s: D; Q* {; w
  42. /*#define EDMA3_DEBUG*/
    , F, x  u% P5 n
  43. 1 H/ D6 ~! r1 [4 f2 o1 y# U& b
  44. #ifdef EDMA3_DEBUG
    0 C, ?! `& ?. o& R% O" }% U# s
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) c# W2 F- w( d- q/ B
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    2 ?( r! [# `2 ]
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)- ]! }5 w' T+ z
  48. #else; N9 a2 U9 @* R) q! a( Q
  49. #define DMA_PRINTK( x... )* n1 D# }* O: ]; f$ t
  50. #define DMA_FN_IN
    ) [) N( [+ E0 @0 N* ]8 h& d' {5 m
  51. #define DMA_FN_OUT% w# k$ |1 ^0 j7 A& {- B* k6 L+ Z
  52. #endif: m) y4 B$ l6 u
  53. 9 `8 H' O8 {3 A
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)+ l2 V3 E' I$ W6 M
  55. #define STATIC_SHIFT                30 e# G; g' W4 Y3 E9 ~* R6 `% L) C
  56. #define TCINTEN_SHIFT               204 o8 O" @! _- j4 T4 I: `8 i
  57. #define ITCINTEN_SHIFT              21
    2 _3 x# V7 R* u) X9 j/ z$ P
  58. #define TCCHEN_SHIFT                22
    5 T- F! s: k; M9 K" o1 Y
  59. #define ITCCHEN_SHIFT               231 [& }) d( p" g  ?1 p( \
  60. ) C4 ~( w* T/ U  f- u1 J1 S& ^
  61. static volatile int irqraised1 = 0;
    , }9 `' E8 e1 o- L: p; J
  62. static volatile int irqraised2 = 0;! [8 `+ i# t6 C4 X4 p/ W4 c
  63. , S% E4 {0 ^4 r" F
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ _+ b7 m# |, }# _5 N7 U
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 P4 U* v+ V4 k) p
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 Y3 {& Y+ \" l& N7 d

  67.   G. z- j3 ?0 e# B
  68. dma_addr_t dmaphyssrc1 = 0;: L; @8 v# l& ~; {9 n
  69. dma_addr_t dmaphyssrc2 = 0;
    ' X3 R( _1 }" h# r/ |% P' [
  70. dma_addr_t dmaphysdest1 = 0;8 y) i/ O6 Z& q
  71. dma_addr_t dmaphysdest2 = 0;
    ; Z5 z& m- E2 N; {- _! i0 p

  72. 7 f0 G4 f3 E5 V2 |$ f" ~: Y
  73. char *dmabufsrc1 = NULL;
    $ }6 [- o- P% l" ?2 [, ^8 i8 d
  74. char *dmabufsrc2 = NULL;
    ( [" T$ u4 @5 y7 d  B
  75. char *dmabufdest1 = NULL;2 C, y( F% u; g  `
  76. char *dmabufdest2 = NULL;5 J; ?+ l8 Y% o" d- P
  77. 6 t7 r" l3 t1 i. r
  78. static int acnt = 512;
    6 {0 [# v/ ~7 o5 `
  79. static int bcnt = 8;
    4 j) \4 i# ]  B1 s
  80. static int ccnt = 8;
    : @$ J/ d, T& {1 q$ z4 f5 N' d4 k

  81.   Q8 c) U4 b* O1 S
  82. module_param(acnt, int, S_IRUGO);
    ' c) z( O3 Y5 Q  w: w
  83. module_param(bcnt, int, S_IRUGO);) [, k: ~; t/ f& r* M
  84. module_param(ccnt, int, S_IRUGO);
复制代码
+ V7 ^& [5 Y3 |5 C9 f6 D: E7 j

$ E! E' `/ ^6 P1 w, ?' q      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" a" I2 f; _* v1 yarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。3 b4 H7 f3 k, l0 u
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
3 k2 H# N0 C( r7 M8 J
% L$ n2 ~+ |/ V3 H& R; q8 G. p/ Q% Y; N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 10:48 , Processed in 0.040147 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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