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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
% n. A) e. A0 j9 T, `/ y3 p
  1. [code]EDMA sample test application
    8 Y( c+ Y: y  |2 w0 ?
  2. /*& n' _$ i; r) z8 f: q0 O! V8 q
  3. * edma_test.c2 O7 b2 I3 S2 W( b" P
  4. *5 ?: z4 R6 G% p5 r( m
  5. * brief  EDMA3 Test Application. f2 p4 z# b2 m* R5 D- w# a5 x2 T
  6. *4 {1 V  c2 a; ~0 W
  7. *   This file contains EDMA3 Test code.
    : u/ N8 P( l& u
  8. *
    5 y  Z0 \3 T; C4 f/ w* ]/ F6 F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE* q$ N. g, H( u6 {* ?* S
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT' R: D4 T9 Y& Q4 i0 w3 v/ w
  11. *         TO CHANGE.
    ) A6 m' {2 K( p/ C5 l4 F. e
  12. *$ Y2 _6 q, A  m) s4 f$ e+ ]" O6 l
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    , Y. s9 M1 g% }& _- e3 ~# m, p  @/ R6 a% C
  14. *
    8 T% x. g/ K, P& N( L
  15. * This program is free software; you can redistribute it and/or
    0 ^# ]% J7 v# b; q& b% `5 Q7 v5 D! e
  16. * modify it under the terms of the GNU General Public License as
    8 F7 H* ]! }# k
  17. * published by the Free Software Foundation version 2.
    * F; @5 }9 Q4 Z* Z: M4 A, A
  18. *
    6 x1 F$ p( s) t+ W1 g
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 ?2 u6 ~3 a5 H
  20. * kind, whether express or implied; without even the implied warranty
    + h1 R) [" ]+ N
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    " p$ c4 @' a' O# w9 H
  22. * GNU General Public License for more details.! z& C8 C+ C; o4 V4 I
  23. */
    ( B2 M# M+ h; g  t
  24. 9 \9 l% b) t, T' y- A% `: H3 |
  25. #include <linux/module.h>
    * E: W% X) r4 T  p
  26. #include <linux/init.h>
    ' L7 {9 ]+ k6 K3 ?
  27. #include <linux/errno.h>
    " v, [  k4 f( S& H2 @" k; w
  28. #include <linux/types.h>
    6 `1 L8 W: A/ G6 S( e7 @& a' m
  29. #include <linux/interrupt.h>* q" M( J  x6 S! G$ T7 P  E
  30. #include <asm/io.h>* x7 x) s0 l; x9 e2 a
  31. #include <linux/moduleparam.h>2 N- ^! o% i# {* Y2 @$ p
  32. #include <linux/sysctl.h>' ~8 ^: \2 k# n* a/ ^
  33. #include <linux/mm.h>
    8 k% b' x, G* i  ~
  34. #include <linux/dma-mapping.h>, M' J6 A$ `5 d( q% j  k0 L* ^

  35. : ~4 s' o) h: |0 x
  36. #include <mach/memory.h>
    0 C" j# l$ A5 S5 A* Y0 O
  37. #include <mach/hardware.h>) A/ S) a4 d: x  S2 c
  38. #include <mach/irqs.h>0 }9 E! ^  b, o, t+ l+ [+ e  n
  39. #include <asm/hardware/edma.h>, R: ]0 {& k# c
  40. 5 _% F3 g1 s7 F; U* Y4 @4 R, x
  41. #undef EDMA3_DEBUG
    4 p# `1 D2 t. i! a
  42. /*#define EDMA3_DEBUG*/
    " R2 s; h) m# f* {3 M( A; E

  43. 8 o4 x- @5 G9 L' A/ N
  44. #ifdef EDMA3_DEBUG2 J. n2 n, {* I5 r
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    $ K# v# L' ^& o* N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ) F; S% A3 S7 Z+ l" z1 }
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)0 a2 B: w& ]. H
  48. #else$ n4 k4 N4 M/ W* n6 c
  49. #define DMA_PRINTK( x... )
    0 Q. u4 `! X3 |# k3 ]
  50. #define DMA_FN_IN% m/ p  r" {7 a
  51. #define DMA_FN_OUT
    1 w, k+ Z" v# G8 f0 H) q+ C+ v4 J( O
  52. #endif2 n! b, H( K4 ?1 n9 [; [

  53. & A' ]- s) W/ z8 ]4 T. W
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)+ t( o% A  ^" _8 U# W# K/ g
  55. #define STATIC_SHIFT                3  a! d& `" s% ?1 @% J& {
  56. #define TCINTEN_SHIFT               20
    8 O1 b0 G" Z7 z) O
  57. #define ITCINTEN_SHIFT              21
    , Q* q9 l2 H) D3 S
  58. #define TCCHEN_SHIFT                226 j) g, x( r7 y+ }. l  ^
  59. #define ITCCHEN_SHIFT               23
    : L/ P5 I- T  `" e6 {1 i7 [
  60. 6 u& I* N% V! y5 P
  61. static volatile int irqraised1 = 0;6 `! }/ R3 S4 }* }
  62. static volatile int irqraised2 = 0;3 u4 p6 j& h: F/ P1 Y0 k& Y% ]9 h
  63. . ^9 R" \; U' B2 _' y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 Q/ Z" Y8 k& [9 ^- ~- ]0 {* y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, W) S" k1 R' c  G: L# m& \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 V$ B3 F! }. H9 t

  67. & q3 ~+ q5 d2 \6 S8 J
  68. dma_addr_t dmaphyssrc1 = 0;
    % x0 n# \, ~5 @; m( E
  69. dma_addr_t dmaphyssrc2 = 0;
    8 w0 @& x+ \! u0 e0 D, ^
  70. dma_addr_t dmaphysdest1 = 0;& j3 L" f/ S! Q$ ~; ?+ T
  71. dma_addr_t dmaphysdest2 = 0;. {2 a8 l5 t% Q3 `
  72. ( H! @4 f6 e" J5 D: l8 F7 m
  73. char *dmabufsrc1 = NULL;. ~1 i; O2 @+ m) d$ j
  74. char *dmabufsrc2 = NULL;
    " k$ |$ O" m3 A1 X1 k; e
  75. char *dmabufdest1 = NULL;2 |. h" e, f/ T2 u4 y7 E3 ~3 `
  76. char *dmabufdest2 = NULL;
    8 Y, n- S. ~# t& k3 c& v# J' R

  77. " q% e+ A% J5 L) N! L; F
  78. static int acnt = 512;
    7 c4 k1 a3 x! I8 J) u1 x% n1 X5 x
  79. static int bcnt = 8;
      Y( l& _4 y  V
  80. static int ccnt = 8;
    1 u5 X. R7 b; e4 R  S$ m" ~# i

  81. 2 Z' W* x/ F: k3 n" Z
  82. module_param(acnt, int, S_IRUGO);
    4 U7 [1 n" N' m5 _
  83. module_param(bcnt, int, S_IRUGO);8 X$ n, L. E. u; _4 G
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ u  `2 N2 h& X" i. F! U

( M2 H* m& [) Q  D$ k( x, K6 J      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用: }# K: y/ X+ }2 r- w* C" H" 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 }# O  b6 m8 g2 F% i7 t- m     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。4 B3 t. \, _3 J9 [3 X9 ?
7 S  y% Q& U* Y' e4 G% e) z
9 y/ F1 s& C( u  N& L" v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 12:07 , Processed in 0.038585 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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