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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 : E" G) ], x7 Z- B$ e; r
  1. [code]EDMA sample test application
      d% }$ M) m: O
  2. /*
    9 k% T/ l' D2 w% l1 t. i( _* o5 l
  3. * edma_test.c: ?+ S2 K) ^) L3 t5 D. j( ^  Y
  4. *0 f- h! j/ i9 Y
  5. * brief  EDMA3 Test Application
    1 b. u: _/ B# N# B9 D. o8 t
  6. */ O2 \9 @" O# D4 x" l
  7. *   This file contains EDMA3 Test code.! [! W9 F; ?# L$ \2 s' {. L
  8. ** j/ Z+ U* I+ `0 H9 M, S
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    2 @4 z3 i) d8 `$ f% |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    9 I0 W' v! w) p5 A
  11. *         TO CHANGE.9 {# I( c- n) K8 w5 e
  12. *  H/ ?/ E7 [2 T+ F/ ?
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/" Q9 {' Y5 c$ l) C( F8 X1 L
  14. *! E7 l) k% @$ B; f$ b' p. T
  15. * This program is free software; you can redistribute it and/or
    ( T/ M& `9 R/ g# j6 S
  16. * modify it under the terms of the GNU General Public License as
    # N2 P2 H+ k. z( Y% V
  17. * published by the Free Software Foundation version 2.
    # e5 F# G) N  J" ?
  18. *
    + ]. j* G( }0 v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    3 C8 l9 ?& R) M. Z
  20. * kind, whether express or implied; without even the implied warranty0 `) p* \+ \* V. W4 I
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the- B0 L7 T8 E/ p; u0 ]
  22. * GNU General Public License for more details.
    . U1 B' k' J& G6 z! J* Y
  23. */3 Q. Z+ k  `& k3 ^+ l) z

  24. & @2 U* x& t4 ]
  25. #include <linux/module.h>3 L& q& W0 u8 V  ^% S1 e5 g! y
  26. #include <linux/init.h>. N$ D; D4 @' O9 G& [
  27. #include <linux/errno.h>4 o/ |$ K6 _8 U
  28. #include <linux/types.h>
    1 }7 d, P, e5 Q; y+ W; `7 K' Q% R1 ]
  29. #include <linux/interrupt.h>
    2 N* l) {7 h) M! M# I
  30. #include <asm/io.h>6 ]- J9 L5 I2 l4 c; Q, E% m# l* B2 K8 D
  31. #include <linux/moduleparam.h>. E0 e+ v! d: B2 m: G0 c$ ?3 }  ^8 z
  32. #include <linux/sysctl.h>) G( [. w; F" }0 c! ?, b
  33. #include <linux/mm.h>& I& a* U6 j; w) T/ D& Q
  34. #include <linux/dma-mapping.h>- m$ q* _+ ?' L( a/ K# T6 A* {

  35. 4 z) [4 q6 V4 `3 T1 @' Y" \) u
  36. #include <mach/memory.h>
    ' J  d9 L5 Y1 |  b" ^% E! j) Q. p# t' u
  37. #include <mach/hardware.h>0 y: b* `" D, Y" ~. ~; X
  38. #include <mach/irqs.h>1 _# t$ c: J+ f" Q% s, |( m4 w. r
  39. #include <asm/hardware/edma.h>4 P- T+ m5 n" n. _5 P

  40. : F' l4 R9 b+ v
  41. #undef EDMA3_DEBUG) ^6 }! l3 _' p9 O3 t' o
  42. /*#define EDMA3_DEBUG*/4 A/ b3 g* b4 C5 e2 G/ j+ _
  43. ' L3 h/ r+ A: `6 J
  44. #ifdef EDMA3_DEBUG( S  N, U$ N0 D1 I3 [8 X
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    , a7 N# w6 R( l
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__). e& K( d' e* [6 |4 N' |; y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)( r" ^6 E  A7 g% b( v
  48. #else
    8 G* r6 P3 D5 l7 Q* q9 j3 o
  49. #define DMA_PRINTK( x... )
    6 {1 y( k# `* s1 }$ J
  50. #define DMA_FN_IN
    * q2 |* t: ~1 j7 f+ _
  51. #define DMA_FN_OUT3 y6 _0 o3 E' t" F, \( W4 g
  52. #endif
    2 g' J, j( i9 @# p. U

  53. : a8 Z- V3 H+ ?0 f
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; }/ O; N- v) V0 G
  55. #define STATIC_SHIFT                3
    & C3 E) Q1 \" E/ m; m9 T
  56. #define TCINTEN_SHIFT               20" z7 k; s, Y% n6 R$ D  W7 W: `3 j
  57. #define ITCINTEN_SHIFT              21# g* D/ U- J% Z3 I$ U$ @& Y4 A
  58. #define TCCHEN_SHIFT                229 A4 i  h3 y2 W2 ~& r# o" P
  59. #define ITCCHEN_SHIFT               23
    . T0 H* w* [0 B$ q4 b4 p1 Y. u
  60. ) `0 V$ x. ^0 c& P3 m: ^
  61. static volatile int irqraised1 = 0;
    ) `! P1 U/ W7 O1 a' s# c9 [8 X
  62. static volatile int irqraised2 = 0;  s# }# a+ D. q$ |* R
  63. ; ~0 K% m1 v/ e0 m
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& [- W* x0 m* ?
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & y& N, \/ [: f, A4 a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& i  x; @3 G2 U4 I8 v2 M
  67. ) C* Q: Z+ x: g/ X! r1 a/ m
  68. dma_addr_t dmaphyssrc1 = 0;
    / O9 S* v+ m* V* L7 Y
  69. dma_addr_t dmaphyssrc2 = 0;
    ( @( {$ Z1 N6 k4 |9 Y
  70. dma_addr_t dmaphysdest1 = 0;, _9 r! o# @% ]! R' C; }
  71. dma_addr_t dmaphysdest2 = 0;* g) W& s5 l6 _8 c% Z

  72. & w! F0 @! q$ P) C5 v
  73. char *dmabufsrc1 = NULL;, M% M8 y4 e& _: p- N
  74. char *dmabufsrc2 = NULL;; ]" i" E% T; B+ X# h) J4 ~
  75. char *dmabufdest1 = NULL;5 D# y( C5 \2 p
  76. char *dmabufdest2 = NULL;1 K5 e$ A' k1 Y% K4 J; o5 ^+ l5 C
  77. 4 v9 L* A4 r' E& f, f* T+ v- G/ H
  78. static int acnt = 512;9 f) d1 a2 p" s
  79. static int bcnt = 8;% E( p) a+ F- I- v7 ]1 P
  80. static int ccnt = 8;
    ' @3 f9 P4 A& ?- n% U( @

  81. $ l& U( X4 {% Y# b
  82. module_param(acnt, int, S_IRUGO);
    & T; d% d! p9 }; h, j7 J9 H' B
  83. module_param(bcnt, int, S_IRUGO);
    % P/ z. g* E: L' \5 v
  84. module_param(ccnt, int, S_IRUGO);
复制代码
0 J! z9 }- o% p. h( q( |

% t2 L! U/ b. r1 u      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
) u; S* k; L; I( Z% y5 g$ s" u! Barm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
- J! j: w! G9 ?% N! w     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, D4 C2 X9 c& t6 ]5 G" I

" l/ @+ D3 R5 H% P) y  z# B
# b! h: R  T' @. }5 z* K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 20:08 , Processed in 0.038475 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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