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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
' ~1 w2 G  W' Y2 K& A  g! Z) O
  1. [code]EDMA sample test application) q9 \) V% C9 p4 J& m$ s6 F! M
  2. /*
    " y+ w5 a+ a* P4 m
  3. * edma_test.c1 k" a# j' ]9 x. ^* {2 [
  4. *
    ( t3 P: W1 x- l. P& e
  5. * brief  EDMA3 Test Application
    6 c  v! K! x# L
  6. ** H) E: q# Y( g6 _/ A% w
  7. *   This file contains EDMA3 Test code.. Q& v8 Y6 x8 {# T
  8. *
    / L3 g0 D. C4 R* p5 s7 E, o
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    - s7 K3 C6 n: U4 A* Y  X, |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % S% z2 N, G1 T0 G0 F
  11. *         TO CHANGE.
    & C  l; q( X! M# s& h' R0 \
  12. *. s9 ]. {9 G) L: t- {7 F- ^8 Z9 I
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    8 R. |# f* W: B% F& e
  14. *
    5 h3 [7 Q- `! J1 n, W
  15. * This program is free software; you can redistribute it and/or
    " e& P, h' @" I; I6 [& o
  16. * modify it under the terms of the GNU General Public License as  ?9 [1 j: Q4 x" G! R
  17. * published by the Free Software Foundation version 2.
    8 e: o/ U3 V# d
  18. *3 C4 i# \& r3 t8 g
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    1 a8 u9 b& k# ^0 z5 \
  20. * kind, whether express or implied; without even the implied warranty* F( ~! f( W- S
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    & t' [9 d( C! P2 W/ T; o, g/ k
  22. * GNU General Public License for more details.9 T5 w9 M- x. j
  23. */
    3 ^- A$ P1 Z, X0 C" c& N
  24. / Q$ @6 B0 c! j$ H: L) h+ ^* w
  25. #include <linux/module.h>
    : x' p5 s" U) E- R  p  N& `
  26. #include <linux/init.h>
    5 B) a7 i7 v% ~. G3 Q
  27. #include <linux/errno.h>
    / o: D5 c1 ]$ L4 P
  28. #include <linux/types.h>$ \% B6 t2 s; F8 Q. P
  29. #include <linux/interrupt.h>: o- d% f" d2 M5 ~) O+ i, t/ [8 b
  30. #include <asm/io.h>0 {7 \0 Y' F0 x( n! ^2 j1 s
  31. #include <linux/moduleparam.h>
    ' F5 `6 n0 t$ @6 X
  32. #include <linux/sysctl.h>6 [: b  u) W" R( u
  33. #include <linux/mm.h>, M% C  ?: `$ D5 H4 Q8 v- G1 n6 J" F
  34. #include <linux/dma-mapping.h>
    # y) O8 l& b/ {) E1 N( p" _* c

  35. 2 `2 ^9 P2 U) W
  36. #include <mach/memory.h>) k* ~7 d7 c% a
  37. #include <mach/hardware.h>4 c- l: V" a$ d  g& h( y* s9 `
  38. #include <mach/irqs.h>
    " k$ q$ h/ z6 v& G: S" j, U* ?
  39. #include <asm/hardware/edma.h>$ o1 F  W+ e& K- n! w  d5 V

  40. % y# M  h6 A* m# ]: G7 [
  41. #undef EDMA3_DEBUG
    6 o' \- F! v1 R- C
  42. /*#define EDMA3_DEBUG*/8 m- y- N4 A# f/ m% v+ b
  43. - B- A/ c4 h+ H
  44. #ifdef EDMA3_DEBUG
    ! I' b/ m" k. ~; `/ R
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 Z7 U( B" X; o5 w, k1 w' t& _
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__). R( F# z+ x) S7 T7 p+ @" t8 u5 [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    / |% |* E* H4 E7 n  J) v; l
  48. #else
    0 ~0 h; m% _. f; M! o
  49. #define DMA_PRINTK( x... )) M3 D0 ^! K" N+ c, J8 C$ z
  50. #define DMA_FN_IN
    # D& |* W* M2 N
  51. #define DMA_FN_OUT4 Y, r" H' Q$ m) a0 v4 T
  52. #endif
    4 A9 }/ V) Y8 G# u" `. ~
  53. 1 q  N0 ?" S3 k" D. C) ~  ?* {
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) h, e$ V6 u0 W  z$ Y& n& S
  55. #define STATIC_SHIFT                3
    4 ^" `% y. i9 t* Y9 e
  56. #define TCINTEN_SHIFT               20! B+ H5 Q0 x/ O& W
  57. #define ITCINTEN_SHIFT              21
    ) _. B+ K$ M- k' |
  58. #define TCCHEN_SHIFT                22# j1 ?3 w6 O7 G, m
  59. #define ITCCHEN_SHIFT               23' M4 d5 F" f/ g2 C* X

  60. 3 a- e9 @& k( v! g. ~$ u
  61. static volatile int irqraised1 = 0;
    1 O! ]) b! l6 V  L2 }, h% a
  62. static volatile int irqraised2 = 0;
    * L1 h# w+ V4 l* i
  63. $ h6 F% U9 s3 w  D6 f% J0 {7 T
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " F8 y: `: I. o
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 M5 E+ L& a7 q1 t. ]
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 T* `) E7 w5 r: t3 p8 r; T
  67. ) r1 i7 Y) W# d  d  Q% g, u
  68. dma_addr_t dmaphyssrc1 = 0;
    ) |; v2 o. [* l* w0 i8 {
  69. dma_addr_t dmaphyssrc2 = 0;+ y; O( t8 k/ C- P2 Y5 e
  70. dma_addr_t dmaphysdest1 = 0;
    * Q9 V& S6 f3 G* c$ ~- A
  71. dma_addr_t dmaphysdest2 = 0;
    / C9 ?' o8 n' c' G. W, O

  72. / [3 L. `# ]. b) ?2 r
  73. char *dmabufsrc1 = NULL;- P5 R1 c/ S9 O8 q8 i1 P- F
  74. char *dmabufsrc2 = NULL;
    , u" O1 U* {: D
  75. char *dmabufdest1 = NULL;5 ~; s! W( x2 h, m
  76. char *dmabufdest2 = NULL;
    + A, M/ G  H/ E0 x

  77. + x' Z0 G" j3 O& p! ^7 h% A; M
  78. static int acnt = 512;7 R6 D5 x5 c- W
  79. static int bcnt = 8;
    " P% r0 ^6 \: M9 A% S$ W6 R8 P
  80. static int ccnt = 8;
    + R* R' l) H* S, F4 A5 D

  81. + m) R* T6 n& D' m# x3 U* e8 a) C
  82. module_param(acnt, int, S_IRUGO);
      E$ {3 y1 E: T. [1 f* n
  83. module_param(bcnt, int, S_IRUGO);
    # Z: E$ C8 |& L( m$ @
  84. module_param(ccnt, int, S_IRUGO);
复制代码

. x6 z! k; n5 V
; F: A2 J3 n. j& m      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
; |( {  B1 i. Barm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
" i7 b( T- V! ~" D* o9 h     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 s0 k& g- ?2 j, i& y' k7 F" B+ X- Y
1 ~- ^# c7 W! u7 u) }2 P
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-25 03:49 , Processed in 0.040552 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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