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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
6 l8 n2 k$ v; E1 U$ s) {9 N4 Q
  1. [code]EDMA sample test application7 X9 M3 O8 R1 b1 G! n# K3 q& M
  2. /*
    5 b) `4 D3 X. d
  3. * edma_test.c
    ( s# f4 C& {' L
  4. *
    % a7 f' a; X/ [( y9 i$ o
  5. * brief  EDMA3 Test Application; v. x# `+ ~' T( N. a4 Q
  6. *5 u" L7 ?9 k3 b) a4 |1 M
  7. *   This file contains EDMA3 Test code.
    8 n0 Z; z% R' _+ \( ~
  8. *
    # m& m% p3 ^* m9 ~0 a" f- l- I
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' @0 J0 P2 d. o0 Z/ J( C  n
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    . i0 T8 q8 B+ [0 \2 @$ ?
  11. *         TO CHANGE.
    9 i! e% u0 h; x% `; l* Z
  12. *
    9 y6 i7 A; }/ a0 o5 r* m* j
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. A2 c( D4 x4 P) e
  14. *
    ! g: a& {) Y; |) T/ {! D$ `' V
  15. * This program is free software; you can redistribute it and/or/ B" y# v* }. o
  16. * modify it under the terms of the GNU General Public License as& g- O3 s9 k& L) M6 @
  17. * published by the Free Software Foundation version 2.
    . T/ |4 H) f& t, |
  18. *5 a0 g# v, a0 S, |2 _  Q7 w
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; R% U6 S: t& e: Y7 R. P
  20. * kind, whether express or implied; without even the implied warranty# z" U! O5 ~6 N! Y5 Z( c- m8 v
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 J% d, v: F/ G0 y8 l3 X2 I
  22. * GNU General Public License for more details.  }9 j! a$ \* C  Q/ o. ?% U) _3 y
  23. */+ s" k2 G* P! Q6 L3 d
  24. ) S8 B5 \7 C1 ?0 X/ p
  25. #include <linux/module.h>
    6 K7 g$ P# }4 z5 @
  26. #include <linux/init.h>& C. S: ?0 Q( P% ^4 n' `" X
  27. #include <linux/errno.h>
    + [- \2 Q/ |  j/ i# r" [
  28. #include <linux/types.h>6 H$ s0 A( r/ p# p; g) K
  29. #include <linux/interrupt.h>: x: ^) q. Z6 l' z' {% w
  30. #include <asm/io.h>* A5 X+ e# j0 T8 q0 [
  31. #include <linux/moduleparam.h>
    7 O! Q2 N/ I1 }* V  L, x
  32. #include <linux/sysctl.h>
    " d& e+ h7 L3 R
  33. #include <linux/mm.h>: e9 \. c; x% H/ ?  t
  34. #include <linux/dma-mapping.h>
    6 V( S1 @- M& ~
  35. / l( h& d! a5 `& b/ X8 @
  36. #include <mach/memory.h>& }) G6 N- S2 _# y8 `' Y
  37. #include <mach/hardware.h>$ s; i9 `- N- G# l9 z0 i3 C
  38. #include <mach/irqs.h>
    . s' p8 v" G0 T8 X  S
  39. #include <asm/hardware/edma.h>
    - c, ~- K& m' u! P9 V' C$ r

  40. ; k# ^0 G$ N- F! V( Q9 x: l
  41. #undef EDMA3_DEBUG: S6 Z: k( G0 \+ b5 P6 e
  42. /*#define EDMA3_DEBUG*/
    - \0 U! ?) L9 c+ d, Q" K
  43. 5 k) o: z) _/ D. D# }# f
  44. #ifdef EDMA3_DEBUG
    " P" h  N3 L/ Y5 D! V
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ! T9 ^4 r. G1 ~* n# u, _/ p4 W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 B7 L4 S$ m: r' P
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    5 e- c# O. ~( Q, {
  48. #else
    % B  g6 o* p- a
  49. #define DMA_PRINTK( x... )
    9 A! j& q7 u' t1 I6 Q8 J; \, S
  50. #define DMA_FN_IN! @7 C! _8 N3 Y" r+ v6 {3 c5 Z
  51. #define DMA_FN_OUT$ l' t, J2 b- }5 m
  52. #endif
    - x- Y2 ?; `- ?$ |
  53. 0 P: v( l3 S- E+ I$ X# z& g
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)- E+ L7 N# z2 e2 ?9 [
  55. #define STATIC_SHIFT                3
    $ b0 {% k/ i; L+ a3 x
  56. #define TCINTEN_SHIFT               20
    / i" _& j3 ~- U9 Q2 @) @) R; y
  57. #define ITCINTEN_SHIFT              217 N- e, c# C4 a
  58. #define TCCHEN_SHIFT                22
    ; O' G  Z! E8 {! v  j
  59. #define ITCCHEN_SHIFT               23
    4 X6 d2 L3 y2 u. F. e. F
  60. ! q7 T! p, ?. R. f+ h
  61. static volatile int irqraised1 = 0;
      H% U, d0 P% I. i) O$ ~
  62. static volatile int irqraised2 = 0;( X/ b0 K* Z' q& m

  63. 9 a$ J' q) X* y/ r- s* d
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ ~3 U7 Y" Y/ M- h4 `
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . g4 Z; j9 p$ m6 X
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! N; b5 u6 w2 D0 B4 b. s3 W

  67. 9 y4 X( m3 Q! K1 ^" _8 Q5 E+ z( x, q
  68. dma_addr_t dmaphyssrc1 = 0;
    + n4 H+ N# \) u; a, z/ C8 }$ K$ A
  69. dma_addr_t dmaphyssrc2 = 0;( D: {# X' d/ }3 V
  70. dma_addr_t dmaphysdest1 = 0;
    4 m( e! e! q8 P
  71. dma_addr_t dmaphysdest2 = 0;: s/ ?; b! G- t$ e! ~6 j8 @! f- I

  72. ; s* C, C; Y* h9 [# v' A5 C, D& c
  73. char *dmabufsrc1 = NULL;$ X' ^' r% }  j4 F/ _
  74. char *dmabufsrc2 = NULL;4 d1 F. D# c7 g
  75. char *dmabufdest1 = NULL;
    5 o/ D2 s9 T% V0 k- V. Y9 l" F
  76. char *dmabufdest2 = NULL;5 P+ ~5 q( t  P& l& R

  77. 2 [* @% G* M, I3 M7 r7 w# r7 n
  78. static int acnt = 512;" q' N9 G* C% h$ |) @% h
  79. static int bcnt = 8;
    % p- L& a: C# ^( K. c2 i
  80. static int ccnt = 8;; R) B$ r( @( b
  81. 0 E2 d+ v. a4 o$ w
  82. module_param(acnt, int, S_IRUGO);& g, N' g7 `& Q7 L+ b9 _6 b
  83. module_param(bcnt, int, S_IRUGO);
    8 r, P3 R; r4 I$ ]: i+ C
  84. module_param(ccnt, int, S_IRUGO);
复制代码
% d- p* W+ C2 j: `4 b

3 k7 f+ s; _9 s      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 Q* x* f) e$ f: `3 i; M. C6 B
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' i) B7 t- W; Q# c/ D- ^: k
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
0 E  N0 \2 \( T4 ^
8 f5 u0 @- Z; S5 {2 y# N# [0 Q0 k- E! m; P% J2 D, ]8 n' w
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-3 15:53 , Processed in 0.037689 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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