OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 0 o9 K4 m# \, B4 p) c" Q. f5 ~
  1. [code]EDMA sample test application
    + G( A) f3 m8 Q" w8 P
  2. /*% W) J7 T; F2 C1 ^7 H
  3. * edma_test.c
    0 H. y3 l  _" \- K( R, N5 k& [6 g
  4. *& f" H8 C7 u( o
  5. * brief  EDMA3 Test Application
    ; }' G) Z$ L( t9 J$ D
  6. *  x0 S' X5 P% t1 m4 d
  7. *   This file contains EDMA3 Test code.1 G  z, Q/ s3 ?, m0 K7 f4 ^6 L: I
  8. *
    ) K1 U2 M9 I4 N  k- o
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( \$ }3 V' @* e
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT* H& z. t1 f7 N2 P  Q) ?
  11. *         TO CHANGE.
    + ?. D/ d  j! q5 Z
  12. *
    , L3 C2 v) e" ~# K3 Q# @+ D
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/* Q: q% d" L  z* [
  14. *
    0 \5 I% r6 d3 s0 Q2 Q) j9 d
  15. * This program is free software; you can redistribute it and/or. t& u# `* O% J7 [% a6 @" k0 E
  16. * modify it under the terms of the GNU General Public License as7 J9 |0 R, W3 G3 X# M% w7 ^
  17. * published by the Free Software Foundation version 2.7 Y1 f% }) w2 ]: B  Q
  18. *
    ' U8 o8 _7 ^  i: B1 A5 v" r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    , z3 L( R6 {( Y# v& M
  20. * kind, whether express or implied; without even the implied warranty
    % B; c- ~% v3 v/ P
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the( Z$ X$ E2 F. Q; ]5 t: P
  22. * GNU General Public License for more details.
    6 R) \1 Z1 @, d6 v0 @4 P
  23. */# t* q' B' w$ i7 w

  24. : z* U! Z4 j5 T9 Z
  25. #include <linux/module.h>5 Y" f+ E8 q: b/ H* \
  26. #include <linux/init.h>
    9 I, Z, B' y. z# C, n# R" C
  27. #include <linux/errno.h>5 K2 v& s9 n& o$ D: s
  28. #include <linux/types.h>$ }. u2 |, w9 u* e
  29. #include <linux/interrupt.h>: a4 G" S& Q7 N! t# m
  30. #include <asm/io.h>
    4 a" s, y; \/ {9 F
  31. #include <linux/moduleparam.h>
    / Y: ^& o* L) \/ A! f! b
  32. #include <linux/sysctl.h>
    . T8 D0 L; y  i) s) K
  33. #include <linux/mm.h>$ B6 ^! K6 ^* q7 S8 r
  34. #include <linux/dma-mapping.h>
    ; m7 T: V( u8 {

  35. " q! l& Y( g- N. y! \' o" ^
  36. #include <mach/memory.h>$ L" b- E1 n! M. z
  37. #include <mach/hardware.h>
    7 P2 R! r8 |1 B( o" c" S$ ^, Z
  38. #include <mach/irqs.h>
    * t. O! d- d% q2 |  }
  39. #include <asm/hardware/edma.h>
    $ R4 D) |# j3 G* J8 ]* n

  40. : u- c; v1 L) q, i/ }
  41. #undef EDMA3_DEBUG6 K( l0 W+ w. ^* t
  42. /*#define EDMA3_DEBUG*/
    2 H) ]) ^3 o6 s2 O. |' g
  43. " ]# @3 \3 X$ d. Q* q
  44. #ifdef EDMA3_DEBUG! `0 {; @" Y) d
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    2 a2 R1 h8 d. t& Q7 p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    4 e3 @: N8 @$ V5 V% Y! l/ c
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    8 ?) |6 b$ H2 ~. _4 w2 E
  48. #else
    0 Z/ Z0 i4 l) }; @0 X9 D
  49. #define DMA_PRINTK( x... ). J1 h0 `( q- J6 M: ?+ r+ H2 s4 Q
  50. #define DMA_FN_IN) S2 j, F# p' z" H6 Z' i/ ^
  51. #define DMA_FN_OUT  R* Z4 v- h! A/ a4 S, @; [+ j
  52. #endif) b7 [$ ]: Z! Z) N1 s; w" t# Z2 T

  53. 9 \$ L: c+ \2 }6 ~% f* L
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
      ], R, S! Z- q: S6 H
  55. #define STATIC_SHIFT                3) j% f. u6 i1 O& |- c/ r! R4 t
  56. #define TCINTEN_SHIFT               20; w  |+ y/ C8 G
  57. #define ITCINTEN_SHIFT              21/ y% W% M0 c2 J! _- F
  58. #define TCCHEN_SHIFT                22
      m3 z) H5 r' _! ~! h5 ~# h
  59. #define ITCCHEN_SHIFT               23
    1 t4 H5 R/ f* X3 \7 }

  60. ' K# n3 s5 j' e6 Y
  61. static volatile int irqraised1 = 0;. t9 T& b( j' w) }) V
  62. static volatile int irqraised2 = 0;2 h" c% y( g3 t7 c

  63. ! g" ~# r; Z3 u+ k% ^
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' R! T. A3 Z. [4 ]8 u
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " X0 s" \% R5 B+ }
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 C5 ?7 d! u$ c8 Y

  67. + W: ~  X0 T2 z2 q. i+ E
  68. dma_addr_t dmaphyssrc1 = 0;
    + K' U: D5 M0 o% \
  69. dma_addr_t dmaphyssrc2 = 0;
    " e$ \* d$ ^4 Z# F7 {
  70. dma_addr_t dmaphysdest1 = 0;
    * }# P( k1 I* w/ z1 r( ~5 ?
  71. dma_addr_t dmaphysdest2 = 0;; s" d$ |% A' a/ X" I& W9 ]3 [" v  _9 u
  72. 4 H& O2 u0 @* O7 y+ x! f3 a+ k1 d
  73. char *dmabufsrc1 = NULL;- P# z+ `3 K( _$ k! z
  74. char *dmabufsrc2 = NULL;7 V6 D1 I3 m' \/ m( |  z" n' [
  75. char *dmabufdest1 = NULL;9 ?$ A, J0 C! T) X+ s  |" B5 e
  76. char *dmabufdest2 = NULL;" z0 T/ \$ s% V- S2 ]
  77. 1 z. d" E/ F! y2 j  V
  78. static int acnt = 512;
    + Z$ f$ _' z% K# c: o
  79. static int bcnt = 8;
    # `" C- x( ]: @( ~9 v
  80. static int ccnt = 8;
    ' S6 g( E5 k1 S4 q6 y# ]5 c
  81. ! Q% C1 }" z* b; B
  82. module_param(acnt, int, S_IRUGO);& F8 J& _5 j/ ?
  83. module_param(bcnt, int, S_IRUGO);+ r# u3 Q" Y; q, b" j7 n5 K
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 y# b% Z) _4 N  f% m
' t7 q, `' ^4 e; y5 s
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用# R: V6 }! Z" Z; 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) _& \3 R$ n. M     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。: m, O3 o/ Y$ N2 i" \( R

+ c7 l9 e# h; n8 X$ B% ?1 e$ }. Y
8 ~! ^3 n& u5 D# @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-11-1 10:19 , Processed in 0.039397 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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