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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; k2 F. s0 k% G8 o
  1. [code]EDMA sample test application
    5 r! w0 l  Y0 F) h0 y
  2. /*/ c% l4 S+ }  Z, ?) T- R
  3. * edma_test.c
    5 Y" v# d: u" j$ y$ L6 |6 b. E
  4. *+ J7 ]0 i( i8 S1 j2 m( G; b1 V
  5. * brief  EDMA3 Test Application
    6 i7 `. g+ A' A; w6 e1 R7 k
  6. *
    $ [& `+ M" }+ C  W' [6 ]' [( C
  7. *   This file contains EDMA3 Test code.
    ' |& l4 f  s3 c* j1 E) G! p* ]
  8. *
    : T3 ]4 F5 g& N
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' \+ d. Z0 X, ~4 |! I
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 X; Q2 G/ k& V
  11. *         TO CHANGE.* V/ w! n9 f) o$ V+ w! ?2 Y8 w+ m
  12. *, b5 ^2 S8 u. E* ?9 `2 ?
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ' p% V$ |- Y# L# `8 b; R/ J: |# C
  14. *! Q& w% k" Q# n
  15. * This program is free software; you can redistribute it and/or0 L* p2 ?% m, a# v, x" i
  16. * modify it under the terms of the GNU General Public License as( ^% G1 M; O( I3 E  W8 e9 g: u
  17. * published by the Free Software Foundation version 2.. i* L7 d8 v2 G7 B7 ^: w) p
  18. *
    $ p* ]+ j9 K& X& P: v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ! M4 w* u! A0 Y( Z/ f
  20. * kind, whether express or implied; without even the implied warranty
    * z6 ^8 V: [% _+ v. ]& J' f
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    , ]* q& C) z% Z! m. u
  22. * GNU General Public License for more details.- O/ v9 Z, Y& k+ W' w: Q
  23. */$ ^8 @  D9 v9 V  U) e0 f' Z4 i

  24. - C% L$ ]2 o9 m9 m9 M, j) V/ {7 B
  25. #include <linux/module.h>
    7 M7 x& v5 S" o& T8 O: V0 ]
  26. #include <linux/init.h>
    4 t- ]5 g8 `& D' p+ H1 ~
  27. #include <linux/errno.h>
    - K* _' U+ @; X3 p
  28. #include <linux/types.h>. v" Y# X! v1 \( v
  29. #include <linux/interrupt.h>
    1 K* t4 n' o7 O/ J4 v7 k
  30. #include <asm/io.h>
    8 L( L3 f; @' t
  31. #include <linux/moduleparam.h>% V' m$ ?: l& X! A& C/ x
  32. #include <linux/sysctl.h>; f$ W$ m) g$ H( b
  33. #include <linux/mm.h>
    ( Y: i* P0 c8 g/ Z
  34. #include <linux/dma-mapping.h>/ C$ h$ w5 Y5 B3 w2 u$ M

  35. 7 j# d# O% s# H7 q0 q
  36. #include <mach/memory.h>
    ; O4 C3 u( g" Q1 C; ]  I- `
  37. #include <mach/hardware.h>2 u7 e1 {% M" Q% G+ T% G
  38. #include <mach/irqs.h>
    & M/ u5 T6 P+ g0 S3 s4 W' c) t  M
  39. #include <asm/hardware/edma.h>! o% \  P8 f' r3 g" i* B

  40. ( e. N! T0 q  c
  41. #undef EDMA3_DEBUG
    ( u1 `* |4 @) Z" ~  h. E
  42. /*#define EDMA3_DEBUG*/; K7 _# a1 x& z4 {& Y5 u3 H

  43. - N* |+ t) o1 K3 C' f, f" [+ R
  44. #ifdef EDMA3_DEBUG# r! T$ {: q6 e: }6 N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)$ U* Y8 ^8 v5 Y* i1 u0 B% ?: ?* n0 f
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)8 g9 b& ^9 S0 P5 R
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): R( ?; ?& ]7 J
  48. #else
    6 w' @6 _0 g, C* n# o
  49. #define DMA_PRINTK( x... )3 }! u) [3 ?3 d: r) z! P9 W7 @
  50. #define DMA_FN_IN
      S/ j9 l+ g" \
  51. #define DMA_FN_OUT! ^  {7 [7 w) u) j) q) S
  52. #endif
    4 B7 X- f: a8 |) r9 r
  53. " O9 }% {; ?/ ~6 }/ V' F8 @8 o
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ! m4 E/ V: t0 F& t0 i0 c
  55. #define STATIC_SHIFT                3
    : P1 u$ ~  V( H5 U" R1 U
  56. #define TCINTEN_SHIFT               20
    3 J" J9 b2 |. ?9 ~* `
  57. #define ITCINTEN_SHIFT              21
    & O' P4 I; z9 k4 S) H6 t
  58. #define TCCHEN_SHIFT                22$ T( k, a# f( p4 w3 T/ b* Y$ s
  59. #define ITCCHEN_SHIFT               23
    1 S0 h  {. |( v
  60. , S* a3 C- M' D8 }
  61. static volatile int irqraised1 = 0;" f- J3 ?& N! q* S% x7 G
  62. static volatile int irqraised2 = 0;& G3 s3 D( Y, K# |3 N5 w
  63. 4 {) `' l" I' x; X8 j9 h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) N& y- c" H8 P* ~* z1 @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);' S2 y2 \/ W) i: Q4 l
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 T$ W  J, v) {0 P8 s

  67. ; q& S" q9 e3 j! ^5 u8 R/ P9 e) H
  68. dma_addr_t dmaphyssrc1 = 0;
    6 Y# m. o, g' p* }7 h( w' ]4 i% o/ s
  69. dma_addr_t dmaphyssrc2 = 0;0 [$ @& a# |/ N) c0 O& J3 o
  70. dma_addr_t dmaphysdest1 = 0;
    : B& F1 F- O/ R! a) n/ s% W' }
  71. dma_addr_t dmaphysdest2 = 0;7 B. ~" n% m2 g7 N# G  v+ V; @

  72. # z3 Z* U! t' Z; \
  73. char *dmabufsrc1 = NULL;0 G8 C" Z# ]8 ]7 L2 C- i
  74. char *dmabufsrc2 = NULL;4 b3 w; l/ w- ~" i
  75. char *dmabufdest1 = NULL;
    7 b4 [' e: R8 H
  76. char *dmabufdest2 = NULL;  I& k8 d2 d, S" i  j

  77. 2 x6 ^# _* y- z1 e# A
  78. static int acnt = 512;
    % T2 r& s6 |2 b# G$ X
  79. static int bcnt = 8;+ y  K& j0 t; u1 F5 ~8 ]
  80. static int ccnt = 8;
    ) M8 D# u4 E7 f5 i& `$ |
  81. : v1 E& |3 E% Q  f( |2 e3 E
  82. module_param(acnt, int, S_IRUGO);
    0 H4 ?, q  t$ [+ W5 k+ W
  83. module_param(bcnt, int, S_IRUGO);
    " J* T9 q' g  a
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- k( n/ I9 k3 _5 A: T
- w; F( u1 r' R1 ]% _7 U      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用  i0 i; F+ n' z. Q( E' w
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。- J0 B/ Y9 K) S4 U9 `+ A  F4 }; a
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% F" M# ]% F5 V- @) Z  s# I% j- f- }+ F- y% t' {

/ Q, i/ c! _2 Q" d! B. d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-27 12:15 , Processed in 0.039427 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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