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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 v$ y% h  k; _
  1. [code]EDMA sample test application
    . [2 T' S3 K0 [
  2. /*. v0 ?/ g4 Y3 j; x% `$ A+ h5 R
  3. * edma_test.c0 x' O9 h8 K" O& n% ?* m  _, ?/ H
  4. *1 t) s0 V% j* w4 j5 O) T6 M" h
  5. * brief  EDMA3 Test Application1 c  f" W& W( l$ W) R+ S# X
  6. *8 e- G4 F: k+ q& O
  7. *   This file contains EDMA3 Test code.
    1 a  i1 b! V1 _& F0 d
  8. *
    + q* x0 W7 A2 d5 p& ~
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    $ s. x2 c& E6 K! x% P
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    , v0 ]6 J4 y4 B- \0 Q+ A0 W
  11. *         TO CHANGE.
    ( C, f- T% Q! u- [% Z
  12. *
    & S; _+ T: q& k1 x" U; c$ {
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      l- Z6 H4 G: W
  14. *2 M  M* k4 v$ o7 Z  J, I0 w
  15. * This program is free software; you can redistribute it and/or2 L7 J& C# u' m/ p& b5 C
  16. * modify it under the terms of the GNU General Public License as! r6 d& \7 D* M7 \- |# C  _
  17. * published by the Free Software Foundation version 2.
    ; j* B- q9 H$ T% F; K5 ?' k
  18. *
    : f; K2 m1 A( H- v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    / I* D% y. r( A, I* G0 b
  20. * kind, whether express or implied; without even the implied warranty
    $ {5 ~8 I- G7 C; v' d- `
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      H! f* x/ L; v/ L; O0 l$ X% P
  22. * GNU General Public License for more details.  e; I5 d5 v2 p# D# ?
  23. */
    # f' @/ z9 B$ P; }+ N
  24. ! B' q" T$ v5 U$ ~
  25. #include <linux/module.h>* q( k* m# w2 J
  26. #include <linux/init.h>1 ]( M; U9 @% j
  27. #include <linux/errno.h>) _9 }. v  o% t+ Y4 H
  28. #include <linux/types.h>5 I; r, r% Z( u7 D6 r- q9 M
  29. #include <linux/interrupt.h>' o( G: M8 I- Q4 E' e( E
  30. #include <asm/io.h>! w2 B" N' }4 Y( k
  31. #include <linux/moduleparam.h>/ x  ]( g, e2 @: O* X7 Q' _
  32. #include <linux/sysctl.h>, n9 q( M# L! Q$ Q' u
  33. #include <linux/mm.h>
    % `; L$ w9 a+ V* K, l  L
  34. #include <linux/dma-mapping.h>( x9 O: n2 y, s  K( U0 U
  35. 5 F0 C( [, e! e1 [# e8 `
  36. #include <mach/memory.h>
    4 A/ r: c& n1 d% F! o0 |
  37. #include <mach/hardware.h>
    " C# J1 V0 h; l
  38. #include <mach/irqs.h>
    + f* p( U0 d6 K, L5 T7 k8 \- \
  39. #include <asm/hardware/edma.h>
      u% k; v: M7 [* E/ D) E
  40. 4 l* }* M4 l2 `8 M9 S5 M! c9 H
  41. #undef EDMA3_DEBUG
    & ~' `. H) e: ~1 J- L$ \" @
  42. /*#define EDMA3_DEBUG*/6 I5 E/ l7 X+ v

  43. " t9 Y! U/ F2 C. Y9 C7 ?
  44. #ifdef EDMA3_DEBUG
    1 G2 t3 D# s6 @/ q0 M& b
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    + L' X7 |- q9 r+ W! A/ n" M$ U- p- s
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)" B4 F) S1 u$ @( [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    * x1 D" x" M# D% ~6 v) W! x
  48. #else; w7 v0 u0 S( F& M
  49. #define DMA_PRINTK( x... )% r: h& o% x: \& X/ ]" [
  50. #define DMA_FN_IN
    8 c6 ?/ g! L" B. U
  51. #define DMA_FN_OUT
    , \9 u4 K9 ]; u8 u
  52. #endif
    % _( H2 K- l+ h; ^% @) r5 v+ ]

  53. 5 b- V7 `6 I5 U
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    2 c4 R5 M3 s/ Y7 ~8 p
  55. #define STATIC_SHIFT                3* Q' y' @4 @5 J6 k& a
  56. #define TCINTEN_SHIFT               200 v7 Q: E7 ^2 l! F- C! }0 M* B, h
  57. #define ITCINTEN_SHIFT              21
    5 f, w3 Q* v4 U3 G4 H" M
  58. #define TCCHEN_SHIFT                22
    4 u3 r7 m  l2 {5 Z2 s. c
  59. #define ITCCHEN_SHIFT               23) s* ]+ ^9 Y# l! @$ E5 H/ c' C
  60. ; U& [! s- Z$ l6 l3 ~
  61. static volatile int irqraised1 = 0;" l9 Z& M2 _) Z7 o1 U
  62. static volatile int irqraised2 = 0;' ^2 O/ i" L# l# E
  63. + e1 m0 D* G8 W1 O5 ]. j# A
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 |1 Y, \! F6 R
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ j6 X3 X. g3 Q& K; O% O; Q+ ]
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 ?& z" `  n0 e9 n  z# {
  67. 5 G8 W* G  B% i0 X- ^' b
  68. dma_addr_t dmaphyssrc1 = 0;$ g. ~4 F- W3 Z/ f1 }' Z9 `# a
  69. dma_addr_t dmaphyssrc2 = 0;
    ( {# [4 ^: ?: N& e* n
  70. dma_addr_t dmaphysdest1 = 0;
    1 X; j+ Q" o0 E+ T  ]  b$ [1 r0 z" P
  71. dma_addr_t dmaphysdest2 = 0;
    ( U# y) B* ~, Y) @+ w) s3 w2 [

  72. % u) D1 K5 S7 D! d( r4 Q) w* o% C+ K( R
  73. char *dmabufsrc1 = NULL;2 [; o1 i1 {, r" i& |9 m
  74. char *dmabufsrc2 = NULL;
    . m7 H3 Z" G6 F: l8 k, W% R% ?0 o' a
  75. char *dmabufdest1 = NULL;9 j. @$ S. O4 l' _9 q  G7 f# Q2 c; t
  76. char *dmabufdest2 = NULL;
    . F" R- [0 @, \1 R

  77. ( G& T- c, T8 v/ d+ Q& U
  78. static int acnt = 512;0 k; v( D5 ~* e+ @
  79. static int bcnt = 8;
    8 F0 G  Q7 V+ f  t9 n9 _. v
  80. static int ccnt = 8;* G$ q! T, q' k0 W& ?3 a0 g
  81. / H4 I" j8 {% w2 t' F, d: s1 X" M
  82. module_param(acnt, int, S_IRUGO);
    / D" ?" o$ l: I
  83. module_param(bcnt, int, S_IRUGO);
    % C0 J! a1 W9 K
  84. module_param(ccnt, int, S_IRUGO);
复制代码

. K0 k7 t+ b! h/ x
2 M& }2 @' {. N; ^      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
! R* ]& [" z% k% o$ C' i( iarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 M  J' c) Z' N5 w5 a* f9 v3 n     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。( q9 l4 u" t- D; j4 p" n: j5 q! c3 Z

* T! g- v, u! R5 b. q$ {4 G
7 _3 A. d: o! s0 ?& K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-12 19:32 , Processed in 0.055228 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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