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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 0 h# Q3 S+ s  F$ m" L6 X& b2 }
  1. [code]EDMA sample test application* f! a$ A3 x+ ^
  2. /*
    8 |+ X/ s1 N: J1 `5 w1 P) A
  3. * edma_test.c
    " {. l1 r0 B! M( V7 x
  4. *9 z9 {& W: u4 ~  H- n. c- n6 |
  5. * brief  EDMA3 Test Application
    # L* Q/ |" q" f6 ?2 j1 h+ z# @
  6. *2 r8 t. y* Q3 p7 S
  7. *   This file contains EDMA3 Test code.) W3 X& d* c, I* H  O  [
  8. *
    , T4 g3 u& w% d6 V6 _8 H9 W& T1 f: w
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    " W' \0 W9 W4 l8 |8 ^$ ?
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT4 i/ V% L0 S- K& X) F( \  ?# X0 u
  11. *         TO CHANGE.
    : N  m5 h) U# k6 i6 l- T, r# E
  12. *% \9 k+ H, X5 f( C9 u0 z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/3 t0 h2 J+ ~) [* Q
  14. *
    + ^$ @( B: u& c( ]
  15. * This program is free software; you can redistribute it and/or- i0 C. C3 C) n# w3 Q
  16. * modify it under the terms of the GNU General Public License as. ~( o# [) A7 o/ D& _
  17. * published by the Free Software Foundation version 2.
    $ L) _  H$ x7 S* c% v
  18. *) T: }# t3 A8 ~" m% @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    6 q/ R( F9 d% `+ P' {9 Z+ F4 n
  20. * kind, whether express or implied; without even the implied warranty
    * v1 g. T, d& L! q2 R
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the0 a' m: ^  i# Q) }: J% q) }- x
  22. * GNU General Public License for more details.
    + a# C! N! z* v+ c
  23. */
    1 _' I! Z* d, T1 b" U
  24. 0 P6 K/ u3 i( e8 S: L8 K
  25. #include <linux/module.h>3 H8 x6 L* X% l
  26. #include <linux/init.h>
    $ R" C9 i0 K! @( {# t& W0 F
  27. #include <linux/errno.h>
    " h6 G% x; r& O* u! l0 ?2 C0 I
  28. #include <linux/types.h>, W4 ?( w: ]. H' `
  29. #include <linux/interrupt.h>! k  b( F5 m, d4 b0 y
  30. #include <asm/io.h>
      O) W' A, z6 i! ~% @% f9 g
  31. #include <linux/moduleparam.h>
    - M" f6 M2 s- e- j/ ]
  32. #include <linux/sysctl.h>
    + f9 u, ?) G1 m. @
  33. #include <linux/mm.h>
    ; T- F) H4 q  E- W3 X/ R! i
  34. #include <linux/dma-mapping.h>
    3 f) ~0 ~) G# M& U7 Y5 O+ M1 ?
  35. * l+ |$ ^" i" d! U( Z
  36. #include <mach/memory.h>6 q$ _9 O$ F1 O! V( p; a  t' u
  37. #include <mach/hardware.h>% [/ e3 _0 k  M% [) R
  38. #include <mach/irqs.h>1 `- |: v& ~' i% a
  39. #include <asm/hardware/edma.h>
    % S# q. D( B% z4 X, L0 I

  40. : ~0 M1 x% x% P+ W9 _! G
  41. #undef EDMA3_DEBUG7 F* D. |4 k& B4 _( T
  42. /*#define EDMA3_DEBUG*/
    ; U: P+ Y& S) s- F% n! C

  43. ; ^& P1 @: I) m: z. @
  44. #ifdef EDMA3_DEBUG( @3 O7 L$ G' Z! T5 l2 ]
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    0 |, W3 c5 t5 G( N$ v
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - Z; R8 g/ x% R+ a) y7 @
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    , N5 Z# H9 @3 U# x  F6 g9 \$ n
  48. #else# v( h" a, Y* J9 @
  49. #define DMA_PRINTK( x... )
    " Q# f# u& _+ D5 Y4 q5 E6 t7 y) _( l
  50. #define DMA_FN_IN. `; ~. r4 p' P- s4 M# s( Q
  51. #define DMA_FN_OUT2 B) |* k2 w/ \2 u1 k6 \  n8 ~
  52. #endif. O0 c' `: g: {. g  h
  53. 5 X: L! q, x' e9 l5 T7 ~
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)7 {$ K) B5 x0 O+ |6 y; p) L5 o9 t# s
  55. #define STATIC_SHIFT                3" S) L  I1 B  v' L% S. Q
  56. #define TCINTEN_SHIFT               20
    ( M. q. J* k* B" R
  57. #define ITCINTEN_SHIFT              21
    " Y: r9 H- ?) b2 ]$ `; x* X' i1 M$ d
  58. #define TCCHEN_SHIFT                22- y. u: ^9 @2 ?' e# W7 G3 c
  59. #define ITCCHEN_SHIFT               23
    7 W" C; h& ?/ Q! K/ ?6 ]+ t0 [$ ?
  60. 5 _4 O& V/ k3 Q) |" y
  61. static volatile int irqraised1 = 0;. e3 u/ V$ w: d4 \  F
  62. static volatile int irqraised2 = 0;( M; j! t, H: |7 H! K. O- y+ ^4 ]
  63. - _  b3 x& R5 D: J- _; N4 c& L2 i
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    6 M4 W0 z6 ?+ R
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( H* H0 y" [7 H7 y4 s
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& O; _! {  S3 m

  67. . h) L8 H/ m  H9 e1 `' N
  68. dma_addr_t dmaphyssrc1 = 0;' P# R) f' M1 @8 p
  69. dma_addr_t dmaphyssrc2 = 0;0 s) `! }- x) L9 c  Q( }- B, n# g& `
  70. dma_addr_t dmaphysdest1 = 0;& k+ f$ \( I' N' _$ c
  71. dma_addr_t dmaphysdest2 = 0;( D; U5 ]& e7 I

  72. ( P5 D+ g) D( g4 E4 q( U" v# j
  73. char *dmabufsrc1 = NULL;
    1 A& m# u. W  O( A
  74. char *dmabufsrc2 = NULL;
    4 R& O- h" S& U
  75. char *dmabufdest1 = NULL;8 g, l. Z& m: n( K. z
  76. char *dmabufdest2 = NULL;  r0 L7 N1 g# d; r1 c% ^# A& p

  77. $ r6 `& L: I1 i  |2 i0 M
  78. static int acnt = 512;' I" ~5 x/ U) j
  79. static int bcnt = 8;8 S% L; s9 R: R; ?
  80. static int ccnt = 8;& i4 _; z6 u. Z+ C

  81. / @+ v4 y( E- Z: A8 ~
  82. module_param(acnt, int, S_IRUGO);4 b& n0 z% w: ?1 L' s3 C3 E
  83. module_param(bcnt, int, S_IRUGO);3 a# P1 r& p; F# N0 o' g
  84. module_param(ccnt, int, S_IRUGO);
复制代码

" P8 f+ a8 v7 {% u. q
2 P, P8 E3 j/ s3 B/ a      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
7 a$ n" I1 w' o$ Y$ S- m4 D; @  narm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。1 v: D: R- f9 r! X4 R9 L
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
* D2 Y! @. i' ?- o6 `( c, Y# b) Q: I# i2 m( W' [9 E

; J$ R4 {/ p6 ?/ j% i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-19 04:20 , Processed in 0.036679 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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