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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 . Q5 v' ^3 }2 E: e7 V# v
  1. [code]EDMA sample test application2 i1 v7 E* U7 B: {8 U
  2. /*6 f  X+ s+ P$ E% S. u
  3. * edma_test.c
    % n0 n/ N! |7 o9 T+ y: }. X8 q
  4. *: Q) H  h7 h# u& K9 \' a
  5. * brief  EDMA3 Test Application) H2 f! F+ c! ^, h
  6. *" s7 K0 z6 \- _% j! m& d
  7. *   This file contains EDMA3 Test code.! t$ T# G" j( p4 T% p
  8. *
    ; U9 D; i! p7 K. f6 \1 Y8 {
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    - Z) f7 Y/ ~  b8 Q8 u! P8 n1 N
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    0 Q8 b) Y7 A/ a. z- X6 P
  11. *         TO CHANGE.: D$ W; K$ [/ k! _
  12. *, p& e& Z9 b$ Z- ~
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/$ }# u3 Y- n  r" \+ X# m' `
  14. *
    ! e/ W2 _0 j& e" k* ]$ Z7 A" c' e
  15. * This program is free software; you can redistribute it and/or
    0 J" T3 Y  X0 Z0 V" ^9 Q
  16. * modify it under the terms of the GNU General Public License as& Q: A7 V' r7 j7 A7 ?; t
  17. * published by the Free Software Foundation version 2.
    ; q  T+ l  H9 a7 u3 h6 T# \
  18. *# k" q/ _7 ^" o- z1 F# t1 [* C
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    $ C/ d. A* c$ Z, y9 n  E0 M& K
  20. * kind, whether express or implied; without even the implied warranty% ?: \' h. ]* r* u0 J9 r
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the0 |3 ?5 l. Z4 ?& j
  22. * GNU General Public License for more details.$ c3 t' |; K* O. f
  23. */6 ?) y  Y  M6 A1 _
  24. - f* Z& B) j; z4 d0 `0 [" s' e
  25. #include <linux/module.h>2 g1 K0 s% [+ L; T
  26. #include <linux/init.h>
    " Y  V' J& s' l
  27. #include <linux/errno.h>$ ]8 D% v9 d0 m  Q; Z
  28. #include <linux/types.h>$ T7 {; N1 p6 |$ B7 Z' r
  29. #include <linux/interrupt.h>) M/ y' w0 \5 \& V. m& o) I2 T1 ?9 H( B
  30. #include <asm/io.h>
    7 h6 L$ ?; B8 l! k+ ~# W
  31. #include <linux/moduleparam.h>7 |3 e7 T1 L/ _) A8 k
  32. #include <linux/sysctl.h>' a8 w' n5 T3 b5 ~
  33. #include <linux/mm.h>
    ) d+ M( A" a. L4 j0 U8 [
  34. #include <linux/dma-mapping.h>
    , y; |$ b& G2 W" \

  35. % M4 G. [6 @+ g- @& C) V
  36. #include <mach/memory.h>
    . J* r. w% {) G+ K; j  @; B$ m/ |
  37. #include <mach/hardware.h>
    / w+ f/ s) h" S3 R/ m
  38. #include <mach/irqs.h>
    % k. {4 H( N" H7 O7 v+ L! H
  39. #include <asm/hardware/edma.h>6 v$ h3 L/ z4 `3 e# i6 F2 b
  40. , \8 H% H/ I8 c/ S
  41. #undef EDMA3_DEBUG
    6 v$ G0 s) m" p! x9 H
  42. /*#define EDMA3_DEBUG*/7 z8 p4 A8 y" A9 u
  43. : K0 N  P* m! U/ }1 i: [5 S& P$ t
  44. #ifdef EDMA3_DEBUG7 p/ w% o2 k9 N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! }% B" G- v5 N) O% ]1 |5 Q7 V9 r
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ' Z% K- I. q# I" K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    $ _+ u5 h5 Z# X
  48. #else- o7 ]6 I% o: `  Y* @! w
  49. #define DMA_PRINTK( x... )
    2 X$ e+ s+ {" H8 `( m# P+ T8 |
  50. #define DMA_FN_IN6 k+ v* T, `) p: b4 [0 [8 w8 g
  51. #define DMA_FN_OUT$ c, y3 c  P& q
  52. #endif, d- x0 i8 v4 u" U- S
  53. + `* T0 Z* _4 Q# K
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)7 V: u. A5 J3 C0 x; ^
  55. #define STATIC_SHIFT                39 L8 h7 {0 ]8 Y2 w( p+ v2 k# I
  56. #define TCINTEN_SHIFT               20
    0 |3 s2 o# m+ X( i+ [
  57. #define ITCINTEN_SHIFT              21
    , M) G, A  y# `
  58. #define TCCHEN_SHIFT                223 W8 A6 V- B3 ]. r
  59. #define ITCCHEN_SHIFT               23; Y7 r/ q, L7 l, g& o
  60. 0 u) j/ S+ B- Q, e# Y; L, @
  61. static volatile int irqraised1 = 0;0 w5 B- C8 I% B, _% k7 Z
  62. static volatile int irqraised2 = 0;1 {! v" P; e5 M# W6 r+ q  G
  63. # g% \! a4 Z* _5 u
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 N4 C8 }, s0 k5 j, G& M4 n4 s
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 i) {3 @5 X" `. D0 g% j. U
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. F  r; ]1 U4 i( f" g: I2 g/ d
  67. 2 P  j: M7 t5 s; c" L/ b6 M+ f
  68. dma_addr_t dmaphyssrc1 = 0;
    1 t9 Q% @; Z* o$ w* h: k
  69. dma_addr_t dmaphyssrc2 = 0;8 o9 [2 h7 Y" D) h% ^/ _# `
  70. dma_addr_t dmaphysdest1 = 0;6 c; L/ [3 A) P+ ?' q$ L
  71. dma_addr_t dmaphysdest2 = 0;  y0 u+ z# M: L& L9 [! v  e
  72. ' C# M5 u7 M  r3 A5 u# `
  73. char *dmabufsrc1 = NULL;( P) j: x7 A8 f, s8 z9 P2 j. n( W
  74. char *dmabufsrc2 = NULL;
    , n& R+ b$ c- P2 J) v
  75. char *dmabufdest1 = NULL;2 R! d  V* J3 `, Y
  76. char *dmabufdest2 = NULL;
    & n$ I: ^* @: \$ Q) n+ X

  77. ) R4 F) V  M) s( ~) H1 e% |2 _
  78. static int acnt = 512;+ a' Q6 h, L9 K) ]
  79. static int bcnt = 8;( X. Z9 @, d+ [( `6 q/ j& S2 g
  80. static int ccnt = 8;
    ) ^$ m# R% K7 ^2 j$ Z7 ^1 M7 Q1 e4 `

  81. 7 y& b. Q$ d) @' T
  82. module_param(acnt, int, S_IRUGO);0 `) D% E0 W6 ^
  83. module_param(bcnt, int, S_IRUGO);- d* Z+ b& Q) D; n" B
  84. module_param(ccnt, int, S_IRUGO);
复制代码

" _$ S0 P, {3 n) M  v9 R
0 ?. l/ k% i4 v% k, s0 U      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
6 E& \8 \1 X' ^- h0 Q1 Q( \# k2 harm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
7 j# e; M) b. f' ?7 Z8 J     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, u; s+ M/ Y9 I& x5 i* {$ e+ N; ?) j( L
0 s% m' Z+ |/ E+ y+ ~; L
, ^3 o0 g$ z+ T( b8 b9 ~( x9 J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-18 07:26 , Processed in 0.039291 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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