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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 , j. k  Q5 o6 S
  1. [code]EDMA sample test application
    ) v5 v& L6 q$ [1 B
  2. /*
    . S* U/ v% [$ t1 r- T- R
  3. * edma_test.c# O7 J4 L5 J* k' J
  4. *
    4 q8 B, @# ]9 E: w* I
  5. * brief  EDMA3 Test Application, l% L- |7 R% `+ [
  6. *
    8 U, F: Y" x* k
  7. *   This file contains EDMA3 Test code.9 o/ D; ~+ W( e* @$ g
  8. *
    " m+ r9 v' j3 r& J/ z. s
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    : \- j/ x! l1 z, [& n0 ~8 a
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    + X6 B: v# p# `, G; [$ u
  11. *         TO CHANGE.
    . K' D; }* N$ O: z
  12. *
    ! @/ C) R) I' W' r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/, d  B3 }, U" f! A5 B; E
  14. *
    : ~" h6 u( W& ]
  15. * This program is free software; you can redistribute it and/or
    " w; f# s! P" d1 R" M' S! S
  16. * modify it under the terms of the GNU General Public License as
    3 d3 j1 q; z+ Z9 K# Z
  17. * published by the Free Software Foundation version 2., }* I/ Y& Y" o1 k5 d+ {  P
  18. *1 H$ A* q2 O5 \$ a
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    6 h) P, v* z7 ^- Y/ P3 z% }! L
  20. * kind, whether express or implied; without even the implied warranty; n9 A! e7 r) R6 G; V
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    . w" u9 S' R8 C- ]
  22. * GNU General Public License for more details.
    % }6 Z% A1 m( P3 L
  23. */9 k. |* L) m- y8 S
  24. 1 _- t7 j" D% b& n
  25. #include <linux/module.h>' l6 g( n5 [; \  n) ?/ e
  26. #include <linux/init.h>
    ; h7 p1 I- \4 R
  27. #include <linux/errno.h>
    1 P6 [+ H  v- k9 |7 a
  28. #include <linux/types.h>. Y* A( r) @& ?3 i8 b
  29. #include <linux/interrupt.h>% a9 G. z2 _8 p7 w8 n
  30. #include <asm/io.h>* o) [, i1 J; P
  31. #include <linux/moduleparam.h>, \' d, X+ d" d6 G2 M3 ]
  32. #include <linux/sysctl.h>' Q- X2 f4 @% X+ m1 X6 d
  33. #include <linux/mm.h>
    6 j2 j% y  n% M; S$ z
  34. #include <linux/dma-mapping.h>( u5 K& @& A% y) m7 Q1 L3 Y1 F
  35. 0 O- h# T& e+ H9 c
  36. #include <mach/memory.h>
    ) N9 u- w# S3 u+ R) t2 ]! D' R# k
  37. #include <mach/hardware.h>
    6 P1 n5 C7 i7 s, R9 p
  38. #include <mach/irqs.h>
    ) M; v# d! @7 i9 N
  39. #include <asm/hardware/edma.h>: r" B+ _3 a% Q; r  }8 {" ?
  40. , q  h# Q" d1 c  ~4 L- x( ]
  41. #undef EDMA3_DEBUG
    $ E! E+ r9 q6 v6 h
  42. /*#define EDMA3_DEBUG*/
    . K1 i8 s% c& B6 @

  43. # Z( c$ z! f- F, t
  44. #ifdef EDMA3_DEBUG
    $ w. E" S3 ~) j5 Q% T7 O
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)  K& s/ t6 f# [+ g
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( P0 N8 n$ N5 t$ g
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ( X  {. m4 x4 k* Z" ]. }
  48. #else
    ' `  g$ A1 E5 J& }
  49. #define DMA_PRINTK( x... )
    / I, D% d. u9 o% {& K
  50. #define DMA_FN_IN7 g" e- }' M- ?9 Q3 ^' C: A
  51. #define DMA_FN_OUT
    $ j" f! O5 {& h2 A4 M; k
  52. #endif5 v# B4 s: w& W
  53. : m9 T1 ?. I. P8 }5 F
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768); L! ~# s$ c; H7 p% `4 ^: V% ^- A
  55. #define STATIC_SHIFT                3
    / p+ i, v* h# Z
  56. #define TCINTEN_SHIFT               20/ Q4 p' A, G' |! T$ N
  57. #define ITCINTEN_SHIFT              21  \9 y4 T/ T/ z; g9 v/ V7 o$ }
  58. #define TCCHEN_SHIFT                22" A# t. K% B5 |# F1 p' U
  59. #define ITCCHEN_SHIFT               232 B: [% z* l- r
  60. 1 a9 u. c! t9 F5 o9 N) I" m- ]
  61. static volatile int irqraised1 = 0;
    , o* w2 _) Z; [/ @" S$ d5 |
  62. static volatile int irqraised2 = 0;
    * H4 @5 h* }6 ?/ R: O
  63. 3 J3 p. O9 P* b- j4 O
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 }9 B( ^8 K9 I/ {
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# B9 r1 f" ]6 x& I9 L
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 r& |% m7 {* F$ g0 b9 N% H

  67.   t0 [! w, p" F  l! A: S& ?' L+ d% _3 `
  68. dma_addr_t dmaphyssrc1 = 0;1 Y  a, q4 n* ^! F! o' Y3 e
  69. dma_addr_t dmaphyssrc2 = 0;
    . `0 M3 x" I% o
  70. dma_addr_t dmaphysdest1 = 0;# r" I$ D1 |: G
  71. dma_addr_t dmaphysdest2 = 0;
    $ R+ v* v2 `; v/ t2 s+ {
  72. 6 p* m/ n1 Z: b# F; k& a
  73. char *dmabufsrc1 = NULL;
    # F% P3 w. M' K% ]2 r. H5 w" i
  74. char *dmabufsrc2 = NULL;
    # Z4 N2 A+ f* N  e
  75. char *dmabufdest1 = NULL;
    3 n/ o$ {& E& _* f
  76. char *dmabufdest2 = NULL;2 G1 v* d1 P* m
  77. 9 d2 M" R& ]" ?
  78. static int acnt = 512;
    & O8 ?; ?8 h/ b: D' x- v
  79. static int bcnt = 8;7 G8 g; _  X# p
  80. static int ccnt = 8;
    # W1 [2 C2 i$ P' \
  81. ) D+ |' \2 d' k" [6 C
  82. module_param(acnt, int, S_IRUGO);
    7 @, [! m( c( ~: ]3 g( j" [
  83. module_param(bcnt, int, S_IRUGO);4 G! U' z- L9 t' Z% w; P) O2 M% S
  84. module_param(ccnt, int, S_IRUGO);
复制代码
+ f1 t* z) j, h1 I
1 G8 ^# H1 G" C: d
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" ?- R  }: I* B' h5 j" _, }/ r/ darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
9 C5 J+ N) X! J* P! U. s7 t     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) j# K- x, L, a. Q' G0 g
( y0 ?0 o8 b& _# U
+ y5 P- i) e2 |- N1 L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-31 11:42 , Processed in 0.039333 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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