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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4874|回复: 0

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
发表于 2018-1-30 11:01:43 | 显示全部楼层 |阅读模式 |文章模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ' P- O3 K( \% ]& F
  1. [code]EDMA sample test application$ O# C5 d. D0 r  }3 t6 N5 r
  2. /*
    7 Y  B1 q; y0 Y6 o+ N' i
  3. * edma_test.c
    , m9 v/ |0 d8 s' i5 M
  4. *
    ! |0 f' q; k  s+ X
  5. * brief  EDMA3 Test Application
    * |9 ]; @. V  E: ~, K& t* z" ?
  6. *
    " m+ @% ^# K: I. K1 Q* G) V7 R% t
  7. *   This file contains EDMA3 Test code.( k% H( z! c! D6 I* y: ]
  8. *' |8 Y- ^6 b1 p$ S' x8 S. m4 s
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    1 p$ o: ^; ~1 k( N0 m# @# ]1 ~. _
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT: Q0 m0 B2 D3 {6 i* y6 c
  11. *         TO CHANGE.' ?2 o! n9 h" z  Q" @4 B* \
  12. *
    2 M3 W3 ~* U! \8 V  y8 e3 }& U
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    " B8 @- D9 j) r1 |; P
  14. *
    ! T2 A' @9 C4 z, A. {- g5 e* g
  15. * This program is free software; you can redistribute it and/or; W- S! l% \' W% g; v; g
  16. * modify it under the terms of the GNU General Public License as
    6 |4 ?5 T4 X. I" t$ H' E
  17. * published by the Free Software Foundation version 2.0 H; o( h4 _+ U5 ^. s
  18. *
    6 j6 M) W. ]: h/ a' O$ ?
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 }. C$ l  Z% |& X7 h4 Q4 u; F
  20. * kind, whether express or implied; without even the implied warranty
    9 S& i  I/ J9 F9 x* o8 e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4 H+ I& X( X; D% E8 H
  22. * GNU General Public License for more details.
    , E& o8 i: w/ H
  23. */
    2 L3 G2 P4 v2 B* x9 K- H
  24. 0 W/ {8 r- ^( P
  25. #include <linux/module.h>
    % h4 a$ ?* ?# n3 o2 F7 U1 ?
  26. #include <linux/init.h>. {$ G4 h' p4 u8 R. G$ ?" s, @
  27. #include <linux/errno.h>
    . {& p( V1 M5 C. `  u
  28. #include <linux/types.h>
    : E9 Q' k; V7 W5 A' c% b
  29. #include <linux/interrupt.h>
    & D# j1 }2 |2 K4 P1 K+ |% z4 P
  30. #include <asm/io.h>
    # g! A6 C$ x& g- x0 D' f3 C$ S
  31. #include <linux/moduleparam.h>
    ; t' v7 U$ x2 s
  32. #include <linux/sysctl.h>" p5 ?/ Q- ^) L! b
  33. #include <linux/mm.h>8 r! ]& Z, s- i8 b
  34. #include <linux/dma-mapping.h>
    " W. n5 o  o7 s3 D
  35. % [8 C2 D; p9 u( I
  36. #include <mach/memory.h>
    4 t) ~% T0 c9 ?6 I3 Z+ P5 K7 A( q
  37. #include <mach/hardware.h>9 _8 C! a! L5 {& u& k. i
  38. #include <mach/irqs.h># r: \, j' a1 C/ l6 w/ y2 M
  39. #include <asm/hardware/edma.h>
    % N4 j; z, D' q  q

  40. $ }3 I7 _3 H7 L: y/ e3 o7 U
  41. #undef EDMA3_DEBUG
    ! B$ W% B, u( ?; Z+ H$ [% F
  42. /*#define EDMA3_DEBUG*/6 x6 Y) M1 s) |# V. S& m

  43. ! `0 \8 r8 X! x0 \  y/ X2 b
  44. #ifdef EDMA3_DEBUG
    ) \  b! f9 j( x) P* v0 g0 u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! J& O4 L" p% L' @3 b' N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)8 y4 w# l; ]3 |
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  o( f) N2 R& h( g
  48. #else( ^5 x/ j& g% r" m7 p
  49. #define DMA_PRINTK( x... )5 b6 r( d) H% F* m9 ?4 U6 J
  50. #define DMA_FN_IN
    & D* u) y7 }$ v) R( V  m
  51. #define DMA_FN_OUT. u- b5 @/ m7 q4 ]  j/ X
  52. #endif6 m4 u5 @" L! ]$ ]8 e! ?

  53. 6 c8 q& J. F! W, Q# x- \/ _
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)8 ~' t1 U& Q, U% h( w
  55. #define STATIC_SHIFT                3
    ! t7 _" q, h6 U7 U4 }  {
  56. #define TCINTEN_SHIFT               20
    ; h1 E- F, o$ X# Z/ G1 q
  57. #define ITCINTEN_SHIFT              21
    9 M, r; b- Y* k5 C" w8 Q! c* F
  58. #define TCCHEN_SHIFT                229 I; Q. S* g$ \' J) Z
  59. #define ITCCHEN_SHIFT               23: z6 g  X. {/ f& z4 T: y' R% Y
  60. $ N& H( T3 x5 W- f( c
  61. static volatile int irqraised1 = 0;! F+ P- G7 P3 \7 r- O# E
  62. static volatile int irqraised2 = 0;/ N9 Y7 v, i8 q, L0 h/ L

  63. - E3 n5 D/ a) ~7 Y* }3 q+ [3 M
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ h3 L- m, r1 _) b9 _9 B* t
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , L+ U- j# P$ ?% h% d
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & F, R' E1 h6 Q  v$ f' l, ?/ V8 p; J

  67. . n2 T, [! @2 j: Z! j. T* [9 G
  68. dma_addr_t dmaphyssrc1 = 0;! B7 l: K: z- ^* B- R
  69. dma_addr_t dmaphyssrc2 = 0;
    6 p! A) j2 a9 n4 u, g) s- k6 U
  70. dma_addr_t dmaphysdest1 = 0;
    $ n5 m0 c5 A8 Y7 n2 Y
  71. dma_addr_t dmaphysdest2 = 0;, S5 _) k1 k5 U

  72. ; n; Q; l6 a) ?0 o( {
  73. char *dmabufsrc1 = NULL;+ P9 D2 [$ z8 W# v( D4 s
  74. char *dmabufsrc2 = NULL;; _% x8 n& r' A$ d! @  y
  75. char *dmabufdest1 = NULL;0 j* Y! B! \+ ?5 g
  76. char *dmabufdest2 = NULL;
    1 d7 D5 W8 D) D

  77. : i& e1 T0 Z/ u  L1 p+ E
  78. static int acnt = 512;
    9 n% ]& q+ K( o9 {0 O
  79. static int bcnt = 8;
    ( A4 g# A" ~1 I- z
  80. static int ccnt = 8;
    ; d6 D7 k5 W( A; I1 H  H' Q

  81. 7 v+ m' ]! u. C
  82. module_param(acnt, int, S_IRUGO);! v0 N9 s8 H# j& _: I
  83. module_param(bcnt, int, S_IRUGO);5 M/ A1 H7 L7 e+ _3 F' U
  84. module_param(ccnt, int, S_IRUGO);
复制代码

7 u/ z) a* p  ?( h' i; V/ \: ~
3 @3 w1 A- E' X! F. L      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用- d/ `( Q1 k1 ], x" a* N. F
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。6 B0 U) T1 @1 k& a2 M# T7 R
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! K8 ~# z4 D$ c4 e  j' \' H

8 f$ e% y0 m* u. J+ y, d; J4 t: S. s# X7 T
我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励0 , 目前已有0人回答
最近访问 头像模式 列表模式
回复

使用道具 举报

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

本版积分规则  回帖提醒

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

GMT+8, 2022-12-5 00:16 , Processed in 0.066127 second(s), 32 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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