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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; q6 ~* u0 W" N2 i* w# c
  1. [code]EDMA sample test application: _$ \6 g3 |- \: W. d" A
  2. /*
    9 K( D. _* O$ e7 }
  3. * edma_test.c3 C) C5 `2 Z! b- K
  4. *
    % {, j& m9 y  f) a" U/ L  ]
  5. * brief  EDMA3 Test Application
    5 j# O+ J% }) j4 O0 w+ X
  6. *
    : E# J9 ^1 Y) B% r: h5 q* j
  7. *   This file contains EDMA3 Test code.0 ?% V  {, n4 Q4 G% ~2 u
  8. *
      y# q+ N# @7 [% q1 t
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE( ]) b) }5 z# b1 _( z
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * H/ h; m# c, g; ^* ]
  11. *         TO CHANGE.
    9 b( Q( z2 k8 O% S: l4 T
  12. *
    8 N* Z! }/ \( ?0 i3 t% D0 C
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    6 X; e$ A' k% S8 j5 |
  14. *
    ) K! t4 o/ a% K" \
  15. * This program is free software; you can redistribute it and/or
    & F# r+ X" m2 e& O0 h) l1 P8 e
  16. * modify it under the terms of the GNU General Public License as5 Q) ~" }( ^  ]( H/ }2 V6 @, F
  17. * published by the Free Software Foundation version 2.
    1 N2 W# R  ]: `. f% |  W
  18. *
    " G1 Z2 C1 Z% q. d  _* P
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    / b( g9 j! m2 I& h2 u
  20. * kind, whether express or implied; without even the implied warranty8 B# p2 I' S# F& M+ m/ V9 z  j
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9 b" ]( H  k+ E9 ^
  22. * GNU General Public License for more details.
    2 Z3 F2 i4 z' j/ e' J2 Z
  23. */, k1 Y/ B1 \2 T  P
  24. 5 P3 d' k2 M5 _
  25. #include <linux/module.h>. z/ m9 b* h- p% X$ p. `
  26. #include <linux/init.h>
    ; c. m) h# {. Q( n9 |5 W
  27. #include <linux/errno.h>
    " A4 R' j. Q  y1 ^" r
  28. #include <linux/types.h>* Z# k( ~3 V( l8 I
  29. #include <linux/interrupt.h>, U) K$ l2 F# ]) {# p$ R7 }# w
  30. #include <asm/io.h>
    6 ]9 A1 t1 p$ F) g& H) e4 ?( X
  31. #include <linux/moduleparam.h>4 b  d0 z& m2 q8 \* F
  32. #include <linux/sysctl.h>  x+ z9 A8 C7 l( y/ B
  33. #include <linux/mm.h>' w5 E" {0 R( ?$ e- v4 ?
  34. #include <linux/dma-mapping.h>
    . {, H+ |) A6 ]6 i: A* h; y0 v6 G
  35. 1 {. B) z# E# y# o& G
  36. #include <mach/memory.h>8 H" l/ E: |7 m. t
  37. #include <mach/hardware.h>& I/ u. S  Q; L" Q
  38. #include <mach/irqs.h>$ e  y$ a9 ~) n
  39. #include <asm/hardware/edma.h>
    * U' \7 O' C1 L, G, M. @

  40. 2 u- M. R; _. i+ _# ]0 G% P+ U
  41. #undef EDMA3_DEBUG# f1 C* K4 Z# O4 f9 A+ [+ o7 T! j
  42. /*#define EDMA3_DEBUG*/; T- B. y* ]) R
  43. & e5 p+ Z6 W. G' e  b& l2 w$ c
  44. #ifdef EDMA3_DEBUG6 ?7 A% y+ P  g( s1 t! @" k
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)$ ?: W/ g  O1 D7 t0 I2 E) |: t8 z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)9 w) L' p: u' L: N* q+ L. D
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)" r4 r6 P$ E4 q, {- D) V
  48. #else% ^" k( H) l3 S1 ]
  49. #define DMA_PRINTK( x... ), o$ o  Z7 i: j4 ^
  50. #define DMA_FN_IN
    . O. o; @2 R( Z& q: G2 K
  51. #define DMA_FN_OUT2 c- H3 I1 t! H, [! y9 x
  52. #endif
    * M7 W& Z* x) z! y6 P# ^
  53. * }3 `1 S7 S6 T- c# ^7 o
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)0 _7 R- N) i3 ^/ x
  55. #define STATIC_SHIFT                3% g7 X# N4 h% L" P6 d% _
  56. #define TCINTEN_SHIFT               201 Z% @3 X7 P% V. {
  57. #define ITCINTEN_SHIFT              21
    3 O) ~5 o" Q  N. H+ s. Y' z$ e
  58. #define TCCHEN_SHIFT                22
    - ?) H/ w: ?! j$ F% [# V
  59. #define ITCCHEN_SHIFT               23- G5 w+ n9 L3 _% Y% d  ?2 A8 A
  60. $ o) |, _* \5 L2 N, K
  61. static volatile int irqraised1 = 0;
      h/ m; M- _; U  e4 x7 ~$ g
  62. static volatile int irqraised2 = 0;( q$ a/ m0 F+ c- m
  63. , z" T; Q6 C) y" W
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 g0 V9 H; y* X0 _* G
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 O! P  U3 o( M9 F
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% p' j, N0 D0 m

  67. ! ?$ v0 I; g& i  e
  68. dma_addr_t dmaphyssrc1 = 0;& H( N3 w% H2 j  T  Z6 H, @! W4 r
  69. dma_addr_t dmaphyssrc2 = 0;' j. c. }" S+ v# J
  70. dma_addr_t dmaphysdest1 = 0;: U2 [: x4 L$ j, {# ]. D
  71. dma_addr_t dmaphysdest2 = 0;
    $ ~+ J, f' ]; X, ]  L

  72. $ O9 i$ B: s- E' D) J( Z9 `
  73. char *dmabufsrc1 = NULL;
    / }2 K4 P* A5 j& N, _3 \- f
  74. char *dmabufsrc2 = NULL;' O( K, ?, ^/ _9 s3 K4 ?
  75. char *dmabufdest1 = NULL;0 s* U2 C: W3 u
  76. char *dmabufdest2 = NULL;, h9 B! q. |. f3 B6 a$ `* M
  77. # i3 Y% I2 \4 G- s0 h  L
  78. static int acnt = 512;
    : P0 {* i. r7 r+ `  e
  79. static int bcnt = 8;
    6 y: I: I' R. q/ `& q5 ^" B5 F% _
  80. static int ccnt = 8;
    ! M9 o3 P* _% v3 o3 j7 B( M/ P( @

  81. & F0 m; G) f4 k! B( a
  82. module_param(acnt, int, S_IRUGO);
    0 ?9 ?3 R0 f8 F7 V6 \
  83. module_param(bcnt, int, S_IRUGO);
    9 J' D" w# T  i
  84. module_param(ccnt, int, S_IRUGO);
复制代码
* f% d, d2 h! x. w" X" S) E
% L$ T4 B' F' q+ R& R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 v: F1 j( {- ?9 c2 X: S+ farm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
& N  ]) e3 R7 I1 m! z6 |     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。" o  a8 q5 w4 t+ e1 D8 l

, S3 j6 r4 ?& f, a7 c# C/ h; V7 J$ o+ ]4 m5 k, j- u
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 21:37 , Processed in 0.036640 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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