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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 t# Y7 i' D2 S6 n1 Z, M; W
  1. [code]EDMA sample test application
    1 U  L0 ]# H. O) h/ x
  2. /*
      p+ W1 a% K' U8 f# p* ]/ k( G
  3. * edma_test.c$ f5 h# R6 X, ?. `# x( q' b
  4. *
    , H9 M9 G9 N6 y$ q
  5. * brief  EDMA3 Test Application* v5 K# y' t8 J; J: _& i5 c
  6. *( g5 M! C9 c) l9 ?: }
  7. *   This file contains EDMA3 Test code.1 @/ C6 u/ d( J/ l5 R( R( U1 D& ]0 Y& m: [
  8. *
    9 u7 d' H+ K- [- |
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ a( S2 D' ^0 t: e0 X2 z
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT( A: x5 o4 l" I  j, X8 ^8 f
  11. *         TO CHANGE.
    1 U2 u9 D2 |8 A) s! j" H7 \5 t
  12. *
    # m6 C* R! W5 d* n
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    # ^* G+ j4 F, s
  14. *
    " V4 `/ q& o. b/ e
  15. * This program is free software; you can redistribute it and/or
    " C, ?) N+ |5 Q! t9 s: Y' j
  16. * modify it under the terms of the GNU General Public License as7 }- T: ~$ t7 z
  17. * published by the Free Software Foundation version 2.
    1 N/ L) G  O% g
  18. *; V2 Z/ T$ y+ H2 h5 V  a0 V
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any3 X5 x- ]8 N' X
  20. * kind, whether express or implied; without even the implied warranty  i$ h5 B0 l7 q, }3 l7 @8 z$ ?
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    " V' m$ P0 ?/ V/ y% G! s
  22. * GNU General Public License for more details.
    % i1 _: g3 q' ~8 Y$ M
  23. */* X* P; ^3 B% a
  24. / g& N  d0 k: J# Q: Y5 U
  25. #include <linux/module.h>
    / ~/ a0 Y" ~# A7 ?% D9 }" \
  26. #include <linux/init.h>& D& j" d  Y6 g8 u2 i$ Q
  27. #include <linux/errno.h>% E3 x5 l7 |) h! `% w! r% E: e
  28. #include <linux/types.h>
    & E9 C/ {, B3 \; U. o/ y( q- S
  29. #include <linux/interrupt.h>1 ?% ^) W" [! t: A' H$ I
  30. #include <asm/io.h>
    6 b' D) ^! p( `9 j( F$ `
  31. #include <linux/moduleparam.h>
    5 u+ w  p8 g, Y5 D2 O: Z- L
  32. #include <linux/sysctl.h>7 m# g' ]% x( N3 v
  33. #include <linux/mm.h>' f" d3 q1 z2 L
  34. #include <linux/dma-mapping.h>
      d$ h, c- d0 f# o8 _8 I
  35. , f" I  q1 F! m6 [! `
  36. #include <mach/memory.h>
    * t- X! F! r3 j5 x4 Q6 W5 M
  37. #include <mach/hardware.h>
    * g& B5 M/ Y' o: b6 x/ ?4 N
  38. #include <mach/irqs.h>
    6 M) z4 g4 v; N2 s' \
  39. #include <asm/hardware/edma.h>
    ) s& k- b+ R- u- V; s+ Q
  40. . e% |9 Y' I( Q% I+ S
  41. #undef EDMA3_DEBUG8 D2 H8 g5 i7 z$ r
  42. /*#define EDMA3_DEBUG*/8 q$ b6 B" U; P: Z6 E

  43. 7 l) v7 i2 |  a7 g' k! H& o  y2 P
  44. #ifdef EDMA3_DEBUG/ T9 z1 E- N4 I* Z4 {$ S2 A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    , W, F: c' Z9 |" o' [
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    $ Y# ]7 h# e8 O4 x8 L
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)2 p1 X8 E( B0 a* N$ h. D3 s& ~
  48. #else
    2 u. e9 r1 |4 a! y! t: }
  49. #define DMA_PRINTK( x... )* r4 c- p+ Q8 X4 D! v% L
  50. #define DMA_FN_IN
    3 a  _0 q( U# ^* ?% I1 q. |$ O: n
  51. #define DMA_FN_OUT
    9 s! p  l8 Q% Y' S3 z8 f
  52. #endif. q% G& p; O; |4 K1 {4 I
  53. 2 Q# i' r: q! b, p8 W  _) B8 }6 f1 Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)' z" @) c1 Y% z  O+ U
  55. #define STATIC_SHIFT                3
    0 k; u9 ^( D1 V7 d$ s& M
  56. #define TCINTEN_SHIFT               20* n- X7 |5 `/ \. q7 P
  57. #define ITCINTEN_SHIFT              21
      P" v/ Z; M- {# p" g5 w' Y: ^+ O
  58. #define TCCHEN_SHIFT                22
    + O0 c4 {4 d/ _5 q! _
  59. #define ITCCHEN_SHIFT               23* O7 S! u! i/ n7 ~( d6 P/ _. s. Z

  60. 2 @% C! K0 ?! g. d: D0 W
  61. static volatile int irqraised1 = 0;6 s7 O# e6 r( w" w7 Y! s
  62. static volatile int irqraised2 = 0;3 D4 n( }* B0 i& p  i2 I

  63. 7 r" K5 \4 R9 g  J7 I' N6 A
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ J/ t# [; E, l' V) g6 J9 G
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% i: S* m$ I# ^$ X+ H
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 `* k+ N& N$ Y6 z. j, S* t

  67. 9 h% N( g7 x! U
  68. dma_addr_t dmaphyssrc1 = 0;
    0 w3 E! \0 n) N; N3 @5 O# a# E
  69. dma_addr_t dmaphyssrc2 = 0;( I. M# Q  ~* O
  70. dma_addr_t dmaphysdest1 = 0;: j7 G6 I5 a- P+ ]: I4 B
  71. dma_addr_t dmaphysdest2 = 0;
    * ^/ c9 [. D6 B! z, K% u# X' }
  72. " U; C/ c4 O! y& P* p
  73. char *dmabufsrc1 = NULL;
    8 j! q+ f( W+ l9 B
  74. char *dmabufsrc2 = NULL;& Y" B4 [$ R- L# q9 Z
  75. char *dmabufdest1 = NULL;+ c- P* Z+ X8 K! U
  76. char *dmabufdest2 = NULL;+ {7 a( U; ?: G1 g% h, @
  77. . z+ a1 B2 G* Z
  78. static int acnt = 512;
    ' P9 X8 j& C" L3 l; P. m
  79. static int bcnt = 8;
    " t  u3 {( {" |4 d: Y$ e
  80. static int ccnt = 8;
    . j8 \; D, a4 Q6 [- U

  81. ' T) l6 I) R( f( g8 E; G
  82. module_param(acnt, int, S_IRUGO);
    ) t) `, o2 h1 G- m, x' n0 _" n! c
  83. module_param(bcnt, int, S_IRUGO);
    2 h2 t* L/ J- r# s# g, J7 u& q# q
  84. module_param(ccnt, int, S_IRUGO);
复制代码

8 S. ^! E: ]$ ~9 e9 W6 e5 I- V/ t4 O: k; N" k- u* U$ R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 M0 C3 A, `. ^- t" @4 D2 J9 B
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 |1 d! l3 I/ E  D     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% j, `: Q' k, n# {' {5 m7 V

0 Q  Q$ d5 Z, ]2 z+ Y; R( k" S! e( M4 ^2 V7 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-20 23:16 , Processed in 0.052660 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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