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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 @6 f/ l; U3 i9 D  g  S- w
  1. [code]EDMA sample test application
    " K$ P0 E# V  X7 U
  2. /*
    ! s. m5 B  @/ F
  3. * edma_test.c5 X. }4 M7 p& r; ]) A2 F+ `3 m. i
  4. *7 G! \3 j- m" C5 l: [' n1 k! _
  5. * brief  EDMA3 Test Application
    " G5 s7 W7 W. m# D
  6. *& F3 A% z0 M; D9 T
  7. *   This file contains EDMA3 Test code.
    . C4 O7 Q  m8 \5 j; J3 o
  8. *
    0 m& U! _1 d" ]- z: R: M
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE  z$ v. k# Q4 [9 h- v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * [6 w0 j8 ], ?/ A) `
  11. *         TO CHANGE.' z: Y6 {! z3 ]5 Z' e# |
  12. *( @# A8 R8 C' E2 v, f6 V
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    3 Q/ `  B( ^! f+ Z7 C0 n
  14. *- |) W, ~. D% k( q; H
  15. * This program is free software; you can redistribute it and/or; q1 C6 x3 z8 G$ S* Z  j7 {+ d- |* n
  16. * modify it under the terms of the GNU General Public License as, ~4 x- G* a& F2 \0 \- ~
  17. * published by the Free Software Foundation version 2.- C1 f+ p7 o3 G; v7 ~; {1 r- ]
  18. *& e/ P' _! k6 V8 D2 u' z7 Z- j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 V, W. C) S/ V7 V5 X! e
  20. * kind, whether express or implied; without even the implied warranty& w( S; H  j' y9 `- a6 K. x1 y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    " N; [& b  R: F9 v' X' {2 Q
  22. * GNU General Public License for more details.3 ]6 }/ O5 k7 S+ q0 c
  23. */
    + W' x; w, s3 S: Z9 W

  24. ) }+ f! v$ K5 ]# H4 D% o9 F
  25. #include <linux/module.h>
    # n2 y( N, t# v+ {
  26. #include <linux/init.h>
    6 U' V2 u4 F+ G- X8 E
  27. #include <linux/errno.h># B3 L; D% }0 P$ Z) g: s
  28. #include <linux/types.h>3 X8 t7 c0 B- p0 M* Q) P9 G
  29. #include <linux/interrupt.h>
    % X- v8 N  b0 n
  30. #include <asm/io.h>
    + g: {5 u, U. v0 r2 ?9 p+ B2 O
  31. #include <linux/moduleparam.h>
    / H" Q  ?) m) T! }
  32. #include <linux/sysctl.h>
      L$ x. [; w# q  R
  33. #include <linux/mm.h>7 @5 M+ v0 X' D/ D
  34. #include <linux/dma-mapping.h>
    ) H$ n) f) o7 S: ]" Y, M( H

  35. 0 ?7 y- ], `; p6 X& ?0 A
  36. #include <mach/memory.h>
    7 P3 y# z* Y, Y* W) ~
  37. #include <mach/hardware.h>
    + {* H$ r* ^* W
  38. #include <mach/irqs.h>
    0 Z/ c& o+ ?/ \$ W' o2 n! v
  39. #include <asm/hardware/edma.h>
    # m( W0 A: i% w5 M% `3 T, F  P

  40. 1 c# ]3 J; I0 T) D5 ~) Y/ v
  41. #undef EDMA3_DEBUG: a3 @8 K8 K- Q
  42. /*#define EDMA3_DEBUG*/2 A2 V- q/ |+ Q: s, k/ E. V

  43. / G+ U9 F9 ~# F
  44. #ifdef EDMA3_DEBUG
      i; z1 J, r, S% A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    : }' Q, r' a6 v1 J3 J
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)% ?) V, V6 v$ J; k- j
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): t/ k" ?. W8 H1 ?
  48. #else- Y3 O, n* S  C: l" r
  49. #define DMA_PRINTK( x... )
    " ^3 X- D: a; l/ C& c
  50. #define DMA_FN_IN
    ( z, E" G3 ]3 a! p  ~* p' i
  51. #define DMA_FN_OUT$ D7 S' U  H4 v3 V/ H" f
  52. #endif6 i3 x% R8 B4 x' g9 Q2 p1 Z+ n, [4 O. _

  53. , t9 [& r& U2 K5 x0 m
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    9 o# S5 J- Y  R
  55. #define STATIC_SHIFT                3
    6 U% Y' {5 `& [9 B% j" O. }" l3 q3 a  F
  56. #define TCINTEN_SHIFT               20- p! a8 `) i3 x% l
  57. #define ITCINTEN_SHIFT              21
    ( f! C0 F: C+ Z9 B2 z; A
  58. #define TCCHEN_SHIFT                22$ _5 p0 {, F- Q# F; r
  59. #define ITCCHEN_SHIFT               23
    3 n3 w! `1 p2 p2 P$ e3 ?& w
  60. 9 y" @" w$ s; z$ i7 c; h
  61. static volatile int irqraised1 = 0;
    + X/ o& b& C5 b. i0 ]
  62. static volatile int irqraised2 = 0;
    4 Y: K9 n" f. U8 U

  63. 5 e0 X  Q. _. w1 z! F
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) j, o; S+ b" a7 a
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - m1 ]% u( H) X1 W
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 {, z$ P/ G/ Q" e) H
  67. / \" ^% D% h; }1 w4 t
  68. dma_addr_t dmaphyssrc1 = 0;
    ! w. a* g$ e  `6 x) z
  69. dma_addr_t dmaphyssrc2 = 0;
    7 T7 R+ _6 W. u
  70. dma_addr_t dmaphysdest1 = 0;
    - r, p. |: K; j4 y
  71. dma_addr_t dmaphysdest2 = 0;
    : j3 V/ {1 m6 m- ^* P4 Y6 q

  72. 0 f: w$ v6 [8 s3 j1 z. g+ c! M
  73. char *dmabufsrc1 = NULL;& _: Z- W# k, O: P) I1 ~9 Y+ O6 @
  74. char *dmabufsrc2 = NULL;
    ! h& v  R& A; k! j0 h* ^
  75. char *dmabufdest1 = NULL;/ X6 Y+ [( ^: ?# h* L5 c  J
  76. char *dmabufdest2 = NULL;
    " U4 ?8 a( |: ]' v& ~

  77. 5 p9 u0 T0 W0 H+ k7 ^& g2 P
  78. static int acnt = 512;' m7 j8 o4 A% T
  79. static int bcnt = 8;6 c6 t  c* t. f1 h  y1 r
  80. static int ccnt = 8;% d, H" `) f+ V7 A
  81. - t" f- n' l7 M; {
  82. module_param(acnt, int, S_IRUGO);
    1 c5 j8 V! w& [1 L- p
  83. module_param(bcnt, int, S_IRUGO);
    , [/ ^! u5 H0 h! u0 k: c: q! g
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ }) @# J3 U5 H- X% K
  `: {$ E! a: A0 T/ z3 h( S/ A% v) ]
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, n$ y- \$ N  a& O, ?" Darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。) d% T% o' g: Q7 r" O
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。* U% B2 f; W$ t0 D- g) P* L3 H

5 p: z' b8 o2 b4 O1 S$ O- t- i' o2 v, i  P3 d7 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-2 17:41 , Processed in 0.037267 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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