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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
+ f/ C5 a2 [- ?
  1. [code]EDMA sample test application8 ~, ?% @; Z3 e
  2. /*) O+ P  _9 a3 \  b0 a- ~+ P4 o! B
  3. * edma_test.c
    * ~1 U0 D" z4 X
  4. */ e: B7 h4 @6 g) n- b* U# f7 U
  5. * brief  EDMA3 Test Application# _9 a  Q7 R+ k7 F8 Y
  6. */ f1 ], V9 w) s
  7. *   This file contains EDMA3 Test code.
    : L3 [5 }* O- Q
  8. *% F1 g" X" T# U
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    8 |* c1 z0 q) Y( m3 h% ?  l0 |" M
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % R6 [8 q  j! K
  11. *         TO CHANGE.
    + b5 M: _, F2 p* m+ A5 E% O
  12. *
    - y2 ?" v& W5 Y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 b& o% x, g! z) A
  14. *
    3 B  @/ V  U1 H$ }0 d* {
  15. * This program is free software; you can redistribute it and/or
    ; _! Z" ~7 d' P2 o
  16. * modify it under the terms of the GNU General Public License as
    : i( R  k9 O+ z( H
  17. * published by the Free Software Foundation version 2.
    5 }, W5 @, u2 y6 ^4 N! C
  18. *" @  ~1 ^- Z" U0 Q: @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    5 A& h3 M8 f( @4 o7 }6 }( r4 H
  20. * kind, whether express or implied; without even the implied warranty+ [7 j1 e2 V* }+ O
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the; O. T! G3 Y, B4 l) Q; J
  22. * GNU General Public License for more details." ]( C8 m1 @2 U
  23. */
    5 z* o% E1 @  X1 C; f1 b/ }

  24. * L' b$ V& E+ [/ `( ^
  25. #include <linux/module.h>  P" Y' y. Y9 V6 ~( R2 U; R5 l7 p' l
  26. #include <linux/init.h>8 [' h+ L2 A" [. c! x( p( @$ L9 \
  27. #include <linux/errno.h>7 m  o2 v# o- A
  28. #include <linux/types.h>
    ( F) B4 C) h+ q' i- F' D
  29. #include <linux/interrupt.h>' w. g/ r; W2 l7 m( U8 H
  30. #include <asm/io.h>' _5 k7 s  l6 L/ b" r
  31. #include <linux/moduleparam.h>
    + B# R( c/ [5 R2 e! ?
  32. #include <linux/sysctl.h>
    ' x# k0 O2 Z$ `, E+ i$ i
  33. #include <linux/mm.h>4 U0 H5 V" U% N5 m- v
  34. #include <linux/dma-mapping.h>. d1 s/ d" j( g) F0 ?8 l: a
  35. ) c- e4 K  c% X: b: P  g
  36. #include <mach/memory.h>
    , C- G6 U) V& m/ N, x8 |
  37. #include <mach/hardware.h>3 u& K3 u. H9 F3 R, u9 V
  38. #include <mach/irqs.h>
    6 A0 _7 F; S8 Y& \5 M- o
  39. #include <asm/hardware/edma.h>
    ' e% Q# y. y0 Q' v. N
  40. ( g  m' {$ u' \$ k9 \
  41. #undef EDMA3_DEBUG2 x7 u- F2 c0 Y# |6 t; d+ m
  42. /*#define EDMA3_DEBUG*/: m4 ?" t& p7 \, _' n
  43. 0 l; ~0 K+ d9 y0 S- O, ~
  44. #ifdef EDMA3_DEBUG
    - }) e2 Q+ j) [; P2 q$ ~
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)' G3 R! G6 R+ {3 ?' B# f8 `
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)6 U+ n5 s, ?) @. ~
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)) b$ v" X' k; a% Y! ^0 g8 ~
  48. #else
    + M, F+ Z' Y! ]% ~( e
  49. #define DMA_PRINTK( x... )2 Q  Y* J: H' U  m6 l" c9 ]# r
  50. #define DMA_FN_IN1 v" k! c, w+ z
  51. #define DMA_FN_OUT
    6 {: j4 D! d, }  I$ |9 K, B
  52. #endif
    7 z5 Y7 A' @4 Y* _
  53. 8 K$ S, |4 q% ]2 s+ H
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* |4 D' U5 |" a) x" F( c
  55. #define STATIC_SHIFT                3: f* j. K; p6 w: {( I$ D3 T
  56. #define TCINTEN_SHIFT               20: h" u& F: ~. _2 _, \
  57. #define ITCINTEN_SHIFT              21
    , N; A/ S+ O8 {3 _9 T
  58. #define TCCHEN_SHIFT                22/ g! G( V' g  u; c* y/ M% X
  59. #define ITCCHEN_SHIFT               23) T0 Z: p7 E8 H7 Z* `& G

  60. 9 u  G4 }% x: b4 k2 h' d( v7 N" ]
  61. static volatile int irqraised1 = 0;
    ( P9 E; |( {6 b5 a. C$ t
  62. static volatile int irqraised2 = 0;
      c3 a2 k; \. @6 a% ?. {# t

  63.   Z- e" t* W( A
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    + m( n  \! Q. ?) S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 ^) T0 f; {+ D
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 s5 B, E5 O. X$ {$ Y( j: U
  67. 7 A) @7 g& g. a' z7 ^! L& a
  68. dma_addr_t dmaphyssrc1 = 0;
    $ s4 I* `) ~3 n: j/ ?  ~3 N% W
  69. dma_addr_t dmaphyssrc2 = 0;
    8 e4 L" G8 ^5 j
  70. dma_addr_t dmaphysdest1 = 0;3 P3 U9 `4 |, i& ^/ B
  71. dma_addr_t dmaphysdest2 = 0;3 V) N1 O/ s+ `2 `7 w

  72. % a1 E, O/ w: Q9 H% `: p* |7 ]: `% b
  73. char *dmabufsrc1 = NULL;
    # o. x) s; g9 D: n& U+ q+ R* ^2 d
  74. char *dmabufsrc2 = NULL;  g" [/ q' y$ t' {* B
  75. char *dmabufdest1 = NULL;
    ; Q+ ?( z! W5 o2 b
  76. char *dmabufdest2 = NULL;
      y5 q0 a/ s$ @1 E! e

  77. - _' Z# `3 e$ Y8 B  X. {
  78. static int acnt = 512;! i; f* L# Z! w" G6 k2 t
  79. static int bcnt = 8;  e; {9 d# z9 }5 _* x
  80. static int ccnt = 8;- F6 w0 W4 b( `9 N

  81. 7 Q' @& p( G& ^" I4 t. T4 N! \
  82. module_param(acnt, int, S_IRUGO);
    & w& ]* Y7 l- W/ ^
  83. module_param(bcnt, int, S_IRUGO);# F1 c# y, Z  X; r
  84. module_param(ccnt, int, S_IRUGO);
复制代码
! ?) |& N4 G! N

/ ~+ e+ Z8 x& F; A      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 n4 u0 ]* R0 O/ j
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' s" Z  R+ t/ j+ N
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。0 G% P$ c( ]/ R) y- [6 E

9 L4 ^* h. _9 i/ }2 {0 ^% h8 m) `" z9 P/ w9 Y0 }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-4 08:11 , Processed in 0.037710 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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