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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 O  [0 l  D/ ?6 M! w8 \; n
  1. [code]EDMA sample test application
    0 M- Z7 ?9 K# V' n  k1 a) |
  2. /*
    - e/ W7 V1 e+ n' [7 m% a" S5 R
  3. * edma_test.c% {% [, L7 E+ h" b+ N/ `" L5 k
  4. *$ Y! y! z/ q. [% ?) o. E2 a
  5. * brief  EDMA3 Test Application4 C. {4 \1 [- \
  6. */ E9 A! O2 t" q& m9 i
  7. *   This file contains EDMA3 Test code.
    * T6 a5 S6 V! |2 a" w7 R( i
  8. *& ]9 p2 f- \* l1 e- M1 n
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ' H' d7 B# p: N6 A: r8 {4 q2 D
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) D/ c' D0 Z' K9 c; Q
  11. *         TO CHANGE.0 E7 x4 y0 ]' o
  12. *. F) {& F8 `: J
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    , T% T$ W0 ~+ v: }/ i
  14. *1 v9 [5 F; r* @: n5 J' o
  15. * This program is free software; you can redistribute it and/or
    5 }& c, u! |4 U! y& h
  16. * modify it under the terms of the GNU General Public License as$ U5 p/ V) h' E; G
  17. * published by the Free Software Foundation version 2.
    3 r6 s, i4 ^7 a
  18. *
    " F$ b' Y: A/ i2 n4 g' f
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; h$ m9 K; u, v1 E3 g8 v' q
  20. * kind, whether express or implied; without even the implied warranty5 ^( a0 u( r0 C" }
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* J3 \. N2 T# A% B
  22. * GNU General Public License for more details.
    7 p( G" r* F% @
  23. */
      `- ?) C: ?" z3 |2 C, y

  24. % I& w6 C8 w. G/ Z% k9 n; K
  25. #include <linux/module.h>
    & a" {. G! W- p* b' Z% ^
  26. #include <linux/init.h>
    : C8 P# b3 W& V/ I' Q  ]& j% B0 R
  27. #include <linux/errno.h>
    0 a* v- i  Z2 {* H  Z; h
  28. #include <linux/types.h>6 a# P5 J- w" _: C/ D
  29. #include <linux/interrupt.h>1 c) g# w, \- y' Y$ q
  30. #include <asm/io.h>
    6 v0 j  d& _7 C5 N
  31. #include <linux/moduleparam.h>
    - q3 `' Y/ C0 }1 C* S* q0 Z& P
  32. #include <linux/sysctl.h>0 ~2 Q* z$ c$ c- i  d8 P7 |/ X
  33. #include <linux/mm.h>  d+ P2 d6 r" N1 k2 H
  34. #include <linux/dma-mapping.h>$ `- k0 I9 x* z- T( J4 p6 U

  35. ' G6 K8 g) D% Y# C% K+ U' J. i
  36. #include <mach/memory.h>
    ( I: s" z8 p7 U
  37. #include <mach/hardware.h>
    ; d. z3 n7 c5 |' |
  38. #include <mach/irqs.h>
      G7 p( ~$ T8 O# u
  39. #include <asm/hardware/edma.h>* K! A# F- \3 e* {5 `/ D5 L3 C

  40. - A! A- L2 @) o: \: |
  41. #undef EDMA3_DEBUG
    + ]: W" t2 l* P" W: W* Z
  42. /*#define EDMA3_DEBUG*/
    : x7 L3 s$ y  w/ y% u
  43. / O( W. O4 v# y/ z- \
  44. #ifdef EDMA3_DEBUG
    " \1 |) \7 e0 a3 u4 [$ W4 q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)8 l- @6 s4 K: z& X$ u9 K5 g
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    * k0 z) T8 c( {3 O
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__). Q; r) S2 p2 t% c- J
  48. #else( Z1 n) }: S5 o# E
  49. #define DMA_PRINTK( x... )
    0 u; d/ [5 p9 d0 T3 Q* H
  50. #define DMA_FN_IN0 u& H% Q; D( o5 y( Q, D: {
  51. #define DMA_FN_OUT
    - Y* I* f. |  |% h2 f
  52. #endif: b+ {) z6 C4 \% W9 x% Z
  53. ' R9 B- D6 T; K: S. _
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ) Z  h7 O  Q. u0 @  ]0 o; Y! I4 s
  55. #define STATIC_SHIFT                3
    : d) G# R9 w& l, T
  56. #define TCINTEN_SHIFT               20
    1 @2 H+ w6 W6 R3 t/ f
  57. #define ITCINTEN_SHIFT              21- E, m: ^; l) g4 d* s
  58. #define TCCHEN_SHIFT                226 M* I# r# |+ }) w6 i) G$ L4 x
  59. #define ITCCHEN_SHIFT               23( K+ ~8 D$ }8 u1 P; y+ P/ {

  60. ; L/ Z* J# F) v6 Q9 f- d
  61. static volatile int irqraised1 = 0;( a# D- F' V# ^6 T! y7 W# m0 A
  62. static volatile int irqraised2 = 0;& P5 |$ J  s; E8 q0 m- Q- c, ^

  63. ' I  d5 j5 e' S" g
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 F- c4 U8 K9 Q$ U: P
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: A: g: B' r! X, d' d
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# s. k. w! a+ @  E
  67. / w: z) u. M7 H" C
  68. dma_addr_t dmaphyssrc1 = 0;9 y3 b% E* V5 F& |- `0 f& e
  69. dma_addr_t dmaphyssrc2 = 0;5 o2 l# J" M% N. S  F" x! a8 J$ j! x
  70. dma_addr_t dmaphysdest1 = 0;. L6 k3 P- v8 r7 ~& c# V4 a
  71. dma_addr_t dmaphysdest2 = 0;
    8 B, K& p5 A1 U+ c% Y

  72. ) Z% b5 L* H& _0 S3 D
  73. char *dmabufsrc1 = NULL;; j2 R1 ~2 A& G- q, t9 E
  74. char *dmabufsrc2 = NULL;' f5 L; D+ p. e/ r! d
  75. char *dmabufdest1 = NULL;
    3 Q: T# w& `' y/ G
  76. char *dmabufdest2 = NULL;
    7 s& k4 Q/ }/ |( p$ o( [/ r

  77. - T) @% D7 k  ]7 E
  78. static int acnt = 512;
    6 L- d4 R4 A5 z4 e9 y
  79. static int bcnt = 8;
    # H- M( S; M$ j" s' X5 E3 d+ Q: l
  80. static int ccnt = 8;+ E, }% @9 b0 C

  81. 4 `4 B( K1 m% E! e% Z4 t  h: D
  82. module_param(acnt, int, S_IRUGO);( O2 e1 j9 w! ?3 I% `. o# V4 s
  83. module_param(bcnt, int, S_IRUGO);
      h' x3 [% w/ Y2 q  q
  84. module_param(ccnt, int, S_IRUGO);
复制代码
+ A- }$ X# N$ ]/ Y! E
3 t7 ?2 j, d0 E1 ~' n
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用4 Q$ z3 F! F* ~. x$ m
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
' ~) u+ ?; Y! k  G& p9 k. N     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 a7 n% r/ z5 `" ?2 @$ F

3 ]2 n. h6 n1 G! Z
. f( ?, W- G7 ?% I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-16 09:23 , Processed in 0.041204 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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