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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 q0 Y2 m2 C: e+ C
  1. [code]EDMA sample test application( a: m' P$ M5 d" d" X$ n+ y3 m
  2. /*, _" @: o; `# {) j/ T. V* t. Y% }
  3. * edma_test.c
    % W1 e& ~) n5 W% h
  4. *
    9 ^# m7 E) D3 L, f
  5. * brief  EDMA3 Test Application
      A  j1 O/ R9 p
  6. *; }) f' f$ J$ R( F. P+ b3 T( X9 V
  7. *   This file contains EDMA3 Test code.
    ) }+ T. y' j/ f2 p, ]
  8. *0 }. s, t; ]  F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    # f9 i- b) k) v% B
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! P1 y, b- S1 r: u
  11. *         TO CHANGE.5 q7 g2 S( R. Y
  12. *
    1 M( @' e0 o3 s/ ~' U
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    3 R- G5 |( s  r5 `6 x
  14. *
    # q. Z/ h  z: K
  15. * This program is free software; you can redistribute it and/or+ \% o2 N% C  @. ?3 }7 T4 K1 t
  16. * modify it under the terms of the GNU General Public License as2 e& p' @" S' m" M9 `
  17. * published by the Free Software Foundation version 2.
    2 {/ @3 v4 w; C4 r1 ?
  18. *
    ' r9 [4 u# H0 @1 Y. A! k
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any4 \" c( h/ ?2 `
  20. * kind, whether express or implied; without even the implied warranty  U7 p5 O0 ]! ]4 a
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ k# ?# H% u9 ^+ C- A1 Y- d& ^
  22. * GNU General Public License for more details.
    % F( c5 b& T+ ~- @, \: ~) J
  23. */
    9 {) Z: k8 j( X: P3 H% X- X5 H$ H
  24. 1 j' s6 ]. p# _$ X
  25. #include <linux/module.h>
    7 ?7 B9 ~$ C3 \7 X9 D* ]
  26. #include <linux/init.h>* ?2 D! ]/ r# z3 J- H. A: a0 g
  27. #include <linux/errno.h>
    ( m" |1 `# b+ l( T9 ^9 p) T% {
  28. #include <linux/types.h>5 {+ Y: T5 q6 Y! p* s% h
  29. #include <linux/interrupt.h>
    2 c$ R, t' @: b  K, n! b
  30. #include <asm/io.h>
    * ^) G, g( [8 I. W5 r
  31. #include <linux/moduleparam.h>) Y! i2 m6 @( K3 v8 N5 Y) v6 t7 M- `
  32. #include <linux/sysctl.h>; c7 h. g, q' D% Y( v
  33. #include <linux/mm.h>8 S* ?* v+ j1 z2 K8 P
  34. #include <linux/dma-mapping.h>
    / `+ R4 E" T8 }, q
  35. 1 K% E2 z' `9 a4 d
  36. #include <mach/memory.h>4 Z8 B2 C6 q. q8 }
  37. #include <mach/hardware.h>
    0 m* w# z5 c9 ]6 @
  38. #include <mach/irqs.h>
    1 o- y8 j; t7 y; j" t
  39. #include <asm/hardware/edma.h>. X0 f, W! K2 V. `

  40. % _, u( v) M% A9 g$ ?
  41. #undef EDMA3_DEBUG
    ! C3 J* }# b6 ~2 v0 I/ N. g- ~
  42. /*#define EDMA3_DEBUG*/3 ^. E# Y# N6 U& }

  43. 3 T2 [# [0 Z# {3 d
  44. #ifdef EDMA3_DEBUG
    8 M) U3 e4 C+ z3 r0 T( g
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    8 a$ E# k6 x  l! K0 V7 q
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    2 P' P# C" }# w0 `5 p$ ]  r
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)( H* Q( v- r$ _/ O, u
  48. #else
    ) y4 ^  ^1 e: T* O6 d$ \
  49. #define DMA_PRINTK( x... )$ a8 S# a: J2 A" f- X6 X
  50. #define DMA_FN_IN7 h, ?+ C, }  F. S4 T/ A
  51. #define DMA_FN_OUT
    8 R0 W9 L0 t; \% F; `
  52. #endif/ W) r, T5 \1 V* [( [, ^
  53. ) E- N% d5 ]- [5 |
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) Z$ s4 U$ y# P8 L
  55. #define STATIC_SHIFT                3
    0 y) Q$ y$ ]7 f* s+ L4 B4 e' O. K3 i  d
  56. #define TCINTEN_SHIFT               20
    % }& o- k3 b! f* ~) K; W
  57. #define ITCINTEN_SHIFT              21
    : D- @6 W. l8 z: z- B
  58. #define TCCHEN_SHIFT                227 ]3 i3 B1 \. W) ]% ~; x
  59. #define ITCCHEN_SHIFT               23
    $ e, G* Y" l( R: c

  60. % W% C. y8 R5 D, N* T3 t$ T( g, t
  61. static volatile int irqraised1 = 0;; t& k3 r/ c" Z8 H7 u0 Z1 M/ L
  62. static volatile int irqraised2 = 0;
    9 V/ W0 X6 i1 X) N# V6 b
  63. * w% J% V0 j# |. D/ s
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 V2 I+ y; k. H: X. E! r
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. D, Y$ V9 g6 N9 o5 g4 ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 O% g8 k  T2 y9 t& C  O

  67. , k6 V1 X9 T0 ~7 Y4 H
  68. dma_addr_t dmaphyssrc1 = 0;! c% v% L0 B: O: x! P4 U; |% B5 x4 C
  69. dma_addr_t dmaphyssrc2 = 0;
    ' r' |' z+ L9 B( x) H
  70. dma_addr_t dmaphysdest1 = 0;
    . p% {. @) G6 T2 E$ |; ~
  71. dma_addr_t dmaphysdest2 = 0;$ _) @6 r# [( k4 S
  72. ! d8 `% f# ~& d
  73. char *dmabufsrc1 = NULL;
    4 ?( X) u- A' U: H
  74. char *dmabufsrc2 = NULL;
    9 M' H4 T- E3 n7 U% E
  75. char *dmabufdest1 = NULL;( @7 x& J8 B# d0 S" H$ u( ]
  76. char *dmabufdest2 = NULL;
    ( r# A; y3 h7 ?6 d( A/ s
  77. # m0 S" k9 P7 g4 a
  78. static int acnt = 512;* Y8 w+ I9 u  \% X0 V
  79. static int bcnt = 8;9 _% G, D9 z8 F9 h
  80. static int ccnt = 8;' ]3 |2 m1 @  N* E
  81. ! ]0 ^4 G- @# G3 s3 A0 {
  82. module_param(acnt, int, S_IRUGO);
    . }( Z% t2 v* Q. |, P
  83. module_param(bcnt, int, S_IRUGO);; \; S  o) y/ g1 w% J! U) n
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 N: f6 e/ b# c% ~1 c
+ X2 u' ~1 b* @0 [% M0 |: k
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用4 C/ L5 G0 l% O' G% X  c" T' k# Z+ T
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- G( ?, P" i) S, S, f
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. Q+ n! |$ K/ i+ Y
! P2 R& f/ ~' T% Z& e, q9 n( \: U7 b+ K: M; v+ `' j/ z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 10:12 , Processed in 0.036757 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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