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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ( U; T4 F5 E; v8 J* i! b# X
  1. [code]EDMA sample test application
    - ]+ {  G: |7 h3 G; H) P0 s
  2. /*
    ' b, x/ }* P* \( h7 ?
  3. * edma_test.c
    3 ~8 n) K4 l# ?! m
  4. *  M5 `* O; p, @$ U( ?2 @
  5. * brief  EDMA3 Test Application
    ! @& y8 E- h0 h; O
  6. *
    8 V$ L, T+ [- L, x/ M' U  S
  7. *   This file contains EDMA3 Test code.7 w0 I# i' Z3 D1 }( U. [
  8. *# }* `; O! i3 T, T: r
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    / g5 Q5 y  S  o- i
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ m" J3 W) b7 w6 k' u! G, n
  11. *         TO CHANGE.% U( p0 C+ m% l
  12. *9 z0 M# S' ?$ F5 e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    5 L; g& y4 m. G2 [; o) ^/ j
  14. ** G. `0 c" P+ T" H5 y" P# W, D
  15. * This program is free software; you can redistribute it and/or  p4 F8 F' D$ _% X
  16. * modify it under the terms of the GNU General Public License as
    * S  h( ]3 |( |" `. z6 M
  17. * published by the Free Software Foundation version 2.
    5 F/ ^, h4 b* d  M1 }
  18. *; u2 N, b8 v; t5 k9 E3 O: {% j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    0 h+ D5 |8 }. l* F& ^
  20. * kind, whether express or implied; without even the implied warranty1 E$ Z$ O4 X& ^. X6 e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the6 `# u9 M9 E. k, r* d
  22. * GNU General Public License for more details.
    4 i0 X$ r! p2 K) `# \9 ~6 A
  23. */5 b0 `# \5 X% k% ?3 t7 D# E" i5 L) e* h

  24. ! p7 t- E* c0 M
  25. #include <linux/module.h>
    2 k4 n# W7 p2 U& @0 H: D
  26. #include <linux/init.h>
    $ z6 u' m+ s6 K* I" x; }0 o4 z
  27. #include <linux/errno.h>
    * i; q, T" W+ _
  28. #include <linux/types.h>
    . G7 ~4 H6 g6 M% k) i
  29. #include <linux/interrupt.h>8 e4 I6 t  a" \9 ?- N8 m8 I# d7 g
  30. #include <asm/io.h>
    " J/ S- [9 E2 n, b! ?
  31. #include <linux/moduleparam.h>
    9 n- j; i3 G0 R: v
  32. #include <linux/sysctl.h>) s1 q! V8 u' a1 f* t$ f
  33. #include <linux/mm.h>8 K- |+ x0 y0 \
  34. #include <linux/dma-mapping.h>9 M2 [9 m/ y- F4 `; O

  35. $ L# y+ K/ X' B/ ~
  36. #include <mach/memory.h>
    * e  Z2 g$ ~  M/ M1 O. j0 O
  37. #include <mach/hardware.h>  p/ }  h: O4 F6 C5 P1 G6 K
  38. #include <mach/irqs.h>( r  W' z" u- m6 [5 J/ H
  39. #include <asm/hardware/edma.h>% e3 X0 O$ u$ |

  40. & [' t% v& _! r# [: }9 z
  41. #undef EDMA3_DEBUG! U6 o! y" t9 C
  42. /*#define EDMA3_DEBUG*/3 ~3 t1 U" A% _8 t5 r# v
  43. , K; V1 Y+ H4 w. z4 i" |
  44. #ifdef EDMA3_DEBUG1 E7 W8 o0 w+ N$ M. M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 w5 U  k2 D& f1 V6 @# A( e8 Z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    " q$ ]5 e$ r) F1 S
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)9 t6 k9 s$ ]0 ]# P5 p/ _! ?/ q
  48. #else7 y4 _& c: H0 k9 g
  49. #define DMA_PRINTK( x... )
    - n4 v& U1 p0 D! H* C: c$ D
  50. #define DMA_FN_IN
      {' F9 q& [+ m) q, a: Y4 L" p
  51. #define DMA_FN_OUT
    4 i0 M+ u' K6 ]2 I7 M: p
  52. #endif% C! J& `( M- z& c& t

  53. 8 [- \# _2 z% S( |
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)2 a: @: T3 k- X- b: u
  55. #define STATIC_SHIFT                3
    - {1 O& G' U( D
  56. #define TCINTEN_SHIFT               20
    # }& k5 I6 d0 H# l! a) J# l$ ^
  57. #define ITCINTEN_SHIFT              21
    5 u; R4 M; G) D( L
  58. #define TCCHEN_SHIFT                229 Y9 U, s$ h4 E/ I7 @" N
  59. #define ITCCHEN_SHIFT               23# W3 @" o2 V, L, a4 k
  60. 5 D* [: s+ y3 ~3 e5 X& E  }# k) P$ Q
  61. static volatile int irqraised1 = 0;: a0 K/ Q0 a0 P' c/ \+ d
  62. static volatile int irqraised2 = 0;
    / C; c# z2 I3 M* B, h
  63. & T/ u9 u2 w4 o4 M" W
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 E' _: v2 ^. h! ^: `
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ g: A2 I- c# \  l7 c
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 Y9 N0 B4 x* ]" E. S
  67. / s2 J6 r* Q( N0 k: m) q
  68. dma_addr_t dmaphyssrc1 = 0;5 g7 w7 O* H. S4 J
  69. dma_addr_t dmaphyssrc2 = 0;
    , N! f3 |# h- m; z  H/ \
  70. dma_addr_t dmaphysdest1 = 0;
    . @! B! m, `* O5 C* y* Q% l( o
  71. dma_addr_t dmaphysdest2 = 0;
    : c  Y2 ?  p5 V! F, [; {7 S

  72. ) ?, N4 q' P* m
  73. char *dmabufsrc1 = NULL;
    ; q( g+ P/ ]: b
  74. char *dmabufsrc2 = NULL;
    8 m; l4 ^2 Y: V0 _4 K, n
  75. char *dmabufdest1 = NULL;% @$ w7 G6 p- h# z/ k
  76. char *dmabufdest2 = NULL;( K' z. @  u7 R; q$ Y
  77. " z6 H2 ~; V7 X' z  ]- Z. G
  78. static int acnt = 512;
    6 R8 ~  X& G' }. Z% Q; v
  79. static int bcnt = 8;7 Z9 z( C/ @2 j& S3 B2 d. s
  80. static int ccnt = 8;
    % `2 z% a. C- B" @
  81. 2 T1 Z( R4 @/ t2 o  F' b3 s
  82. module_param(acnt, int, S_IRUGO);; I/ W$ v5 }3 S8 v0 v
  83. module_param(bcnt, int, S_IRUGO);; d0 g) ]- k: W/ W2 X  d; k
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 M+ V+ h1 E# G" N
, K$ `% F5 G0 e2 [
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 o0 j# O( \7 L* 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# D  v, Y7 G6 ]! ~3 T) k
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! T9 |. w+ m7 f1 n
- D' z% X3 u; L, m- d3 Y

% m* `+ @+ r- ]6 S) y8 x6 G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-25 03:50 , Processed in 0.039728 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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