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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 . F% D' m: a+ C% b. C
  1. [code]EDMA sample test application2 C, [  Y; y) |& t( C. q
  2. /*7 E$ N; _# W0 q8 w1 Y5 [* _
  3. * edma_test.c- [8 A9 D  F) X/ X5 K# m/ K
  4. *; z6 L6 ?( A9 ~
  5. * brief  EDMA3 Test Application
    ) K2 C& O+ }5 F" ]( B" r
  6. *
    0 f1 `8 Y' X2 q
  7. *   This file contains EDMA3 Test code.
    9 m, g; F. I0 _
  8. *9 n  g, j& |+ B6 y0 t3 S
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    " S- |  A% J. h* H% a& n
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    0 U+ `# W$ b6 {7 N; M6 |3 V( K( e
  11. *         TO CHANGE.
      x; N  J! d# f0 n$ B& S. g9 w4 ]3 K
  12. *2 Z0 G- P) I. E% F9 J+ b
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      j7 V8 `, a* X. g; |
  14. *
    : l8 Y2 N% q; N2 w9 v" v; ?
  15. * This program is free software; you can redistribute it and/or9 O! M: d7 `( W: [6 D/ e
  16. * modify it under the terms of the GNU General Public License as* F3 S* \- p7 b
  17. * published by the Free Software Foundation version 2.
    6 p" E) n8 w2 w7 z' ?
  18. *% W) l8 D1 P6 T( I1 `! W" ?, Q5 r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any3 G; n  O: ?" C9 [7 z( B. h
  20. * kind, whether express or implied; without even the implied warranty
    6 ]1 J. M8 d2 D% d( T. v
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    + a) z1 d! r9 H* E, [, y) q  X
  22. * GNU General Public License for more details.$ u% M! n. B4 u$ V) \9 z8 J
  23. */
    2 G& R& ~6 U6 m; s: {0 D2 u

  24. 1 I9 P% ^# {" [5 f0 Z
  25. #include <linux/module.h>
    $ K; ]& [& k* r: s1 O
  26. #include <linux/init.h>
    5 w; I# F8 Z* L8 L. w
  27. #include <linux/errno.h>& q" j) p8 t; k3 ~) |5 D* ~1 u
  28. #include <linux/types.h>
    ; {+ ~( _4 D7 z8 W, S: O
  29. #include <linux/interrupt.h>
    * A% ?/ {, K5 A7 I  ~
  30. #include <asm/io.h>
    " P- P7 ~( m# c9 ~1 r
  31. #include <linux/moduleparam.h>6 t0 n- D4 U, q3 P
  32. #include <linux/sysctl.h>
    * }6 d, P1 s5 i6 N, D) v
  33. #include <linux/mm.h># c- n9 V" R3 ], t* `, c/ E
  34. #include <linux/dma-mapping.h>
    ' X) I1 U. E; p9 d# Q& r; [

  35. 6 o" s. ^+ @0 y$ k7 ?
  36. #include <mach/memory.h>5 F' ?$ d( [( s, x
  37. #include <mach/hardware.h>' r3 t- _9 |! r; h& {, N! k# q
  38. #include <mach/irqs.h>, g' ~# w/ e' l
  39. #include <asm/hardware/edma.h>
    8 q3 H8 t$ X) a0 r; v

  40. ! u& W3 x! G5 J
  41. #undef EDMA3_DEBUG
    & r: K0 u( v6 d% C
  42. /*#define EDMA3_DEBUG*/. a' d8 W4 o2 r: v

  43. 1 J. S' r# l+ e: u$ _
  44. #ifdef EDMA3_DEBUG. \- G- W1 I; A7 K
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    3 j$ {, _( n% Z6 l5 i4 _
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__); Z* F+ P& [+ U
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    # M, }: q1 w9 N
  48. #else
    ( ]8 ]/ _) V+ t2 I# a2 z# n) s
  49. #define DMA_PRINTK( x... )- p8 c! S; j! O6 `. \7 ~) ^+ \
  50. #define DMA_FN_IN
    : P" O$ j1 j4 h& H7 w
  51. #define DMA_FN_OUT7 i. R7 V+ B0 E
  52. #endif
    % g+ w3 y! Q' c4 ?

  53. " Y  I% B7 `0 V. V  m7 h' w3 z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    9 Z+ }5 ?! j- K
  55. #define STATIC_SHIFT                3
    7 v8 n4 b  H  _  u
  56. #define TCINTEN_SHIFT               20
    4 I8 D) m7 f0 [/ C% ]- {( A' g6 P
  57. #define ITCINTEN_SHIFT              214 W  z3 I# ?/ X& Y; T5 E
  58. #define TCCHEN_SHIFT                22
    # O/ z1 L9 m% A+ ?
  59. #define ITCCHEN_SHIFT               23
    / K; w% d  _  x7 {) ]. M
  60. 9 O) S8 p# q% K' s$ P
  61. static volatile int irqraised1 = 0;8 j' d0 C. x4 V! E( ^4 |7 M
  62. static volatile int irqraised2 = 0;. [/ K( A, u+ a- z5 m
  63. 7 x2 |+ H4 K; g- B+ \/ a. j$ {0 Z8 Q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 v* Q! V% w5 N6 `- K$ e4 Z, s+ y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 s# f# T" ]% H
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; N9 b0 J, A& v, W, h$ d
  67. 0 L/ s: G$ `! h+ h* ]# |6 m+ M
  68. dma_addr_t dmaphyssrc1 = 0;
    ) c5 A& P) c9 P
  69. dma_addr_t dmaphyssrc2 = 0;2 ]7 \' w& f8 r3 u  n' T' o, j
  70. dma_addr_t dmaphysdest1 = 0;  @0 y  P' o/ K
  71. dma_addr_t dmaphysdest2 = 0;3 `0 I1 R7 f: `% f) [+ u2 X) d

  72. & p5 P) y4 y+ G/ v* ~
  73. char *dmabufsrc1 = NULL;
    $ O; q/ v! D2 r$ O: l4 k5 j
  74. char *dmabufsrc2 = NULL;
    ) }" m1 z( [. k& q. E6 w, N1 j
  75. char *dmabufdest1 = NULL;0 h& y. D3 T5 m3 D
  76. char *dmabufdest2 = NULL;4 L4 l9 G% y  o. E

  77.   O, Y2 o) F8 v$ [2 u8 i
  78. static int acnt = 512;
    - J) q1 u4 G3 r
  79. static int bcnt = 8;
    " ]. k7 h  v# a6 B
  80. static int ccnt = 8;
    " L. m  r3 v# o4 D' p& }5 q
  81. 6 S) K5 g6 n* k0 i' H6 t
  82. module_param(acnt, int, S_IRUGO);
    7 @9 ~' A3 l. {& E9 b$ p5 H
  83. module_param(bcnt, int, S_IRUGO);7 K4 U( C% B. l( q3 l* t& N
  84. module_param(ccnt, int, S_IRUGO);
复制代码

! I' V9 {5 o! N4 ~
/ t/ u% l; U9 D+ u6 U, M      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用3 H. @$ G0 I: V2 f
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
/ ~" u: Z  w" }0 c, J$ s4 X     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。( I) |- B6 i) t$ \! K; X

1 @& r0 V  }2 k
4 F, l6 w% {! X/ A7 |  S3 \8 b
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-7 13:11 , Processed in 0.040529 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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