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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 * K) J6 c5 ?5 |7 A7 j4 r9 R1 f
  1. [code]EDMA sample test application
    8 Q9 G+ Q  [0 X4 b
  2. /*
    ( B/ T# h1 ?% t+ n& z
  3. * edma_test.c
    % C5 `2 ]0 W1 E% j5 M% q0 U* W
  4. *; Y* k! x! E/ P$ h: G
  5. * brief  EDMA3 Test Application, d  R7 D4 q; X! O9 o  i
  6. *) A9 z; X' L: V
  7. *   This file contains EDMA3 Test code.
    & b8 b: T' O$ X% B( u
  8. *
    ( _) ?, p( ?4 H
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE. j3 m4 x: c4 M3 z6 U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT8 ?, t/ g( V1 J
  11. *         TO CHANGE.8 O% H+ X* v) d
  12. *6 R+ V" R1 v+ n. T
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) t( |) X; f/ y# E/ I
  14. ** Y. {# y" ~0 ]& f6 {' b
  15. * This program is free software; you can redistribute it and/or+ G; o3 S1 g# {5 V# d  N; k
  16. * modify it under the terms of the GNU General Public License as) O- _% L" o" F  P( o: p
  17. * published by the Free Software Foundation version 2.9 V- o& H- R" k  b8 j: [
  18. *
    6 f1 D( y, {) a6 l. b, f
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * W, \% H2 n% X4 E$ n5 T6 Q
  20. * kind, whether express or implied; without even the implied warranty
    " D* Y0 J* R$ D) V# L
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * u' n. S" T3 }3 p" k: _' W
  22. * GNU General Public License for more details.
    3 K$ R' B+ j  [# K5 E" u: ?4 h
  23. */2 [+ f/ Q- \- h- Q) S) a

  24. $ Z2 {1 Q) X" P9 h
  25. #include <linux/module.h>. p7 Z' u. X# C2 R0 \) T
  26. #include <linux/init.h>
    : _! h$ f" d8 B$ |! A
  27. #include <linux/errno.h>- n( z! T. e4 S8 M- }& Y: w
  28. #include <linux/types.h>
    8 B  m& P) f% i) _# G7 @  A( A2 Z0 c
  29. #include <linux/interrupt.h>
    # p4 `! d( p" i3 t: C0 p
  30. #include <asm/io.h>
    ) u% k$ l/ n  \; C. g
  31. #include <linux/moduleparam.h>0 G5 b" Q9 e  J2 N! k3 g
  32. #include <linux/sysctl.h>
    + p& ?+ W7 r, x  M+ I' ^0 s
  33. #include <linux/mm.h>9 i6 T: Z- J; z) M; R
  34. #include <linux/dma-mapping.h>+ y& h6 _; u7 X0 Z1 K/ c" F

  35. : _8 W! I2 c8 c9 Y0 p
  36. #include <mach/memory.h>
    4 s8 j6 @: ?; o& u  w! l7 P
  37. #include <mach/hardware.h>
    " {5 `2 W; r0 T7 H) E; N
  38. #include <mach/irqs.h>
    : t. E/ a/ ~$ [0 L! Y
  39. #include <asm/hardware/edma.h>
    , W8 Y% E9 [( u3 B6 B8 b) {

  40. 2 p3 I, Y% [+ ~+ f+ z- y! s2 d( m
  41. #undef EDMA3_DEBUG
    ' S+ Y9 k! ~, G1 S8 u6 _
  42. /*#define EDMA3_DEBUG*/
    , a2 L: o) d$ h8 T4 S' e( }  [

  43. 6 M9 ^6 `: Q% i9 @+ a$ }3 t) G. I/ z
  44. #ifdef EDMA3_DEBUG
    : X$ Q. y; o. \6 s3 z1 _7 A) E% u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)/ {; F& S, a) A# f* X$ L' I: s5 c
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    # d/ a4 I' e  `( P2 j- i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& [( o! ^) x4 k; Y
  48. #else5 U: h( a/ d( {; d& g
  49. #define DMA_PRINTK( x... ): A6 Q7 h5 q9 m4 Z, a8 R
  50. #define DMA_FN_IN: N& d* Q( u7 J6 t6 a& ^
  51. #define DMA_FN_OUT( I8 c# T6 V2 S2 l
  52. #endif
    ! R3 c* e2 J: e; w, G& f% K

  53. , B- X! N$ R) O2 {
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    & l% p+ D# H5 j8 K0 h; b1 f9 z/ ^! _
  55. #define STATIC_SHIFT                3
    / z  @' \; f, [' Q
  56. #define TCINTEN_SHIFT               20: A% V/ R/ D) \
  57. #define ITCINTEN_SHIFT              21' d: A8 U" K9 H( `* L
  58. #define TCCHEN_SHIFT                22; W% h3 q  @4 K6 t) ?/ j/ b$ v; v
  59. #define ITCCHEN_SHIFT               23
    * ?# y- o; a( i1 t3 x* h
  60. " m0 J' ~3 n" S# f$ F; W% w
  61. static volatile int irqraised1 = 0;) ~$ \3 W; c+ Y( ]( T% T0 x
  62. static volatile int irqraised2 = 0;; T. D+ ~% \' K8 p& F

  63. ' J- z3 ]5 k1 a# M. V* r  X: y$ P. ?5 w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 o' P3 T. e! _  F# _
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( p3 h) k! l, C  z( F, X) x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 F/ D/ ~9 ~2 p

  67. ( P  {9 V$ k& Y* \4 D- e6 [; w: D
  68. dma_addr_t dmaphyssrc1 = 0;6 h! f2 e: I2 r
  69. dma_addr_t dmaphyssrc2 = 0;
    5 o5 H0 v3 q# Z4 W* r0 Z7 r5 z
  70. dma_addr_t dmaphysdest1 = 0;
    + i9 S) ~1 f8 ^1 z0 z& ]
  71. dma_addr_t dmaphysdest2 = 0;
    1 c8 s# l3 y& P" V5 |( {! g
  72. % Z5 N* ^$ U% R  i2 X" ]/ e- e
  73. char *dmabufsrc1 = NULL;9 `9 S2 T8 H# v: Z$ W, V; F% D9 T
  74. char *dmabufsrc2 = NULL;
    7 r" o# m, Q5 K; n* C2 z
  75. char *dmabufdest1 = NULL;4 g9 L% X7 }) k- ~; y1 ^
  76. char *dmabufdest2 = NULL;- j% }% G/ Q6 t9 n& `9 Y
  77. 7 ^7 i, Z1 S3 Q4 E" F0 v  t
  78. static int acnt = 512;
    ( b* y: }4 _% ^1 d
  79. static int bcnt = 8;" y* }0 a" p( |# Q4 H; O6 F6 Y$ d
  80. static int ccnt = 8;
      h2 f) F) O, T/ q2 E- K4 m( {
  81. 1 j7 S: \5 h" k" x
  82. module_param(acnt, int, S_IRUGO);# X3 s' H: V* Y4 k* r( u9 N* A+ m
  83. module_param(bcnt, int, S_IRUGO);
    # z) d4 i/ k% I6 _& `
  84. module_param(ccnt, int, S_IRUGO);
复制代码

5 x. h, k: |4 f& X* Q* [( a. c7 F5 S: I/ U+ f6 p3 b$ g: p
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用+ U3 p- x$ Z4 u% W% W  F; u
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 l, ~2 M8 e, k' Y. {1 |% N( e+ l     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
0 e4 `! a' ~9 D$ O, j1 b- ^6 J' W# v3 A( i6 Q$ [
) P1 ]5 J  e6 W5 l  I0 @- M
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-5-24 23:34 , Processed in 0.043317 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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