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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
! |* m2 t3 s! M. x; A
  1. [code]EDMA sample test application
    1 f3 T$ i# }; L& ?7 ~: L4 q
  2. /*8 h+ F; t9 ^0 m3 J# s
  3. * edma_test.c/ g& J  W2 n! |7 a2 e; j/ P
  4. *
    - z* q: C4 |9 d
  5. * brief  EDMA3 Test Application
    $ o0 |, d+ F5 i! f3 d; j; l) q. h
  6. *
    , B) S  k  c, r* b% [- j
  7. *   This file contains EDMA3 Test code.2 ^1 V- x; c0 ?- h% `& x' u
  8. *9 Z, `/ s* B* z" _+ p. ^
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    - j2 n( w  x+ z8 W2 W' u
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    7 B+ x8 O$ O2 J
  11. *         TO CHANGE.
    9 M7 i( |: l6 a8 C; ^0 c: i& j
  12. *$ m2 u! n$ V, O7 n1 u7 U/ p' D% h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/7 t) Q. X5 {0 }: l  O
  14. *9 ~' \! R; R0 L; s/ \
  15. * This program is free software; you can redistribute it and/or' K( W4 `  @: L* F. P
  16. * modify it under the terms of the GNU General Public License as3 @- t# U. ?7 F9 Z& E0 x; e
  17. * published by the Free Software Foundation version 2.8 J/ I/ N" l4 B
  18. *2 v! F, s: x  ^
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any4 b& G6 Q+ E; U; X3 B# F
  20. * kind, whether express or implied; without even the implied warranty) ]0 |- s2 s, P! u; U0 H
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the- Z/ o/ j+ A( d4 q/ l
  22. * GNU General Public License for more details.3 V8 f, f( w& \3 r$ [4 l
  23. */" g0 D, U& y- M# C" ?
  24. ( U  G8 V# o# h& o" t1 C
  25. #include <linux/module.h>$ v8 _" E* J# E: d% F
  26. #include <linux/init.h>
    & O; P" J0 S2 L$ ?" E* t/ q
  27. #include <linux/errno.h>
    - h' q4 b) |* m; H' S$ o% T! _6 c3 f
  28. #include <linux/types.h>
    ( h7 j# _; G- k+ u4 s
  29. #include <linux/interrupt.h>. h6 b& o; w+ q. x7 _5 x
  30. #include <asm/io.h>% o+ M! _- `1 N; w0 q! M% }
  31. #include <linux/moduleparam.h>
      }7 A- f" _+ C# y
  32. #include <linux/sysctl.h>
    0 p- M; r( Z$ A, g
  33. #include <linux/mm.h>' M- H' M! T* x* M- T2 F9 `
  34. #include <linux/dma-mapping.h>
    7 \$ U  P4 {" F! t

  35. $ s* z1 [9 t: Q2 ~0 R8 ~2 @) H
  36. #include <mach/memory.h>3 w! ^5 ~5 F0 Y& N+ f
  37. #include <mach/hardware.h>
    . X" s( y1 B& [0 G, i$ y
  38. #include <mach/irqs.h>
    : Q' y5 d* f! w" n
  39. #include <asm/hardware/edma.h>
    9 O; `* J+ V3 }' P
  40. ' r% u* u8 p% U; Z9 \2 y6 f
  41. #undef EDMA3_DEBUG+ R( J6 x- E  ]3 F( G5 y6 d
  42. /*#define EDMA3_DEBUG*/
    5 @( ]' Z. _5 f, H+ N

  43. $ b# ]6 K3 b- z0 E+ L9 o" B4 h
  44. #ifdef EDMA3_DEBUG, @) T1 ~+ l; [
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 e" m2 _$ b% n# P! o. k
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    % h; E" j( J2 m/ c! O4 t
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)$ a9 [" m, ?) B, u3 K2 K
  48. #else" B2 |8 a% W% E' @. ~9 s, r4 b
  49. #define DMA_PRINTK( x... )4 _+ w5 f  v5 d  f% W" O1 t1 ^
  50. #define DMA_FN_IN
    . f6 v' P  X5 B2 Y# E/ ^" @
  51. #define DMA_FN_OUT
    4 Y9 `3 Z% G; e7 r8 J
  52. #endif, M; I0 M4 \( }  N% }! B! \( r* ~

  53. ) ^* D2 A8 s' ]% A" u2 L# u1 B
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768); P  ^# e) G+ E* q" g( {/ _
  55. #define STATIC_SHIFT                3
    0 v( D$ S' }) C- A$ w- T2 v2 {
  56. #define TCINTEN_SHIFT               20  ^8 B1 v+ H% ?1 a
  57. #define ITCINTEN_SHIFT              21
    % f8 I' U) F6 l- J0 n
  58. #define TCCHEN_SHIFT                22
      Y6 l- c4 P* q, B! C2 O5 @% n" E* {
  59. #define ITCCHEN_SHIFT               23, l+ F2 _/ d( s7 B, W+ n/ V

  60. ; k$ U6 Q6 S" [# f" z$ v4 y- m: ^
  61. static volatile int irqraised1 = 0;
    7 R8 {8 P. A* T% p
  62. static volatile int irqraised2 = 0;
    8 t- w% o2 d' B8 A0 h
  63. 5 b4 Z& ?  p! \6 S$ Y/ A! B" V
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 l/ j2 k2 c4 j; `5 ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: t) Q) h3 d% D& K) c
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 e7 x6 ~" t3 A* u' s
  67. # }! D! C! p2 d3 B  O% U
  68. dma_addr_t dmaphyssrc1 = 0;& F% W/ l& {6 Q  U  Z* I
  69. dma_addr_t dmaphyssrc2 = 0;3 c& S+ v; u- k$ }: A9 G
  70. dma_addr_t dmaphysdest1 = 0;
    & o4 I9 n0 b/ Y- f
  71. dma_addr_t dmaphysdest2 = 0;' \% Y1 V3 C: w7 B& [, B, T
  72. ) O4 o, U* w# C2 y
  73. char *dmabufsrc1 = NULL;2 I2 _3 d- o8 ]+ R+ d
  74. char *dmabufsrc2 = NULL;+ x, f6 v1 M& U# z3 c! n$ B
  75. char *dmabufdest1 = NULL;
    5 z# }% C( I: f0 [) S
  76. char *dmabufdest2 = NULL;
    - ~, r. C. O) I# N4 A: B

  77. 9 ?( r& K+ s% V+ A9 o; P5 V
  78. static int acnt = 512;0 _. [" z4 Q% @# j9 [
  79. static int bcnt = 8;
    ) h, J* S, X( Z
  80. static int ccnt = 8;1 G2 o0 R2 m2 }( u& |$ f$ Y$ S

  81. " n  r1 K" r8 G- p/ S  j/ G% E/ a
  82. module_param(acnt, int, S_IRUGO);' u8 F+ q  F4 ?9 y/ q7 @: j
  83. module_param(bcnt, int, S_IRUGO);
    4 U# d0 u! s' U7 H# M6 I
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) }' ?: q' P' A& j5 i7 C% I* o$ `+ T1 c" k' {5 \
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
) A4 Y- z: Z7 ?# f2 t  M( U0 carm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。8 V: Q& n' e; q" X* i# }8 c
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。' d0 B1 P; |1 B" N

8 ~4 f! o8 v, E- r3 Q8 t( r* I
# I$ k# l8 ~' P) y% h5 ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-5 11:43 , Processed in 0.038631 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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