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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 % j  G. ]! M( R# v8 S+ r9 v) d
  1. [code]EDMA sample test application) `4 T( b" j* b4 B2 H' t8 J! U& f
  2. /*6 B; _8 Z( |3 [+ `4 o
  3. * edma_test.c
    3 k8 c# U& A+ i# J6 e
  4. *( C. K; r, x+ Y: ]$ b! t
  5. * brief  EDMA3 Test Application
    ; \7 H+ s# E* r7 |# a$ T
  6. */ t* @% {+ [; O1 G0 g; \
  7. *   This file contains EDMA3 Test code." v* X7 j: c& }
  8. *, S/ Q4 I1 E4 J/ L. }3 A
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE3 h& ]7 V+ R/ o4 r3 f: {
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    . O# A9 p! C$ U+ t/ T  K* m
  11. *         TO CHANGE.
    ! G+ p4 @' I  D1 Q
  12. *
    * O; u6 ~0 d! c% Y+ R  P
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# \0 ?1 W  w* |& j, E' L
  14. *  b% F, k5 C# U1 |! X
  15. * This program is free software; you can redistribute it and/or) n' @8 V7 R2 P3 W0 r+ U
  16. * modify it under the terms of the GNU General Public License as
    : o' e- |. o; r1 G
  17. * published by the Free Software Foundation version 2.
    ; P( g3 L& l3 G+ b2 L
  18. *
    & q! n/ o6 L; d5 `0 b8 c
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any. m2 W. g. ^- S# D* v6 x
  20. * kind, whether express or implied; without even the implied warranty7 C. l1 P3 t5 F6 W+ d' E  }3 Q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the# ^: P( s# p- p2 j
  22. * GNU General Public License for more details.
    ' F1 U7 Z0 o# ^
  23. */5 v, p; u1 W. v
  24. 7 {! w: L3 E9 \4 x
  25. #include <linux/module.h>6 H! e8 h: b" B; l2 _4 b. h
  26. #include <linux/init.h>6 T4 F/ e( D; C+ F. S
  27. #include <linux/errno.h>
    4 \9 \% |  Y# C
  28. #include <linux/types.h>* J( T, s3 j$ a3 P- |) F
  29. #include <linux/interrupt.h>1 B1 d  i* S. J0 G+ D
  30. #include <asm/io.h>
    % b: m9 V0 y) o/ s* `" m
  31. #include <linux/moduleparam.h>! C* k4 g5 }" M. b. U
  32. #include <linux/sysctl.h># t5 }% i/ E: d# b5 N# }6 [) Q
  33. #include <linux/mm.h>
    + m( R2 [. |! m1 M6 Z  Q1 T
  34. #include <linux/dma-mapping.h>6 w" s  g1 |" V5 `6 m+ B2 o
  35. # H# W+ m. o' A; x1 r  t* U- ]% u
  36. #include <mach/memory.h>. z/ J- y& [# Q3 ]' U7 v% r8 v
  37. #include <mach/hardware.h>
    - K: g! w' z$ S! o9 R4 X1 J
  38. #include <mach/irqs.h>
    1 y. X5 q. c8 U3 ^
  39. #include <asm/hardware/edma.h>
    0 y$ s2 @! i9 e8 y

  40. 4 K4 C, z$ Y) v: D& P
  41. #undef EDMA3_DEBUG
    1 x5 F  E5 b* y+ e, X& G# [
  42. /*#define EDMA3_DEBUG*/$ l$ Q  Y5 s/ ~2 y3 ]* R. U

  43. . ^  ]/ k4 l( R/ K" {
  44. #ifdef EDMA3_DEBUG
    ! X9 r4 a% Q! ~1 I+ C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)- ]7 y* M9 y3 W1 V4 w2 W8 t* g! o
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)$ V4 K5 f4 B3 Y9 D, q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    / I! Q, u3 f4 G$ Q, i6 C
  48. #else
    7 h  M3 S+ P  t( h1 @" }
  49. #define DMA_PRINTK( x... )
      W* ^" a& Q* `6 s
  50. #define DMA_FN_IN
    " V- [+ L, T0 u
  51. #define DMA_FN_OUT
    $ u7 h& g4 i" C/ a4 U  O
  52. #endif( w8 i0 g9 e+ ?. l5 t

  53. : H, a* M6 c0 @' q# ]% C( H# L
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)$ B2 ?5 h! e+ Z- I+ D; Y5 |6 ^  m
  55. #define STATIC_SHIFT                3
    ( `1 S2 x2 Z1 Q! W" h( g
  56. #define TCINTEN_SHIFT               20
    ( e9 a( u! W" K, q+ s
  57. #define ITCINTEN_SHIFT              21
    7 r. u# E$ c, @: m9 ~! P8 u' Z* g
  58. #define TCCHEN_SHIFT                22" |5 H. l/ e1 P. Y# a9 V8 Q& L
  59. #define ITCCHEN_SHIFT               23
    " }5 }# f! c5 m' s' R( F

  60. $ [: c/ K  Z) _6 P* j9 N
  61. static volatile int irqraised1 = 0;
    ! D6 S( T4 k; W+ U- e7 x$ ], F  G
  62. static volatile int irqraised2 = 0;
    1 l! i0 S$ ^; k4 d+ U1 r+ c' x+ w
  63. ! T: A& w) H  |. H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ w: M0 u7 A1 C, I  x9 M
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* {2 z; y' p& [; |/ M1 h
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 q8 f% k, G6 L  S" w

  67. ) Y, ?( [* {& j# [' ^# i6 X
  68. dma_addr_t dmaphyssrc1 = 0;) @" b/ y, a' }; X# _
  69. dma_addr_t dmaphyssrc2 = 0;
    & l# i% @8 n; |: W7 L
  70. dma_addr_t dmaphysdest1 = 0;
    . I/ M6 K9 a. G: I+ T
  71. dma_addr_t dmaphysdest2 = 0;  k" Y. q' N7 y# o1 R
  72. 2 q9 }7 Y! L) e$ _0 ?
  73. char *dmabufsrc1 = NULL;
    % R2 N7 }! l  w% F5 \; j. }
  74. char *dmabufsrc2 = NULL;
    6 C4 D7 L9 l; \( F* p# j
  75. char *dmabufdest1 = NULL;
    ( U5 h+ w4 N; _. @
  76. char *dmabufdest2 = NULL;
    1 X7 Q6 [3 _7 ?, s) I+ g; c- t
  77. 5 |4 J9 K/ L$ S$ v
  78. static int acnt = 512;
    ; {7 n1 N: D# r# l0 d: c
  79. static int bcnt = 8;
    5 z( z  [& r$ W/ U
  80. static int ccnt = 8;
    5 x5 t$ K. J9 L' c

  81. 8 C2 N5 f$ `5 z. O
  82. module_param(acnt, int, S_IRUGO);$ F( S0 U; E5 o2 [
  83. module_param(bcnt, int, S_IRUGO);4 T! u" W( j! S
  84. module_param(ccnt, int, S_IRUGO);
复制代码
, ^+ }& m" `9 I$ X8 s
0 P% k5 ^! J! g. I6 k9 l3 I  I* I
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, J  i0 o( l8 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
8 E% S4 J8 I# m9 S7 j3 s  _9 }     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
/ L2 l1 _2 J- t  e( U; r4 C' r1 I) C" _. J% ]

! W) c  k/ {, F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-15 13:48 , Processed in 0.039825 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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