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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ! @$ D1 K3 ~' c- V$ E, K) T% G, t
  1. [code]EDMA sample test application
    ; c0 X. b% d. }) e$ l9 G
  2. /*
    ! b4 w2 v0 ]; ]
  3. * edma_test.c7 q6 @+ T9 X, I' c
  4. *
    % C" ]4 z, w7 o$ q! n
  5. * brief  EDMA3 Test Application
    # F1 V$ h0 O7 V) {
  6. *" l1 z2 \( x, i! L5 e: {6 |- }
  7. *   This file contains EDMA3 Test code.
    : h) c4 r: J; ]9 l& N- o/ n
  8. *  Q& k: A5 R7 T: i) j. W
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( }+ b( w- B/ A- E! z( v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    3 Q6 v5 J* \3 H) B7 s
  11. *         TO CHANGE.
    $ _9 X7 p7 n/ p, Q% S
  12. *
    2 `8 j) H# M/ p# q2 K1 P
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 o: u3 {* ~( y
  14. ** y  W: u5 i' S8 K7 ~' M6 @1 J' L
  15. * This program is free software; you can redistribute it and/or
    1 ^% j. p) f! a0 C. Q7 d6 O
  16. * modify it under the terms of the GNU General Public License as) p4 A! v. ^: C# k
  17. * published by the Free Software Foundation version 2.+ Y( w( H- d3 C& ^4 ?! ]) E9 E
  18. *
    , @: @/ c. F: _5 y/ r! p: E
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any+ Q! h. M) d/ X0 I8 |" N/ c
  20. * kind, whether express or implied; without even the implied warranty
    . O; Q6 r+ @1 R" |) g
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 l- Z5 c$ I1 F, H; j! V# a
  22. * GNU General Public License for more details.
    : H* l, A; ?# d: O  v- C8 s5 z
  23. */3 r5 d& _0 d$ s7 w6 U2 O) X: _* J
  24. # {9 [3 d/ s# |# G/ t8 Z3 ~3 Q. |/ x
  25. #include <linux/module.h>" V, Q, ?) a4 {! F3 o
  26. #include <linux/init.h>
    4 T# x4 J6 R. P; D) k
  27. #include <linux/errno.h>
    6 Y- B' q9 L8 V0 Z# @- p6 ]2 m
  28. #include <linux/types.h>
    ' z( w# X& F- l" U  `
  29. #include <linux/interrupt.h>
    1 c1 W. S/ e+ b/ {
  30. #include <asm/io.h>* `6 n* p: N/ [- Y2 l
  31. #include <linux/moduleparam.h>) ?1 X4 m4 T$ a& _& S3 q) I$ C
  32. #include <linux/sysctl.h>4 i- i4 H8 d4 O* f$ f% [8 N
  33. #include <linux/mm.h>, j: k. q/ W4 x' t1 J5 {* w
  34. #include <linux/dma-mapping.h>* W# P. y' [% G, {  E  y$ s0 `4 p

  35. ' }' G8 g2 @5 h3 s7 A$ _
  36. #include <mach/memory.h>. b4 X+ [4 E- U5 C# w1 I" f1 f: I
  37. #include <mach/hardware.h>
    5 h: g6 c1 j- z4 a2 ?
  38. #include <mach/irqs.h>
    0 f5 @% l! u0 V9 d) C1 g; \
  39. #include <asm/hardware/edma.h>5 O+ o3 K; z$ a8 z
  40. 7 P) R& H5 H- {% L
  41. #undef EDMA3_DEBUG1 u7 G+ v& E" F/ Z/ o
  42. /*#define EDMA3_DEBUG*/
    $ H! V# s$ K% g9 W. w5 Y* `. [
  43. * ~2 \" O0 ], N1 T0 G
  44. #ifdef EDMA3_DEBUG2 _( o0 w4 I$ b, v: q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 _$ U; B0 f0 G9 g8 u" p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)9 g, i5 I6 }9 t8 p# @* @' I/ a
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 B  r- m0 |7 \! f) ?
  48. #else6 d* B0 i6 M  `# J6 |5 _( z/ J
  49. #define DMA_PRINTK( x... )1 }4 X& s+ @) {! @
  50. #define DMA_FN_IN$ D9 N3 M. z; x' T
  51. #define DMA_FN_OUT
    $ g, p4 t: M: a2 {
  52. #endif" J/ g3 R1 q" _, o+ x6 s  }
  53. ) c  B1 A  A" [* i5 [
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) r/ R/ `4 [) f& v1 G% M- B7 ~7 [
  55. #define STATIC_SHIFT                3% m7 K3 G5 K- H0 y# V. Y
  56. #define TCINTEN_SHIFT               20
    3 ^9 D, |- L$ [  s: T& K2 Z
  57. #define ITCINTEN_SHIFT              21
    ; v' n) N3 P5 Y
  58. #define TCCHEN_SHIFT                22
    $ ?$ y) |. J9 `# @
  59. #define ITCCHEN_SHIFT               236 ], D( F% M! i3 i  i& t) l

  60. % _5 f' {/ g8 R3 D/ D7 _
  61. static volatile int irqraised1 = 0;
    . ~: k! S. K5 W- U& Q5 C
  62. static volatile int irqraised2 = 0;! K! v: P: _: f& N- k  Q( m

  63. / ?$ q- A. W8 Z: I
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    + s# W' {4 g3 E, z2 Y# S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 E; i- u, v% |9 J9 \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 M4 E: t, H' l( l2 W1 Y6 t4 Q

  67. # r7 M2 t4 m2 u  m) E5 O
  68. dma_addr_t dmaphyssrc1 = 0;* I& B5 K  N" g1 f# |4 x6 R* K
  69. dma_addr_t dmaphyssrc2 = 0;( F& F& r9 p7 j9 l6 m
  70. dma_addr_t dmaphysdest1 = 0;
    6 s. C  N; Y% |( L- O) ~
  71. dma_addr_t dmaphysdest2 = 0;
    # V( E: f: R& N8 x

  72. - D* N% z# F3 D: k( ^
  73. char *dmabufsrc1 = NULL;
    ) f( `0 W3 b, Y/ Q* v0 E
  74. char *dmabufsrc2 = NULL;& {  D8 l6 f" o; M6 X
  75. char *dmabufdest1 = NULL;
    ! f% _: n3 O1 t) Z( P9 s
  76. char *dmabufdest2 = NULL;3 [$ d! ^- z5 }

  77. 9 }$ b+ z; k. k% h
  78. static int acnt = 512;% W  q' y5 T0 E$ F
  79. static int bcnt = 8;
    - |: G$ B8 ?' q1 M) V
  80. static int ccnt = 8;) [/ o0 q! S9 h0 U$ b+ b% K

  81. ( s9 x/ L6 Q. ]4 x6 k' K1 H7 y7 Y
  82. module_param(acnt, int, S_IRUGO);" b5 B5 W3 |; Z( g# L0 ]
  83. module_param(bcnt, int, S_IRUGO);3 |6 [- [! ^0 V( k9 l) A
  84. module_param(ccnt, int, S_IRUGO);
复制代码
' `5 _% Z& V& u% q
& q! H* e  R6 i7 D) H1 ~9 n
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
7 `) c2 u; b' y' l; r. farm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) z" V6 I( m7 z3 g8 z     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  Q5 O0 z1 D0 V9 B

% Y  f, R. P7 O0 W3 P# f* a0 Y. x+ S* Y) j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-7 07:52 , Processed in 0.042728 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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