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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ( p4 X5 K' M* J6 `# e) s) U& y8 g
  1. [code]EDMA sample test application' e/ D; ^4 B, ^$ K9 P3 h
  2. /*
    + m- p1 \. h) \% _; D$ B/ P
  3. * edma_test.c* v7 H) t3 H- z- E* j
  4. *
    6 H7 v7 g6 Q" C) i2 b
  5. * brief  EDMA3 Test Application, |: b. O  U! N( J9 Z
  6. ** _3 k' m6 ?1 _8 U
  7. *   This file contains EDMA3 Test code.
    ; U' J) o6 }+ S6 d
  8. *8 T' e0 M5 S2 {
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    8 N- j! H0 w9 t7 m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! }3 ^: }/ A3 d. d" r/ m
  11. *         TO CHANGE.8 a9 V7 k( x+ Z5 d7 U; u( O
  12. *7 i5 _6 v$ N& ]1 V" j: P) F
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/8 k. i* y6 H* x0 R
  14. *; Q; m: {$ J7 H4 E+ Y' b
  15. * This program is free software; you can redistribute it and/or; ]- F6 I5 F. N8 ]6 ~, O
  16. * modify it under the terms of the GNU General Public License as* u" K- F$ Y! S3 J
  17. * published by the Free Software Foundation version 2.
    - ?3 Q0 N3 B' m9 c% `
  18. *
    2 G5 m2 @, v% W" p
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any/ a3 {6 J: I9 b
  20. * kind, whether express or implied; without even the implied warranty
    ' l. G3 }. t* @3 X; u
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    & P6 t8 n: c( M
  22. * GNU General Public License for more details.
    ( l3 {, N- f1 O2 X: F6 u
  23. */1 r! o  O7 j' W

  24. ) V5 v, G& h' x
  25. #include <linux/module.h>
    $ H  ]9 R6 }5 m/ D
  26. #include <linux/init.h>" }% B9 x1 a  ?% o8 d: `) {- }
  27. #include <linux/errno.h>+ i: M5 p) M) K
  28. #include <linux/types.h>7 |- o$ ~6 l/ ^/ j
  29. #include <linux/interrupt.h>
    . @5 r3 Y$ H4 M. J. b2 j8 t
  30. #include <asm/io.h>: C& C2 s- r3 J+ m; Z' \
  31. #include <linux/moduleparam.h>
    3 }" _% }& V; j/ W* s6 i
  32. #include <linux/sysctl.h>
    9 o8 W( B! N6 P
  33. #include <linux/mm.h>( w, H( e8 C( R0 E8 D6 z( X, H
  34. #include <linux/dma-mapping.h>
    ' x+ m: F7 o8 ?8 s8 @
  35. $ ]2 i4 K* I5 F1 C4 [% K
  36. #include <mach/memory.h>
    4 p0 D6 O1 I  O# Y4 V8 h
  37. #include <mach/hardware.h>
    5 |$ ]" h5 |" I6 w; ]( r
  38. #include <mach/irqs.h>
    6 o0 i) Y3 l2 z/ x/ y
  39. #include <asm/hardware/edma.h>
    0 f, t/ M( D0 V1 t! G1 B
  40. ; C1 P0 w+ Z2 @6 D8 _
  41. #undef EDMA3_DEBUG2 b, `( b4 u" y- c" t  O) E
  42. /*#define EDMA3_DEBUG*/
    $ R/ k* e9 c$ p0 `! _

  43. 7 C3 E" q: a3 D& o
  44. #ifdef EDMA3_DEBUG
    8 B7 B) k# y9 d3 o
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)9 B( u: Y' P/ H/ ?
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)& Q# y" R" y( [+ I0 ]
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 k- U2 v  k! V8 y( T& v/ {/ L6 x# N! c
  48. #else
    ' M! ]+ K* N6 K8 S& V
  49. #define DMA_PRINTK( x... )
    ( L1 ~2 B, Y7 ?* H( f$ x
  50. #define DMA_FN_IN9 ^' u5 G2 I/ r/ o: v, {8 h
  51. #define DMA_FN_OUT
    , q0 }; ]4 ^* |
  52. #endif
    * C8 B% h; ~. V9 V6 k9 e* |' m/ z

  53. . J3 P$ h  O: {! t% m! n% ]4 \
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ( q3 w3 V% I5 k8 Q" O  \
  55. #define STATIC_SHIFT                3
    % s( G% [# S; {! m7 t5 ^
  56. #define TCINTEN_SHIFT               20) D+ y/ U+ G" m! A$ Q: N1 H2 I: Q8 F
  57. #define ITCINTEN_SHIFT              21" c9 O. H. Y8 ]5 j* u
  58. #define TCCHEN_SHIFT                22
    , y6 n7 I) }4 r& w* l( I) [
  59. #define ITCCHEN_SHIFT               23
    4 R+ o; [2 j4 Z
  60. + v2 I- l9 q+ O" ?( K. G
  61. static volatile int irqraised1 = 0;& [0 _) W1 r# z) s: I3 Z% B
  62. static volatile int irqraised2 = 0;
    5 W2 y1 [- n9 m, B' T7 c3 u5 N
  63.   ]4 T0 z) ^7 C* L9 |' z# w
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' J  x/ t/ x1 T: z- e& ^; E- S& K3 d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 U1 }4 w7 I- b: f5 T  N% T9 K- J
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 g  z" ~  n) t: t' U1 g

  67. ) P* L9 c, j# h+ B# i; c
  68. dma_addr_t dmaphyssrc1 = 0;) M: w) ^( h2 _, ^, R& Z  x, \
  69. dma_addr_t dmaphyssrc2 = 0;
      r3 U" H. y- ]8 w# c. ^6 u$ X
  70. dma_addr_t dmaphysdest1 = 0;4 ~  W1 h" F9 ^0 E" ^/ q
  71. dma_addr_t dmaphysdest2 = 0;2 P( Q4 s& }% V1 f8 Q6 [  [
  72. ; F1 P) |  N! }% B
  73. char *dmabufsrc1 = NULL;: N6 I' F- i7 {. C$ R1 G& h  _$ v0 ?2 H
  74. char *dmabufsrc2 = NULL;1 n7 c, {- s. c% O
  75. char *dmabufdest1 = NULL;
    ; g1 b. n. N3 w: U( b
  76. char *dmabufdest2 = NULL;! l5 a0 V" w4 [* a- P2 \8 G) ^

  77. 4 Z4 t" J! P8 I7 ]* f3 o7 p
  78. static int acnt = 512;
    . q! r1 b/ M( g5 O) J
  79. static int bcnt = 8;( M/ x9 C! s" d. A2 L  e1 S  T% {
  80. static int ccnt = 8;3 t( n7 ]3 D6 Q. L1 ]( y5 R4 H4 P
  81. " ], p0 |- N( V$ Q
  82. module_param(acnt, int, S_IRUGO);
    " D0 c6 T0 b' H- a
  83. module_param(bcnt, int, S_IRUGO);
    * u# N2 [# Z$ W5 }
  84. module_param(ccnt, int, S_IRUGO);
复制代码

! O" E3 X* m7 k% g% K' p
' `7 T8 p& Q* s, i  J& U4 b      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用$ |# ?/ E/ [. z/ c
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
% k$ S. ^6 u+ B; L     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" b+ ~5 y* K2 w2 _
& s0 d- k/ u" B  `, L/ X. L
0 v5 }- k: {" Q, ]0 [" i- K' R% [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-23 15:32 , Processed in 0.040837 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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