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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
, ]4 ?' Z1 O: c, h0 X
  1. [code]EDMA sample test application
    # ]" \' ?7 i1 X9 I; F' q& F# p
  2. /*. v& [# f1 D2 S: F3 \
  3. * edma_test.c0 `, X$ e  e/ Z* N- j% G
  4. *
    3 s9 l$ k# X2 B# ]
  5. * brief  EDMA3 Test Application
      @) `" e/ C5 U# ?9 j+ ~, ]
  6. *  o3 l8 _& W' s- L& ]
  7. *   This file contains EDMA3 Test code.' \) v! M7 Q* ?/ Z& @
  8. *
    $ x6 a( W4 U( G+ b  A% l
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE( S/ c4 E+ s( y7 q. M3 y8 i8 o
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ! i: @. O* ]1 i3 v( S/ P7 F: M
  11. *         TO CHANGE.1 ^6 \( p$ e* e3 q& `2 Y
  12. *& A* u; G( L- n3 _, f
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/, a% e" Q6 ^: V) O' i
  14. *
    8 Z) @) k8 o0 s# R4 j
  15. * This program is free software; you can redistribute it and/or7 g  j9 h; |$ x
  16. * modify it under the terms of the GNU General Public License as# R* p7 Q+ L' @' S$ u( V
  17. * published by the Free Software Foundation version 2.$ d4 l; L, V3 E1 T2 O: J/ L
  18. *
    ' h: }4 O0 y9 G/ _1 g# |+ k  r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    4 L1 [7 L. u+ p$ X% J/ `
  20. * kind, whether express or implied; without even the implied warranty% K* w# f* _1 s* Q9 z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ' L! W' z# F. i- {  Q- O* N
  22. * GNU General Public License for more details.) Z5 m# l% w; U7 {2 F! Z. r' l
  23. */# T, s: ^7 E% U  J( a. \% N; t+ t
  24. 9 Q7 }% [. a& ^0 n5 j
  25. #include <linux/module.h>
      s4 v# T; v- W) }. d1 ^- l6 m
  26. #include <linux/init.h>  O% g, ?- j6 Z
  27. #include <linux/errno.h>
    ; V' p1 }, y" G7 }, n: E! ]; }! x
  28. #include <linux/types.h>% n, p+ N0 G" |% p7 t5 N
  29. #include <linux/interrupt.h>
    - C6 q' A% ^* b9 X8 w4 z* d; ]& c
  30. #include <asm/io.h>  |9 {- N+ M# k9 g7 ~. k
  31. #include <linux/moduleparam.h>
    ( k" o+ ~# d' z
  32. #include <linux/sysctl.h>  V) p8 r2 j& i4 m3 D6 z7 @! K
  33. #include <linux/mm.h>* Z8 \  s  T' {& P& l
  34. #include <linux/dma-mapping.h>) C) m9 w* N2 `# X
  35. 5 N. r6 y  w9 G9 U# X
  36. #include <mach/memory.h>
    7 D$ j/ C6 q* \" [8 G
  37. #include <mach/hardware.h>0 }8 l& P: O0 L+ ?8 ?6 D4 y) C
  38. #include <mach/irqs.h>
    6 y% |, D3 Q1 d, r% ~2 o
  39. #include <asm/hardware/edma.h>
    3 \8 D- l  `' t0 e: `/ W4 `9 e& b

  40. - W# K6 ?8 B) X
  41. #undef EDMA3_DEBUG
    ( e5 Q& B6 ]. T7 m& c" r6 T* Z
  42. /*#define EDMA3_DEBUG*/5 y% z+ _' b0 C9 H( u% Y( `

  43. 0 U( }: z# P2 l9 r$ a" l
  44. #ifdef EDMA3_DEBUG
    : n' _* A4 o( V/ N- h% O/ D* O
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    / ?5 {/ w0 b  D4 E, e9 M) V
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)  J3 Z4 g7 M- P* h3 l9 V# V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  n- @; P/ ?! J+ \
  48. #else; H5 V  o2 j; C- D
  49. #define DMA_PRINTK( x... )
    ( S4 a4 k/ E2 f+ D# h" _
  50. #define DMA_FN_IN
    & M9 ~* D/ [1 ^- E! h) [
  51. #define DMA_FN_OUT8 b% y- n1 s& \8 x  b
  52. #endif
    ) @& `4 C! O# g, d" q

  53.   m  u4 e+ F' V$ |) k
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)- K) s. k" ]% v& e4 R
  55. #define STATIC_SHIFT                3
    " n4 K0 v1 \4 t0 F3 ^: u' X
  56. #define TCINTEN_SHIFT               20
    # Y* q& \$ R$ g7 {: m' b
  57. #define ITCINTEN_SHIFT              21% G9 g2 A, M8 ?9 q/ U
  58. #define TCCHEN_SHIFT                227 r# [9 z; q& L# y8 q
  59. #define ITCCHEN_SHIFT               23+ o# B$ H1 e' `+ a, a; L; d% t/ K7 n* {
  60. ; i4 a9 e  n" `& {% ]+ g
  61. static volatile int irqraised1 = 0;0 v" |: w4 ]9 U
  62. static volatile int irqraised2 = 0;
    ; P6 W1 Q9 g( M- z
  63. " ?8 z7 e* W8 z* V: M$ J) P7 ^8 z
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : t! n9 J6 m3 ?8 X
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! V) M% _5 R/ g
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# O! M# {. u; e, W8 o6 |

  67. ; A. K- f; G/ u& F! s* p9 J
  68. dma_addr_t dmaphyssrc1 = 0;: p) m3 P5 A9 k! u+ I* y
  69. dma_addr_t dmaphyssrc2 = 0;- a3 g( T4 f' E4 q
  70. dma_addr_t dmaphysdest1 = 0;
    ' t) L! |( z* |# p
  71. dma_addr_t dmaphysdest2 = 0;0 G# l! p( {' F3 Y
  72. - M0 Q( D$ |1 t  v, X
  73. char *dmabufsrc1 = NULL;
    * i1 w' A: v3 [/ v: p2 h: h7 s+ K8 ]
  74. char *dmabufsrc2 = NULL;
    ; l0 w" g0 Z% K: ^
  75. char *dmabufdest1 = NULL;
    / q- b; f- l- M; T9 G/ h9 l
  76. char *dmabufdest2 = NULL;
    , R) n. c6 K2 u: p7 A

  77. - _* B' f" @- S
  78. static int acnt = 512;4 d. p4 \6 l; M
  79. static int bcnt = 8;! u. h4 k' T6 \& \! X! ^6 C% O
  80. static int ccnt = 8;4 ^. f5 i3 X% N% m! _
  81. 1 O2 _! W) f6 {. S4 Z: B6 }
  82. module_param(acnt, int, S_IRUGO);
    8 U# Z) n. s5 }' J# a1 j
  83. module_param(bcnt, int, S_IRUGO);( b& Z- G! W$ @
  84. module_param(ccnt, int, S_IRUGO);
复制代码
' A7 I" w9 \. l

( k  u4 l9 S, W- t/ \8 N      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
# ?2 }- |* z/ e/ C' f; }' K8 }2 Parm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
; i# t( n$ k! K- w     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。( S8 ?8 h* R3 Q. C" |- I6 h6 g$ h$ J
" Q/ V0 V& I2 _. d" ^

" X# N$ o- N. s; x5 E6 z& t
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-25 10:21 , Processed in 0.040806 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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