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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 X. U; X1 z) I# E9 O: O
  1. [code]EDMA sample test application
    : z3 T; C  J5 M; I1 O
  2. /*
    & e7 U8 W7 _! n, T9 V
  3. * edma_test.c5 z+ I4 P. Q6 P3 ~9 q2 C
  4. *8 o! |0 \& m9 q& \: y4 G. C6 J) }  E
  5. * brief  EDMA3 Test Application
    % M5 H# n/ C" j. n4 C
  6. *
    , t$ Z# c0 k. S) ]; u5 {$ l
  7. *   This file contains EDMA3 Test code.
    $ u8 x- d/ r+ d; ~0 S# Z" h
  8. *' b3 a  s1 N' {& ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE) |9 r  R+ _  j9 P* A
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    , R$ H' U( C" ]; N- q, ^* \# W
  11. *         TO CHANGE.
    + K6 Q$ }0 u/ m5 Y$ ~4 I, C. C7 w
  12. *% b- y) j- v; f) k
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 W. l. _6 k! Y4 N2 `4 V/ o
  14. *- [: C9 T0 w% k# l; H
  15. * This program is free software; you can redistribute it and/or
    3 S# V4 h- E4 N0 m
  16. * modify it under the terms of the GNU General Public License as) U1 E7 \0 f6 R
  17. * published by the Free Software Foundation version 2.
    / T& }" z! _& b  q
  18. *
    , Z9 \1 y- w8 n9 f% k7 |' p2 e
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- ]% b2 K3 Y# e2 D. _& n  c
  20. * kind, whether express or implied; without even the implied warranty
    ; h: g. y, r, m  O
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    7 ^" }# ]5 ^- b7 z, K
  22. * GNU General Public License for more details.
    ' Y. n( p: }8 p& ~) d- p
  23. */
    0 i4 P! o7 K: ~* C8 E

  24. * n" k& m4 S* W0 Z* O/ i5 w
  25. #include <linux/module.h>; k# ?/ v& V" _* J  V
  26. #include <linux/init.h># ~; z) n9 N5 G2 u7 M& E" n
  27. #include <linux/errno.h># B* X) r* n1 u* V4 g  s
  28. #include <linux/types.h>
    & r6 J- F8 J' y/ W
  29. #include <linux/interrupt.h>9 Y* a' G6 C+ I" Y, K4 Q% s0 d; J
  30. #include <asm/io.h>
    , ^3 `) ]* ?. o9 E5 g, M+ P( `
  31. #include <linux/moduleparam.h>0 x0 Q: C0 M* }/ ?  B- H4 I! n
  32. #include <linux/sysctl.h>$ R9 S8 o2 d& F3 W4 P' j: |9 u
  33. #include <linux/mm.h>1 K! W$ Q) H: }+ q- Z" O
  34. #include <linux/dma-mapping.h>
    : V; O3 m& F* T4 ]+ q

  35. - u( @1 U9 P) H3 ?3 ]% Y% q
  36. #include <mach/memory.h>0 P* G6 A, ?3 \! Q! b) u; n
  37. #include <mach/hardware.h># l( f! s4 B; A- j* R& _- L" j
  38. #include <mach/irqs.h>
    0 R# z  o# U* ~1 {# M
  39. #include <asm/hardware/edma.h>
    ' T' m4 }3 F- ]' d
  40. 4 V- @+ m+ G" x# l
  41. #undef EDMA3_DEBUG
    9 i( [. v$ d4 _+ b  T
  42. /*#define EDMA3_DEBUG*/( ], w* }- q2 K- r. b: o

  43. 5 u. ^2 `8 ^, y+ x- F
  44. #ifdef EDMA3_DEBUG+ y/ `4 u9 E2 Y9 z  C/ |1 t
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    1 Y! x1 ?( I. [; Z, N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# ~3 C5 R8 \7 `, j
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__), C5 \! X* y. u: T8 t
  48. #else, o$ n" `  N- O
  49. #define DMA_PRINTK( x... )9 q$ @% P+ O" N7 W& n3 ~
  50. #define DMA_FN_IN7 ]3 q: l: ~8 d+ o- @
  51. #define DMA_FN_OUT7 |, K! Y& _5 W; P' q* z  R
  52. #endif4 l0 c5 z5 R/ k
  53. ; h- N& H/ D; X- A5 ^( D0 i4 Y, C. Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)& m' F5 o) f2 ^8 C0 J
  55. #define STATIC_SHIFT                3
    8 @" L; Q: F2 L) }6 F
  56. #define TCINTEN_SHIFT               20
    : j/ v3 x: w+ L; ^4 t
  57. #define ITCINTEN_SHIFT              21+ U& s7 d' P* \  ~9 m9 ^5 D2 `
  58. #define TCCHEN_SHIFT                22- C, E9 e- H1 E. V8 [
  59. #define ITCCHEN_SHIFT               23
    - b5 u- ^6 \+ G5 G
  60. % B& N) s+ d2 N: u$ I& w1 z/ M6 [
  61. static volatile int irqraised1 = 0;& d* \- k6 [4 ^6 L- ]0 m8 g
  62. static volatile int irqraised2 = 0;8 ?: Y5 ~& D2 o' Y% D
  63. + g& m+ R' _8 t( q* t. U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 [! }# I9 W" d9 ^+ ]
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 v, r+ _+ _2 Q7 l
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; d6 k7 y8 c2 F4 L  C. z

  67. 8 m! t1 j# k. M. I, X
  68. dma_addr_t dmaphyssrc1 = 0;5 J3 u& X' j; y: v
  69. dma_addr_t dmaphyssrc2 = 0;
    4 m# a, C: H' s5 Z3 t
  70. dma_addr_t dmaphysdest1 = 0;
    / g" }) n: c; N, n4 t( Q, Q
  71. dma_addr_t dmaphysdest2 = 0;6 B6 K7 B. t7 x+ L5 E; w3 p8 x

  72. 7 {" L' ]8 @/ K, y* Q: h
  73. char *dmabufsrc1 = NULL;
    : C/ m# x& @4 E0 a8 F1 R% x5 {
  74. char *dmabufsrc2 = NULL;; |3 l4 H+ ?1 z% \/ }
  75. char *dmabufdest1 = NULL;
    # c4 C$ r! T, Z
  76. char *dmabufdest2 = NULL;1 n- k- N5 A" [1 z& ?- N( g
  77. ( Q+ b+ p+ B( N& a2 w) K" `$ |
  78. static int acnt = 512;0 w5 X* F# |9 m7 R) n* \' X/ w
  79. static int bcnt = 8;$ e$ {- O3 v1 v, w
  80. static int ccnt = 8;% g, z" V4 \4 |. P

  81. 7 b2 J- g6 t) P/ q7 G" c1 F
  82. module_param(acnt, int, S_IRUGO);
    6 v1 C6 d# z7 ]# U" X6 Q$ `/ c6 \
  83. module_param(bcnt, int, S_IRUGO);
    5 w1 p7 M8 o& U* e; M2 \+ v  X$ [4 P
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 F& s! B) b3 f7 W. M. u
# \. E5 t5 v# u
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用- ~; h1 ]$ p4 W, V) p
arm-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 z1 Y: c% L% S7 @     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
& B3 E0 N  W# u- C+ Z
1 q! d4 |: O3 L! E4 s' z3 v
% L0 t" J) e/ ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 17:01 , Processed in 0.038459 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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