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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
6 ~. k# ?7 E- B0 {0 [# P
  1. [code]EDMA sample test application2 n/ X- m3 `( }
  2. /*
    . V5 d  b# n7 W: B) X4 W, a6 c
  3. * edma_test.c
    # o/ b+ {9 U1 j, [+ O
  4. *
    + f2 o; `! U9 m5 y2 F* [5 l
  5. * brief  EDMA3 Test Application
    - Z9 _9 V6 L8 f+ A# }, d
  6. *: Q* m1 x/ }; H7 A$ X3 Q6 W; b4 x
  7. *   This file contains EDMA3 Test code.
    ( T5 n8 B1 \. q7 l5 f% I
  8. *
      T5 b5 H3 G; C
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    & k, e! i+ I) f) }
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    , C. Q% y  r6 r/ t! v
  11. *         TO CHANGE.
    % R# M/ @5 b# H/ f
  12. *
    8 G- k5 n5 O% \, X
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/9 G4 Z+ y# _) Q; V7 p2 k
  14. *
    8 E$ V, w$ [+ ^. ~/ V" F' R( ^( F
  15. * This program is free software; you can redistribute it and/or
    ' c. i2 s- S. \& M9 t" u5 y
  16. * modify it under the terms of the GNU General Public License as+ j+ m3 m4 R/ k0 ^8 ^
  17. * published by the Free Software Foundation version 2.- k. I( V6 z, _
  18. *- |+ j3 c1 Z. c- b8 u0 ^
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any" y6 u; v! b( W3 y3 ^
  20. * kind, whether express or implied; without even the implied warranty; Q% T; P* i! r2 a: [
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ; d+ O& x8 f; U9 p8 W' n/ ^7 o
  22. * GNU General Public License for more details.
    4 @8 h) |# u9 N1 Q
  23. */
    ) S2 X. m& g) s6 f

  24. / F3 X2 k& @) h7 }
  25. #include <linux/module.h>5 Y7 i  V) ]% y2 i* {2 o& N
  26. #include <linux/init.h>1 H0 h5 V! Y* N7 t( T" U
  27. #include <linux/errno.h>
    2 C8 a0 h. f& M5 f' C" P
  28. #include <linux/types.h>
    ! ~+ o4 K/ D6 x# T3 X: {
  29. #include <linux/interrupt.h>6 \8 z7 J+ K3 t8 B5 {& Q
  30. #include <asm/io.h>
    * a6 ?2 r( ?4 i/ b  Z
  31. #include <linux/moduleparam.h>
    + ^. C' a) e' Y2 n1 e
  32. #include <linux/sysctl.h>
    ( c* R8 F+ A& g& T# i5 L
  33. #include <linux/mm.h>
    * K' ^3 A1 i, K7 \
  34. #include <linux/dma-mapping.h>+ q# i0 ~0 B0 u! m+ H3 b
  35. 2 ^7 e! t2 T( A/ U; P6 r: e/ f& }* V3 t
  36. #include <mach/memory.h>
    7 x+ k7 L  d* O* G
  37. #include <mach/hardware.h>4 Z* Z+ D1 u" x  e, |
  38. #include <mach/irqs.h>
    4 }! \6 l/ q+ N( b( `  o" Y" D1 h
  39. #include <asm/hardware/edma.h>
    - X# \( o+ c0 e) @  {
  40. " j9 L- f" r# Q2 ?
  41. #undef EDMA3_DEBUG/ T' h: o7 }* M
  42. /*#define EDMA3_DEBUG*/2 G" x4 u; I( z6 }  |
  43. ( I. l# ~8 S' t9 m
  44. #ifdef EDMA3_DEBUG
    8 J0 Y# ?* g8 O, |
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    , u' A& O7 F5 H& {( z! g8 b. Y8 R$ |
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    5 N2 l/ t% L' Y+ D2 c& K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)* u  @7 [, c$ Q
  48. #else. W/ z% A' Q+ W! Z  C5 P' [7 g
  49. #define DMA_PRINTK( x... ), Y7 c1 d$ Z$ |
  50. #define DMA_FN_IN
    / {4 N  Y& Z, i0 Z. o" _$ O
  51. #define DMA_FN_OUT
    6 C% U4 V9 C& U$ q- R5 L2 y
  52. #endif1 N4 V; F7 m  C" r. s( e

  53. ( |& ~+ d7 F- F8 Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 |: h9 V( @8 f- I) M- @# w
  55. #define STATIC_SHIFT                3
    ' R( V8 N2 u% ?0 i3 g. k' d
  56. #define TCINTEN_SHIFT               20
    + ]) ?. x$ x, R6 X" F% L
  57. #define ITCINTEN_SHIFT              21
    8 u; H* ]7 g6 ?/ z/ c$ [  Y  m, m
  58. #define TCCHEN_SHIFT                22% X- E0 ^( M! R9 E% B
  59. #define ITCCHEN_SHIFT               23
    " w5 R; P6 c& @! b) Z

  60. 0 c$ s9 g3 n: a$ X5 T
  61. static volatile int irqraised1 = 0;
    % s$ x6 B: W/ {6 ^7 Z
  62. static volatile int irqraised2 = 0;2 W: g% u$ D7 ~% d. Q! ^0 d4 n/ R  N0 h
  63.   u) V: X4 c# X2 I! S8 n
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! N: D/ @, t! X. [
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# ?* d0 L) \/ N3 v4 g) s+ H5 p, L% W
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' d. l/ G, a4 Y2 H1 d( x3 _( G; d

  67. + R9 o" e& Y, s, _. k
  68. dma_addr_t dmaphyssrc1 = 0;
    3 _. s& C+ }7 I
  69. dma_addr_t dmaphyssrc2 = 0;
    ! i4 d8 p0 ?4 [  k8 |
  70. dma_addr_t dmaphysdest1 = 0;0 Z; i: V0 t4 r
  71. dma_addr_t dmaphysdest2 = 0;7 J# [0 ?4 o( g- ^7 e& v2 y
  72. ( m1 [& U5 E- r2 z, f
  73. char *dmabufsrc1 = NULL;2 \5 J2 f3 E5 L9 |! a
  74. char *dmabufsrc2 = NULL;  a( E0 A3 {/ H( R
  75. char *dmabufdest1 = NULL;
    6 q( |% K0 r$ q* G, _$ m& e
  76. char *dmabufdest2 = NULL;( W) B, E7 m. K; }8 C) b

  77.   ]1 M% C- a8 x7 e) n9 I; f( c
  78. static int acnt = 512;
    8 D/ K- W4 G& ?1 o
  79. static int bcnt = 8;$ u( i6 N( U" u/ H3 E
  80. static int ccnt = 8;8 A: d3 f9 P( k9 W
  81. 7 S' S) H) V& e+ Z5 Y: j
  82. module_param(acnt, int, S_IRUGO);) d( n$ e7 {" `4 @: q
  83. module_param(bcnt, int, S_IRUGO);0 L6 z8 W- r0 v; m' y+ H6 G
  84. module_param(ccnt, int, S_IRUGO);
复制代码
# E: b0 \8 @1 P% D& r7 D$ A

) J. `7 `3 W3 b      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 z# E7 d6 T+ ]2 w; M4 E/ [
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
0 E0 x0 d4 R; i  k7 p# Y' H     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。$ K4 J6 X! x) h1 w. j5 ?; m3 o
4 q3 l6 j+ v/ q6 G

. G6 R0 u8 k4 o' t1 s0 ?, ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 21:21 , Processed in 0.058156 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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