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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 0 u) N% S3 |2 C# ^' }
  1. [code]EDMA sample test application) Z5 A" ~- e" m- m
  2. /*
    # x  [7 ?* I9 d  u
  3. * edma_test.c. B6 [  D8 d8 i8 @8 \" d0 j; M" k/ `
  4. *# ^' Z' C' a: |" o6 J/ u
  5. * brief  EDMA3 Test Application
    * S9 u8 t1 q* o6 y& ]: e; h
  6. *6 ~* Y- D' ^, \! p- Q
  7. *   This file contains EDMA3 Test code.7 O8 l6 P6 A0 G, O) L1 Y6 v
  8. *
    , s- c: N/ O3 k
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE4 I( b8 d7 T5 D& R. b# s$ ]: f
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT/ }0 u/ s! E+ T2 N4 h
  11. *         TO CHANGE.8 _. S8 a; W8 \. V7 I5 O
  12. *
    + T! K: S8 c" A( N, l! b( N
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 r2 C6 q1 s% \' D# `5 Y' X0 y( U
  14. *1 e0 m/ m1 X/ h8 r) j: A" D
  15. * This program is free software; you can redistribute it and/or
      f4 W+ Y  I" |" N
  16. * modify it under the terms of the GNU General Public License as* L& W' C1 f7 k' _
  17. * published by the Free Software Foundation version 2.' c. E6 Y4 N9 N" @
  18. *6 F% K9 ~1 _' X
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- W8 [" X, X; j+ ]
  20. * kind, whether express or implied; without even the implied warranty: L% X' M" K4 `5 |0 V* f9 X' a
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the1 D, J- n3 x! p; b$ w0 _
  22. * GNU General Public License for more details.5 R$ }, t; y8 O# i  L
  23. */! b0 n+ m% [# r4 i- F  B

  24. 0 B9 _; ^% ]: L
  25. #include <linux/module.h>
    & R) ?. Z+ {/ y2 a
  26. #include <linux/init.h>( p0 a1 q. B3 z9 H: h4 Q
  27. #include <linux/errno.h>
    . H/ h. w( ?5 \8 q' I
  28. #include <linux/types.h>
    % P* B/ c' f4 E3 f" m% _7 ]/ s
  29. #include <linux/interrupt.h>
    - L3 K# A" D! I0 P7 p! D/ b
  30. #include <asm/io.h>
    - e5 S8 V/ J5 R# H/ B# k' X
  31. #include <linux/moduleparam.h>
    ! [, {- ]# f! y4 Y7 o
  32. #include <linux/sysctl.h>
    6 T7 \3 ~  |  }
  33. #include <linux/mm.h>. i* P+ C( ]. a% B
  34. #include <linux/dma-mapping.h>
    * q( K1 R3 w* H: H1 K$ P& M

  35. 0 S# G$ |& k  A
  36. #include <mach/memory.h>
    ( N9 b1 O2 W0 ^+ c. m
  37. #include <mach/hardware.h>
    . s8 R: V% _1 O7 t9 O6 x3 ~
  38. #include <mach/irqs.h>
    1 a+ s1 k! t" K; a& @
  39. #include <asm/hardware/edma.h>
    . H" o8 M; t# d' g6 Y
  40. * o. D6 Y6 \0 j' F0 p8 s+ Q* n
  41. #undef EDMA3_DEBUG
    : O# s9 i: d6 w0 w
  42. /*#define EDMA3_DEBUG*/
    5 T9 J/ _$ r5 U, ^. d
  43. 4 R5 T. f% J' Y( I3 |5 w
  44. #ifdef EDMA3_DEBUG
    . C9 e$ X& u0 \! ?) A  \( A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( k! F7 o1 O/ v) i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    1 `7 o6 L9 w7 x: \5 _1 j% {8 [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& R3 ^) H1 I, ?
  48. #else2 s0 h. a' S5 l5 g* Y1 X
  49. #define DMA_PRINTK( x... )
    / |7 m; ?' u# q. Z/ H5 @- R
  50. #define DMA_FN_IN
    ( d1 L; q( ]5 l$ `
  51. #define DMA_FN_OUT* T; a: W! N5 ~
  52. #endif# w" V( @7 X/ M$ ]
  53. 0 s/ O5 O+ O) A3 a  P
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    , _! l6 r% ]6 K7 H. g& Y
  55. #define STATIC_SHIFT                35 \  X4 y: F( e& x
  56. #define TCINTEN_SHIFT               20
    ; g5 Q- q, E! k' t9 S% Q1 K
  57. #define ITCINTEN_SHIFT              21- G; I" a6 k2 o, b
  58. #define TCCHEN_SHIFT                22
    , f9 i! a6 D$ r! D
  59. #define ITCCHEN_SHIFT               23/ `/ y" ~5 P# p! ~( u% X3 U: L/ T

  60. & m! y5 E* `" G* e# K9 \
  61. static volatile int irqraised1 = 0;7 Y! d" V4 y6 c8 ~, h8 x1 U9 h0 a! r
  62. static volatile int irqraised2 = 0;
    3 D. q) T3 J1 m6 y: ?. q3 O1 v
  63. 6 A" D3 `0 W' v
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' ^5 [9 \1 W) t# k7 A
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; P2 p2 K, i9 G7 o3 J
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 \8 D$ w8 ?4 j' \

  67. 5 V9 }9 y! o' p/ }0 R  ~( K
  68. dma_addr_t dmaphyssrc1 = 0;. p  S, @: j6 O) T/ _
  69. dma_addr_t dmaphyssrc2 = 0;
    : ?! l" Y. k. H: R! r9 A+ ^
  70. dma_addr_t dmaphysdest1 = 0;
    ) C& A' x, `3 \- _
  71. dma_addr_t dmaphysdest2 = 0;% m& R3 L9 B% K2 N6 m
  72. 6 a$ `. M0 f4 x, d6 `
  73. char *dmabufsrc1 = NULL;2 z( y3 _  n& n+ g+ a1 ~
  74. char *dmabufsrc2 = NULL;5 L1 ?, I/ [4 [1 @
  75. char *dmabufdest1 = NULL;
    0 w) I1 G1 h4 m& c4 R1 c
  76. char *dmabufdest2 = NULL;
    0 i+ k- o; t  a! V

  77. " T6 P" G* t$ s" [$ t. W, A
  78. static int acnt = 512;
    , f( L: H% j+ X- K
  79. static int bcnt = 8;
    ; u  A+ s& s; g
  80. static int ccnt = 8;
    ' \+ g  `0 x$ e0 l2 U; [7 _# E, Y

  81. 1 U6 [* @, g& g& r* W
  82. module_param(acnt, int, S_IRUGO);
    # h+ S; V1 V9 @* w$ s- B/ F
  83. module_param(bcnt, int, S_IRUGO);( g  `6 L0 Y+ m2 X
  84. module_param(ccnt, int, S_IRUGO);
复制代码

2 Z3 r4 g' N: u& K2 N# O
( L7 `+ S* U# }$ Y6 `1 n      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用6 A' M- h! d0 D6 h
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。% ?/ F+ C- z: B# G& }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& i8 P- G& v) Y* t' n

" h# z4 R0 W+ K8 G! o9 \0 i) |- v5 Y! H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-4 16:50 , Processed in 0.038924 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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