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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 Y9 H8 ^4 e& F2 Y5 ^
  1. [code]EDMA sample test application7 R5 ?% ^* A) }3 R* ^% c
  2. /*/ Y% A; P/ T* V' d2 {
  3. * edma_test.c4 E0 |# p3 J* ?9 [) H
  4. *
    . q  `( T5 A. D% E1 W
  5. * brief  EDMA3 Test Application4 d4 C3 _7 S! @; t6 |  _, V
  6. *
    * N/ n% J* \' J# v% ]
  7. *   This file contains EDMA3 Test code.
    : K8 q! q1 d8 O* L* k# ~
  8. *
    2 }- H* W9 j8 f5 l
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 L6 t) `, @3 J, A. }) G
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) E* s3 [' V0 C! d/ t
  11. *         TO CHANGE.
    ( i5 O; ~% K% X- H9 t! S+ y
  12. *- Q7 @* i% B6 T
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    # E5 R/ {' [- `5 L) o
  14. *) H; M  A3 c5 P% l% O7 h
  15. * This program is free software; you can redistribute it and/or9 D0 t$ K$ q; a9 ^4 a
  16. * modify it under the terms of the GNU General Public License as
    7 r3 n( e. i" _
  17. * published by the Free Software Foundation version 2.! ^$ v7 N% F: a  d. Z( X# E# w
  18. *7 |- g5 [# k, F( r7 R3 A
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
      W- c# z7 p6 F% I, a0 B4 y
  20. * kind, whether express or implied; without even the implied warranty6 S. s% U( f8 ]- J1 d, F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the. z+ z! A/ J6 U3 _2 n4 y! m0 l( ]) z3 f
  22. * GNU General Public License for more details.% G, ]0 _! d& I6 c
  23. */+ P$ {" Z% d: G2 t

  24. 3 k6 P2 e3 `, I" E6 w- Y
  25. #include <linux/module.h>1 C2 p5 d, u, b. {8 K
  26. #include <linux/init.h>
    . p$ F" V( ], e( l5 p
  27. #include <linux/errno.h>
    2 x* k6 }6 k+ h0 O  i
  28. #include <linux/types.h>
    - P7 W) d3 B, R' Q+ _
  29. #include <linux/interrupt.h>/ t, m# j; }% ^6 d  E; y7 w
  30. #include <asm/io.h># z2 M1 d& S2 p/ \: F2 \8 n
  31. #include <linux/moduleparam.h>
    / p; n* B; h; S8 Q
  32. #include <linux/sysctl.h>
    7 p, H# R6 Z" G6 ~
  33. #include <linux/mm.h>) O7 d5 A! P. ^+ n( X
  34. #include <linux/dma-mapping.h>$ i7 n7 m% T9 _" J
  35. 8 ^/ ^) \+ R7 C9 U) ]  U! H8 h" c
  36. #include <mach/memory.h>
    6 V, ^! @+ B3 p1 u) r" x+ T
  37. #include <mach/hardware.h>3 ^+ r4 g9 Q& b, }# i2 _0 i  i
  38. #include <mach/irqs.h>
    ; o9 x: Z4 g2 Y! w" }
  39. #include <asm/hardware/edma.h>  i1 z0 [0 \: |6 c' h
  40. - i6 F  a  b5 y8 B1 a
  41. #undef EDMA3_DEBUG+ }2 A; c& p/ O: ?# c
  42. /*#define EDMA3_DEBUG*/
    ! p" [  D2 Q/ o5 `1 d
  43. ( R! ]8 l! m1 a' J
  44. #ifdef EDMA3_DEBUG2 [" |/ m% e+ k; [8 J5 K$ o5 b8 o; Y
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! [) g1 Z# J- E$ Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    : k$ k) D9 k% K% [7 e2 Y2 S( B7 l
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)* h, a4 e( A6 j! o
  48. #else" [2 o1 n" Z) N# `0 i0 @& J
  49. #define DMA_PRINTK( x... )
    9 Q/ R! }, k8 o, L
  50. #define DMA_FN_IN) {2 s6 N& W4 J6 U* M1 g$ R
  51. #define DMA_FN_OUT
    6 b/ V: B) ]; ]' H9 ?
  52. #endif
    4 b: T6 F- b4 T0 `

  53. 8 k' ^; O' X, r" @$ q9 l
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; _  y$ [9 M" y/ [6 m( [
  55. #define STATIC_SHIFT                3
    ! v( k, B7 f% B. F, v
  56. #define TCINTEN_SHIFT               209 |3 g1 `0 W% r9 J
  57. #define ITCINTEN_SHIFT              21
    5 l; w# o! n3 C% x- }
  58. #define TCCHEN_SHIFT                22
    5 m' R; m# r) F9 f8 E( M6 M
  59. #define ITCCHEN_SHIFT               23, Y# S; n# Y% t$ V: \
  60. 7 g& _0 R! O7 U4 O# L: M
  61. static volatile int irqraised1 = 0;
    ! p: Q3 G9 P* q% d
  62. static volatile int irqraised2 = 0;8 ^: s: p" N. O" E0 G

  63. 2 o4 d' I, [2 B0 K! z! _
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' W( ?& L" T+ D$ f# N
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& _" V; \0 H+ Z) ]8 H4 g/ g* c
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 e* O+ e/ h  M( j" ~) h4 Z4 r2 j9 h
  67. ; C# u3 F- ?* O: i# w: ?! A: C) D1 A  [
  68. dma_addr_t dmaphyssrc1 = 0;4 x; l' q& V3 x* f( l& ]" `
  69. dma_addr_t dmaphyssrc2 = 0;. o8 M6 h4 }1 H) N
  70. dma_addr_t dmaphysdest1 = 0;
    3 ?  R8 u9 |0 w* `6 E+ Q
  71. dma_addr_t dmaphysdest2 = 0;' b" d. b$ i1 k  o3 \

  72. ; `2 y7 p, H0 E- T4 u8 w, v' [4 V
  73. char *dmabufsrc1 = NULL;( J7 i6 Z5 H. C3 [5 S& ^$ a
  74. char *dmabufsrc2 = NULL;+ }( p! [+ d5 T1 x7 {) M. p  w  F
  75. char *dmabufdest1 = NULL;
    : x0 w& j* G; ]; I- p
  76. char *dmabufdest2 = NULL;
    7 r2 G5 u* @8 P2 F; I
  77. : J" D; c' Z1 u( ~
  78. static int acnt = 512;
    " I7 n4 n# \: \1 k- V
  79. static int bcnt = 8;. {) H% B' m# a1 ]% O
  80. static int ccnt = 8;4 C  Q3 h/ U9 w+ I1 ^. k4 R# H( i5 k
  81. # X4 o0 E9 @- o- U* R2 i
  82. module_param(acnt, int, S_IRUGO);* d! z9 s" d  U. j% L  B1 r
  83. module_param(bcnt, int, S_IRUGO);* ^" t; ^0 E, m" S- D
  84. module_param(ccnt, int, S_IRUGO);
复制代码

' o2 N+ D& \: ~3 |6 U0 f+ H  C) W/ n7 K2 ~  u5 J
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
- ^# d( w/ Z5 h/ A! k1 R: D% U  b) T% |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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。. v" D3 O# `4 @9 [* _, ~
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。( [$ h" _- K" R! k  i
0 O: s3 J  }8 M) U6 O% ]& m/ j& f

( G$ N( J* R! W3 s! H9 a" P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-29 18:44 , Processed in 0.039044 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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