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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ E( \" w* r6 |8 d9 \4 v
  1. [code]EDMA sample test application* d5 ~6 W" a7 R- R1 X+ K: q
  2. /*
    - Q1 h! T  j; E# M0 s2 n% z5 f
  3. * edma_test.c
    , [: g( K) E7 l: b
  4. *0 C& h1 T& A/ I' L4 m4 ^
  5. * brief  EDMA3 Test Application
    / X6 [6 j5 h2 P6 r/ G$ ~
  6. *
    - c! |/ M- ^! P% m1 ]
  7. *   This file contains EDMA3 Test code.
    : z! n  K/ P0 ?# O, J5 w
  8. *; t" |4 R8 N% s) j0 Y/ v$ h
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    & ~: M# D! i4 H
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    5 K  o) W& D4 _& a; D
  11. *         TO CHANGE.
    6 E( f( I" T, I6 x& V
  12. *& Z& q/ n' B) n2 D7 Z' k9 n) R+ ~" L
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
      }6 E9 n% F. n: w
  14. *
    * V) H1 \3 b# O  I4 H( q$ {
  15. * This program is free software; you can redistribute it and/or5 K- q$ o# H' W; X% ~# y0 G
  16. * modify it under the terms of the GNU General Public License as6 u4 m+ P4 J& [. H0 U7 k# g
  17. * published by the Free Software Foundation version 2." w/ e6 E5 u, X6 ^
  18. *2 C! D/ j  r" u2 }
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    , z3 m, d9 ]) E+ H/ Y1 Q/ e
  20. * kind, whether express or implied; without even the implied warranty; n/ c9 y( f6 N3 B5 m
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8 q8 g# G, g0 ?' p1 ^/ e7 O
  22. * GNU General Public License for more details.  y% ?: F' o$ f" ~
  23. */
    9 @$ \+ T& l( [5 W* T8 ?

  24. * x. P( O0 v1 Z0 D
  25. #include <linux/module.h>* B- a# x+ o' X: x) g- C
  26. #include <linux/init.h>
    1 X4 U5 O" f! Z: A7 r0 t
  27. #include <linux/errno.h>
    ! o$ b* A/ O$ n5 g. W- i1 {
  28. #include <linux/types.h>3 j8 Z6 m% o& y% z( u
  29. #include <linux/interrupt.h>
    $ A; Q- m! ?0 r
  30. #include <asm/io.h>
    ( u* r( B# U" K' p6 P1 K) t( Y
  31. #include <linux/moduleparam.h>
    ! t, V% s0 b' s& p; p6 a
  32. #include <linux/sysctl.h>6 x$ O; \: B, m7 G
  33. #include <linux/mm.h>
    $ d" q+ r0 t( x4 N) ]8 |- i
  34. #include <linux/dma-mapping.h>1 G# G0 D0 |# a0 d3 Q
  35. 5 i5 b! ]5 u7 n0 ?: f6 j
  36. #include <mach/memory.h>: b& u* z0 `9 M. m" T
  37. #include <mach/hardware.h>
    0 Q8 @1 {2 T0 G' P  _( T1 Y/ ?( J
  38. #include <mach/irqs.h>5 p0 g) u1 H, ]6 E
  39. #include <asm/hardware/edma.h>2 \6 h+ Y. C1 E; Q
  40. - |# }, C! N2 J+ f( j
  41. #undef EDMA3_DEBUG; b# m( Q" e0 F7 s
  42. /*#define EDMA3_DEBUG*/2 D: Y, B+ g6 q, ]$ A
  43. 1 _( w. j+ C0 Y8 P1 F% j5 w
  44. #ifdef EDMA3_DEBUG
    ! i( F- X2 j. j& c5 ~/ P0 y
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    # k) x. V+ Z  e% l6 q% L2 e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ; g& k) }5 a1 P/ _; l; E" ^- ]% x
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    " z9 b. y7 F( D
  48. #else8 s/ V) x8 I3 @( D
  49. #define DMA_PRINTK( x... )( i! r3 O& ?. k1 _0 @0 x
  50. #define DMA_FN_IN+ j2 \  \: ]7 R' Z: @
  51. #define DMA_FN_OUT# {6 ^" @/ i# s! l! [
  52. #endif6 W9 V4 [, H& l- u, l3 i

  53. - Z8 r/ ]( z' L- A+ y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    * Z3 _0 {( x5 Y$ J9 P$ D8 Z/ @' P
  55. #define STATIC_SHIFT                33 I7 l" l. w% Y8 h! v
  56. #define TCINTEN_SHIFT               20; \  `  X3 G# w  g( Z4 w9 _
  57. #define ITCINTEN_SHIFT              21
    8 Y- B+ A! c; E) W9 Q+ `
  58. #define TCCHEN_SHIFT                22
    # }$ I& L8 B# [% B" a2 p/ L4 p8 q
  59. #define ITCCHEN_SHIFT               23
    9 ~8 n* A5 |+ S
  60. $ g& M% G* N/ s( j5 A- U3 ^9 U5 @! B
  61. static volatile int irqraised1 = 0;5 h% y' I, T0 O. b4 z% O
  62. static volatile int irqraised2 = 0;
    + n! Y" Q! l6 v8 M
  63. ( w2 H& [5 C$ n2 R
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 K$ y5 P- _* u" ?
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. n0 M% f8 H& y0 }2 p" e, k# [
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* C+ ^# d1 `1 ~/ Y% M8 Q, W

  67. ; N+ O! i0 V8 ^: u- R
  68. dma_addr_t dmaphyssrc1 = 0;
    / m3 n2 U: D3 q
  69. dma_addr_t dmaphyssrc2 = 0;
    0 P" F1 C. _7 m
  70. dma_addr_t dmaphysdest1 = 0;
    & q8 P* k* O: e, o, t
  71. dma_addr_t dmaphysdest2 = 0;
    4 N, U  A" u8 L! N7 |9 ?0 s

  72. ) V. }# E7 T! I
  73. char *dmabufsrc1 = NULL;
    . W( _5 l3 o  \; h$ W1 Z
  74. char *dmabufsrc2 = NULL;
    / Q" N  m- q: k9 j* N
  75. char *dmabufdest1 = NULL;/ N* i& h2 ~; f
  76. char *dmabufdest2 = NULL;, G  U' G+ S0 r% V- J+ B6 X, K$ v

  77. / x3 o% f. Z( X' |. C; z
  78. static int acnt = 512;% K* `" R% r3 n- `# }% ?' @! r
  79. static int bcnt = 8;
    : S7 w8 M; ?0 M$ [7 x0 H, s
  80. static int ccnt = 8;3 W+ t' n. @: V' }
  81. : w& E; N8 k/ _& H
  82. module_param(acnt, int, S_IRUGO);) x) K2 c, x% E  l6 n0 V
  83. module_param(bcnt, int, S_IRUGO);
    4 I' @7 E& a/ `* e
  84. module_param(ccnt, int, S_IRUGO);
复制代码

6 Q" G0 n9 n4 w8 B' A" o, d0 P1 A+ c" \- R- p' Y
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 A5 e# s+ t# 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 a4 K: f7 U! @' ^$ L3 n
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。8 _4 |. h0 x  e! s* v

% z. {. Z7 u3 ~
0 J8 i$ o  E! F) d% Y" m+ l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 05:49 , Processed in 0.038873 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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