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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 * k) W  Y( u6 N2 F- \9 r& q
  1. [code]EDMA sample test application0 N+ n: f# P; d1 N" _/ c$ v
  2. /*
    # c- ], _/ {; ?1 b! x
  3. * edma_test.c
    , }8 n4 m5 H6 w; [* r
  4. *0 u5 `6 F* K# y2 F, M0 S
  5. * brief  EDMA3 Test Application; Z  J# v4 @2 q/ H4 _3 V. E
  6. *7 x7 w$ b/ \) u7 w+ _$ S9 w
  7. *   This file contains EDMA3 Test code.+ r) r7 v2 ?; e5 G5 Y  Z7 }2 ]
  8. *6 Y7 D7 M* A( C6 E
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE$ O% J5 {% y2 |- q4 H9 r6 {
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    4 J) `1 {+ b, D* \
  11. *         TO CHANGE.
    3 M; M  w4 ]; ~9 N- r" E
  12. *5 F! t* i- H3 B1 r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/" o% p( Y7 H) s
  14. *
    2 _1 c! H, I. l1 W. N
  15. * This program is free software; you can redistribute it and/or3 g+ m1 V2 H0 E: j! P& u4 B0 _
  16. * modify it under the terms of the GNU General Public License as
    . F3 K4 Z! z* s; j
  17. * published by the Free Software Foundation version 2.! ~) Q0 J$ I* r  G; ^& N: F
  18. *
    & M7 l( M% X/ I  p, X4 p5 D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any+ T0 p0 V4 @; c2 ?4 Q1 k2 \
  20. * kind, whether express or implied; without even the implied warranty
    , }0 b9 l! [' c& i5 X: l
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    6 u! Z- Q) u' r8 `  v
  22. * GNU General Public License for more details." h" G5 Q- o7 b0 V0 D0 V
  23. */; I( s3 B; f2 i# t% _2 R: W+ r- P' {
  24. # Y  E! B8 D  r0 `; Z3 M0 z% c7 ]: m
  25. #include <linux/module.h>
    4 ]+ L; m' t* z
  26. #include <linux/init.h>9 X) o) N: \' T, T1 y
  27. #include <linux/errno.h>
    ! i5 |5 m3 X$ g. G7 E  q# k* D
  28. #include <linux/types.h>
    ( ~+ l8 q& B; o' R' I# ]
  29. #include <linux/interrupt.h>9 N* \8 O- O( L7 m9 p8 q. p% p9 t
  30. #include <asm/io.h>: _  c( u4 G  i+ v) \% i) i
  31. #include <linux/moduleparam.h>- v8 k2 H' i$ i4 C! m+ }+ [; \
  32. #include <linux/sysctl.h>% q. ?* s- S  {* ^
  33. #include <linux/mm.h>
    9 m$ t6 c/ M& l3 Q4 M
  34. #include <linux/dma-mapping.h>
    " t" E; d$ C4 c0 k- A
  35. # x' J3 z/ G  e4 Q( S) Y6 L, d- H
  36. #include <mach/memory.h>! ?$ g* t1 p; V
  37. #include <mach/hardware.h>1 b" L" G& Q" a/ M% I" ~4 {1 S
  38. #include <mach/irqs.h>( M' z* D/ M; H& p5 j# b
  39. #include <asm/hardware/edma.h>
    8 s  k/ z; Z; N9 ~3 Q
  40. . Z% ?& ^  Y3 q9 b- a
  41. #undef EDMA3_DEBUG: l) P6 T( w) Y
  42. /*#define EDMA3_DEBUG*/) [/ @/ r5 z1 ~$ N( H! W

  43.   K) H' c: T. Q$ ^5 g6 y
  44. #ifdef EDMA3_DEBUG
    . Q' Q, m# c( V. Q6 c& x, q# w
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)4 v8 [2 q, \. ?3 y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)/ E7 W& U" r) [5 h
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)# B9 @, o% C! h: f4 b4 G
  48. #else
    , [/ E3 q  Q/ C/ `# |
  49. #define DMA_PRINTK( x... )
    " L4 \3 y: V. Z" H( T* P
  50. #define DMA_FN_IN
      \( W: u4 _- n9 Y+ }
  51. #define DMA_FN_OUT, |: [$ U0 i$ I9 @
  52. #endif% \) N/ E3 q/ G5 B  y
  53. $ L0 v/ ?2 l, w% n8 O  \: ~- g
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    . p0 n* N- y& k# u. [( o
  55. #define STATIC_SHIFT                3
    , B9 u# j+ |/ O1 A$ R! g
  56. #define TCINTEN_SHIFT               20
    ' B9 H1 g" z8 M- q# V
  57. #define ITCINTEN_SHIFT              21# G5 ]8 P/ h& ]  N! y6 Q/ ?! }
  58. #define TCCHEN_SHIFT                22: s6 c4 }8 A$ y0 V3 u
  59. #define ITCCHEN_SHIFT               23  B/ [8 J) O$ u9 M( Q6 E7 z

  60. + G0 _. i* G1 Z. V( ^( y9 I
  61. static volatile int irqraised1 = 0;- D9 y/ q2 d! O. N
  62. static volatile int irqraised2 = 0;
    * L" {1 ?* S' v/ ]5 F# O
  63. , h2 @5 m; \9 y9 [8 H1 K
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ V% N- h) e; o3 M/ |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , U5 P7 U/ Y5 Z0 C6 O& k! T( Q7 ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, s; l; a# i' _- I6 D
  67. 4 ?  |4 d7 ]9 {" H
  68. dma_addr_t dmaphyssrc1 = 0;
    % O& `3 Y: M$ p3 {, r
  69. dma_addr_t dmaphyssrc2 = 0;  B. G  H# a: Q: f2 l. z# H9 B
  70. dma_addr_t dmaphysdest1 = 0;3 Y0 o9 P& a- f. y, G
  71. dma_addr_t dmaphysdest2 = 0;
    ! K3 L  k7 D! B. Q

  72. $ W8 g6 \4 }2 ^9 x) x" }( y
  73. char *dmabufsrc1 = NULL;% [0 ]$ B/ `6 \  B( Q+ a7 y
  74. char *dmabufsrc2 = NULL;. ^2 O  s, ~, T7 h* h9 ^
  75. char *dmabufdest1 = NULL;
    , F( m/ A6 i9 a6 G# d3 b
  76. char *dmabufdest2 = NULL;
    1 n( x& a, y' z0 _

  77. ( B! N8 Q% ^& r! P+ l9 \7 Y
  78. static int acnt = 512;4 r7 u8 n* ^  ?& U* f
  79. static int bcnt = 8;5 M/ q9 ~0 A* \. L% ?+ a
  80. static int ccnt = 8;1 e& T9 a3 _, J- L  |- U9 S

  81. % E% d3 w' s! D) L2 C2 m2 r
  82. module_param(acnt, int, S_IRUGO);
    . x6 ~( @+ M2 k: c3 z  ]: a5 B' A
  83. module_param(bcnt, int, S_IRUGO);
    2 _5 w# Q% L8 t" m
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ l/ d2 {  p9 J0 m

) ^+ ]( a- J7 |3 J+ G      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 h5 T  Q& d4 o' O( ~3 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
; V: a) Z$ K$ A5 V, K% M     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。0 E: ^8 i4 k* y  [2 W( s7 y
1 I" d: i' `! I% w$ F2 W

0 G- W  O- k& y: L8 j1 K6 ^5 l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-5 13:49 , Processed in 0.037818 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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