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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
8 b8 x1 U' ~5 ^- l, L7 v/ z
  1. [code]EDMA sample test application
    6 t, p: ]1 z6 V, a! e
  2. /*) o% @5 o6 {: U  ]# H" C8 c
  3. * edma_test.c( Y3 o  \- x$ W) u' R- i3 T3 \& o" t
  4. *+ {: V" A; w+ M% t4 I
  5. * brief  EDMA3 Test Application
    4 R$ t  |( C* P. X
  6. *6 {" L" s8 [1 x# P: J
  7. *   This file contains EDMA3 Test code.- y( Y2 e+ e2 N1 [. t) o
  8. *
    ) R3 H" e3 j& R; S& Z
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, U& {* G* m  j8 |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT$ ^8 M, y9 ?* E' d8 Z- L( R
  11. *         TO CHANGE.
    ( O7 W7 B/ u) `: t2 X: _% z  ~8 c
  12. *
    + i0 ~" I, s: m9 A
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! ]* N! i3 o) P& Z* a
  14. *
    ) R3 c7 X5 j& K, t0 O
  15. * This program is free software; you can redistribute it and/or" O" v. _- ^' w2 ~. O
  16. * modify it under the terms of the GNU General Public License as
    6 B0 C9 ?3 C9 S, L
  17. * published by the Free Software Foundation version 2.; s  s1 q( Z9 E
  18. *. ~1 @. l0 l! ?, W% I( B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- L5 R; \* j2 @( e
  20. * kind, whether express or implied; without even the implied warranty
    ! Y3 |; h% t( e3 H' O- z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ) \2 L7 z  n8 N! v4 p  m
  22. * GNU General Public License for more details.
      i  q- p- b4 U) M* J# l2 q, u
  23. */
    ) T0 v7 K8 }. m  ^

  24. ( _- u7 m3 H! ]5 y& T
  25. #include <linux/module.h>
    $ `  [+ B# [0 h. ]# n
  26. #include <linux/init.h>
    * _; W) i2 y) N/ u$ [* n
  27. #include <linux/errno.h>  {6 c" Q3 M) H% M, A
  28. #include <linux/types.h>
    9 j' b& Z) E8 z5 w; |; I& w* K
  29. #include <linux/interrupt.h>/ S+ E5 g$ C0 A3 R/ c6 y
  30. #include <asm/io.h>3 Z* K  C7 r& ~& S2 U$ [8 A
  31. #include <linux/moduleparam.h>
    5 V& d+ R1 s' ~* E; a" A
  32. #include <linux/sysctl.h>
    5 e  \3 X8 f8 I
  33. #include <linux/mm.h>
    0 _4 c% I# G3 E# f
  34. #include <linux/dma-mapping.h>
    ; v/ _  v5 A  d7 k
  35. 9 C& W. H$ }% c( l3 H% Y
  36. #include <mach/memory.h>
    7 _1 V( o. d8 ?+ @" i) I3 {
  37. #include <mach/hardware.h>2 t& W1 c" Y+ K8 V" n, @# D+ l3 S
  38. #include <mach/irqs.h>
    & m) r0 o9 {! P! C2 e4 D
  39. #include <asm/hardware/edma.h>( t' ]. {/ c9 b4 Q$ I) E/ q- I5 R+ S
  40. - i/ [, B8 `8 @$ `
  41. #undef EDMA3_DEBUG% x6 D1 ]" A! i
  42. /*#define EDMA3_DEBUG*/
    3 E3 Q' N  k" E; @9 C; s
  43. ) J1 V/ g/ c8 i2 D0 U/ S
  44. #ifdef EDMA3_DEBUG
    ) a$ X' D" c/ U6 [1 X6 z/ M  f7 B
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)* f( }/ X7 S/ k# s3 {# m
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)+ h4 r4 R' y7 T1 t3 l) Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)3 w1 R% u2 f/ ]& ?& e
  48. #else& `0 R! W4 Z2 i: V  L
  49. #define DMA_PRINTK( x... )$ {8 Q- k6 V& s& d1 Y
  50. #define DMA_FN_IN
    4 {9 u6 X" c* j  E3 a+ c! W% K
  51. #define DMA_FN_OUT
    4 k# Y  ?5 `+ q" ~
  52. #endif
    * m( _9 z3 O4 @
  53.   B/ w6 c& k$ f) [
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)5 z# q. r: _) K/ [4 B! _
  55. #define STATIC_SHIFT                3( ?4 r- F( S  n2 v! o) n
  56. #define TCINTEN_SHIFT               202 X. a" ~: j4 Q  ^" s% F6 k' X
  57. #define ITCINTEN_SHIFT              210 h+ x& ^0 B) S* L  O9 d8 C
  58. #define TCCHEN_SHIFT                22
    1 f5 N1 T) X: x- F2 ?, K
  59. #define ITCCHEN_SHIFT               23; a- B( W( z+ u" o) e
  60. 7 B* m4 D! O( x
  61. static volatile int irqraised1 = 0;$ H$ p: _2 L: T! A& G
  62. static volatile int irqraised2 = 0;: X! f2 E9 w5 P  {! z% c4 C

  63. 2 T6 g" a1 s. ?" R8 T# U' t
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( e# N1 ]. b$ @% K5 ~6 O$ I( N: l7 h6 ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! L" \, d6 G% j
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ C2 ~: u* ~: g  ]. ~9 m/ A7 J
  67. , O( O; s2 l+ i+ V- [$ V( U1 A
  68. dma_addr_t dmaphyssrc1 = 0;
    ' G0 [) u+ F# a0 a- K
  69. dma_addr_t dmaphyssrc2 = 0;& D& x( y* a$ b  G- ?
  70. dma_addr_t dmaphysdest1 = 0;$ B! l, p' @. O7 m& Q
  71. dma_addr_t dmaphysdest2 = 0;
      X5 j1 I% P1 ?0 b
  72. 9 i. s$ K/ U3 I6 m; i
  73. char *dmabufsrc1 = NULL;$ z4 R) s- C0 H( ~
  74. char *dmabufsrc2 = NULL;
    , ]( x  o& g  d9 d0 A  m
  75. char *dmabufdest1 = NULL;
    ) [6 B' w, }. v: Z# S# k
  76. char *dmabufdest2 = NULL;% r. a1 V' X/ Y% D- A/ ~/ z! W: C
  77. 4 j; t, d1 K5 v8 W
  78. static int acnt = 512;
    & g! l+ }: D2 b0 {5 H8 a7 Q
  79. static int bcnt = 8;
    ! F2 |# G# |6 X8 o6 x
  80. static int ccnt = 8;. [$ P, T: g+ Q3 S  E' n/ D7 _2 z+ j

  81. 3 T" s3 c/ F1 s
  82. module_param(acnt, int, S_IRUGO);
    5 z) \5 ?* c) [" s2 ]" o; m
  83. module_param(bcnt, int, S_IRUGO);8 P) @7 p3 Y* w' @: a) B* u# m
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 Y5 A! `" U' s* b0 p9 t
  T. e5 i. ]6 f, D2 j8 O
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用5 |. d" J3 h, J2 W( {3 \& d9 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
- j& j. H) q1 i' S2 g. O, b& E" A- P     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# p# X7 v& O0 }$ `
, S* w! B- ^  k' {- J4 A

, ^1 j) F% ^( ~
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-14 12:17 , Processed in 0.040166 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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