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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 $ p- z# n$ u8 |0 K5 T* k
  1. [code]EDMA sample test application* R8 L: e0 T( j+ b6 ?
  2. /*
    ) J8 k' r, i, T
  3. * edma_test.c
    2 X9 V1 l+ ?. ^( G" P! `
  4. *% {9 R7 K9 x: S6 i& Q
  5. * brief  EDMA3 Test Application
    ( ?% t6 ^( z5 X& y2 e
  6. *
    # p7 @! n" h) O" {' s. n! L1 A8 ?$ p. q% Q* g
  7. *   This file contains EDMA3 Test code.6 J% K) x5 ~0 t; ?% P
  8. *5 f% N: f) V/ g
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE7 Q6 ]! f6 X( T/ E0 N8 b8 t
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT; I) M& c* \4 |: N3 I
  11. *         TO CHANGE.
    + ?$ h( h( d4 a
  12. *
    & P5 z$ R6 j' O0 w0 p& e3 U$ ]6 s& z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! }0 H( K* h$ c; M8 U3 N
  14. *
    9 S0 J: y# D% N
  15. * This program is free software; you can redistribute it and/or
    ! v4 k( C% \* z+ n5 c+ o
  16. * modify it under the terms of the GNU General Public License as
    & H1 y+ D6 s! f2 {: y+ c% t
  17. * published by the Free Software Foundation version 2.9 [8 Y. R/ v/ L" Z0 f5 T: b" F) x
  18. *
    7 I9 Y7 W( ~% p
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
      n/ @8 C& u% b3 I8 _( a2 ?1 k& O
  20. * kind, whether express or implied; without even the implied warranty: y6 B3 g& ~# Y! c0 W: \; W- ^- a* |
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    $ M; G' j+ r1 L
  22. * GNU General Public License for more details.2 L" J- ?2 a! n
  23. */) M0 q1 h" z- `+ n( {( I8 t
  24.   k: ?7 [5 w2 i' ?( P6 l5 E3 G0 [; D
  25. #include <linux/module.h>' h8 @' z1 C/ [5 }) d
  26. #include <linux/init.h>
    , x6 L2 m* B4 g
  27. #include <linux/errno.h>
    , r0 @5 L( i% o
  28. #include <linux/types.h>( F% d5 g+ s8 s9 I# K" w" R9 d5 U: ]
  29. #include <linux/interrupt.h>& x  u8 F% N5 g& ?# |' m8 [' s
  30. #include <asm/io.h>; C: A, N4 s  F/ S/ {
  31. #include <linux/moduleparam.h>* U# t; L" N1 ]7 U- N
  32. #include <linux/sysctl.h>
    ' e! s/ r+ H; n) m9 B4 k
  33. #include <linux/mm.h>% e6 V! V; s1 D' q. [  n5 k! ^
  34. #include <linux/dma-mapping.h>5 B+ H9 f3 j3 z- R" G, ]

  35. 8 _2 b! Z$ H4 g9 N
  36. #include <mach/memory.h>
    0 o7 I* [7 u' m4 F
  37. #include <mach/hardware.h>
    ) B8 A( t0 V  p- T7 u
  38. #include <mach/irqs.h>, K! ?3 F# J8 H2 f
  39. #include <asm/hardware/edma.h>
    - j# K7 \# b; E2 K% q& O
  40. " V1 t7 ~$ C1 d& C: H2 L
  41. #undef EDMA3_DEBUG
    8 R. O+ m- g% ]& O+ U6 v# ]
  42. /*#define EDMA3_DEBUG*/1 f) Y* a1 _9 V; \" c( O7 Q& [3 q

  43.   V  X8 @" B3 ~9 [# K
  44. #ifdef EDMA3_DEBUG/ T1 k" ~+ V, S. {- t! }
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ e8 Y* S) Z  M# z0 ~0 _/ {
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    : [6 M0 @1 W& |5 E6 T9 x2 W5 e
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ; t9 G/ ?  b, j! `
  48. #else
    9 y3 X' M3 `0 s% m6 O# p/ q
  49. #define DMA_PRINTK( x... )
    : U' Y8 g# c8 A* |# Y; w* I
  50. #define DMA_FN_IN/ s& n% ]3 Y9 G
  51. #define DMA_FN_OUT& }( ^4 l" j9 O' j: i
  52. #endif0 |$ r- a" i* Z2 f7 B1 a0 l0 c
  53. + w8 G8 _* @2 y& G& r0 U5 |4 y1 w+ [
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    , D; O! n. y) \' T! L# c
  55. #define STATIC_SHIFT                38 T& u* U- A) e. Q' T# O
  56. #define TCINTEN_SHIFT               20* F9 I2 z0 s. z' s  p
  57. #define ITCINTEN_SHIFT              21- k4 V7 o& |. [
  58. #define TCCHEN_SHIFT                22  I) e5 q+ F7 j
  59. #define ITCCHEN_SHIFT               237 T# }# B: [" c. ?' C0 e

  60. / S$ F( E: m: ~3 T% o$ P' N
  61. static volatile int irqraised1 = 0;( R2 g, Y! f% P0 B6 }
  62. static volatile int irqraised2 = 0;
    4 p4 j4 M. Q$ z' m3 m/ h
  63. : l0 D. P& H& ?- Y. _- ?( s8 p2 A; t
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# x8 }' h8 {  f+ k
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# X& X& ^/ {. j
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  S2 R# D3 N, B6 l

  67. ; w$ n8 Q2 O1 J+ I- s8 Q* {
  68. dma_addr_t dmaphyssrc1 = 0;
    * C: S+ k* ~/ C2 n! G
  69. dma_addr_t dmaphyssrc2 = 0;5 f9 B9 M% j0 v/ ]. d
  70. dma_addr_t dmaphysdest1 = 0;7 i% B$ u! c7 i; h+ s, X# c
  71. dma_addr_t dmaphysdest2 = 0;  A5 l8 ?9 J5 d) s8 S0 A' L

  72. $ v5 s5 x6 U; J# o8 @
  73. char *dmabufsrc1 = NULL;
    & C( x* M& m" H& G
  74. char *dmabufsrc2 = NULL;: t# V, J0 u: M  S1 @& p
  75. char *dmabufdest1 = NULL;
    , c9 b  L7 T1 Z# k+ H+ ]
  76. char *dmabufdest2 = NULL;& |9 z7 I3 t4 z) X9 ]) C" N/ b% F( o( j
  77. 3 K0 A! S2 k* M
  78. static int acnt = 512;
    6 f* `* {( C: k' w6 O
  79. static int bcnt = 8;
    ) w$ ~. e" S% @4 K
  80. static int ccnt = 8;
    1 }7 u$ r( p" t6 |+ k6 i
  81. ! N& }$ ]* _; ^  R! t* A% x
  82. module_param(acnt, int, S_IRUGO);
      _# p) \7 |- V: S- ?
  83. module_param(bcnt, int, S_IRUGO);! b, f  ?2 R  N! W: d
  84. module_param(ccnt, int, S_IRUGO);
复制代码
* J% [6 E5 w4 V1 l2 W5 s

% L  J+ q, U! m/ a2 L      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
$ N2 U" J# H- J3 m/ Jarm-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, i4 W4 F6 i. t9 g; [
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。/ w( b" g4 y3 z6 u8 P/ y, K( D
$ }9 _7 o3 w  V' R6 ]: _: v+ y
  E* k9 \4 N& z. b( m+ `7 v* F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 10:26 , Processed in 0.037821 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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