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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 : x; w3 p2 A9 E% w2 a5 p
  1. [code]EDMA sample test application4 O: _6 k4 y+ ]7 e; r; H$ d& X" g
  2. /*
    7 S& P% U  `7 d8 o) A  F# p
  3. * edma_test.c
    8 R7 Z: K' u! W! A
  4. *
      Z0 x: V& _. E
  5. * brief  EDMA3 Test Application. d- I, R' u. s8 o* w
  6. *1 r$ C$ B( P0 G' O8 r/ [0 [
  7. *   This file contains EDMA3 Test code.
    ) B) m0 J  `: F, \! y' h
  8. *( s& ^) K# h) r; F  J6 y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE; ^  }5 s' v/ u# n4 m( D. z5 m7 J( x
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    9 ]* I0 D# Z( G9 v: X" Y  X
  11. *         TO CHANGE.; C. r- B5 P9 t* S
  12. *1 D# ^: H$ [3 `- J7 s
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# A9 n/ k: N5 u$ X+ B3 ?6 f0 B# b4 [
  14. *% @5 N4 J- @1 h5 n
  15. * This program is free software; you can redistribute it and/or8 t% l: o- p1 y1 I$ B9 D
  16. * modify it under the terms of the GNU General Public License as" m0 G  \  {* b
  17. * published by the Free Software Foundation version 2.
    2 a# k) G) P4 Y
  18. *
    , p3 v) H* d* Q! T
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any3 w- g2 h+ F" b( s9 O
  20. * kind, whether express or implied; without even the implied warranty3 j, s& b: d" s9 c/ _' ^  J
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8 K3 s) Z  U. I3 ^: B
  22. * GNU General Public License for more details.
    ) w# x+ Q0 P) y9 Y
  23. */+ r( t  y, V: N* z
  24. 4 K6 h& k8 s# m
  25. #include <linux/module.h>
    ( w+ @% E4 i: m% P$ D$ c  U5 t
  26. #include <linux/init.h>  d5 B4 {4 g  ^1 ^# ?1 P! S' u
  27. #include <linux/errno.h>
    ! p# Q/ {; e# r4 P; |5 i( o" d3 D* `
  28. #include <linux/types.h>. `, d4 O3 }& w3 t
  29. #include <linux/interrupt.h>
    9 v; n0 B  N* f/ r/ y6 T
  30. #include <asm/io.h>
    6 F* v+ l# r+ A. d+ |! z
  31. #include <linux/moduleparam.h>
    3 P6 j" `  {' _
  32. #include <linux/sysctl.h>
    6 v1 c% }; D% r
  33. #include <linux/mm.h>. r9 f2 Z, i) H3 ]; G6 n
  34. #include <linux/dma-mapping.h>
    " Y, G2 `: `9 S) J% _0 j5 @1 c
  35. 6 L; u! ]& R+ N
  36. #include <mach/memory.h>0 Y; r+ q) k0 K8 c3 u+ P
  37. #include <mach/hardware.h>
    & G& Q8 {0 a1 I% D! q/ S( z% K
  38. #include <mach/irqs.h>% s) l3 B3 ~. ^4 U+ E3 A; b3 u) K
  39. #include <asm/hardware/edma.h>
    + ^$ ?. W3 i" c+ v
  40. . w0 P: J& W2 V, D2 i  G3 l
  41. #undef EDMA3_DEBUG
    6 K8 g/ s0 t: [% K
  42. /*#define EDMA3_DEBUG*/
    9 V3 T5 v5 P: g( G
  43. 3 u1 p# E: ?0 O. @; O) F, v0 {; M/ P
  44. #ifdef EDMA3_DEBUG
    . f0 L/ t) M, M+ E
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)  A: x: I6 S" X  U/ r# [. Q
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ( r  q- A- I; |) }1 }. r4 B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)* ?/ A  n( C" c5 P( e  Y
  48. #else
    * a6 O  S1 Q) H) o
  49. #define DMA_PRINTK( x... )0 p5 {: q2 m1 B# {
  50. #define DMA_FN_IN: t' Z' y, ?, g) i  B. M# G
  51. #define DMA_FN_OUT
    " ]0 q- I0 i% _4 A8 ?- ^
  52. #endif/ F4 n; V2 Y1 o) b# k8 N

  53. # g3 n: x% a0 X4 K- s, |1 ?
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 t" r4 L1 J& `9 a. O
  55. #define STATIC_SHIFT                30 N7 D" k3 W1 [4 L. N% q8 O
  56. #define TCINTEN_SHIFT               20
    : u# q- R7 ?; X+ b/ U" ^0 m
  57. #define ITCINTEN_SHIFT              21
    & k9 J$ _3 J$ w4 |3 s
  58. #define TCCHEN_SHIFT                22* E- E9 B3 D2 r4 c1 Q& T: E4 P* {
  59. #define ITCCHEN_SHIFT               23
    , ?( I( r* a" X( x4 W5 b

  60. . w0 W5 g3 x6 e4 j+ F7 T
  61. static volatile int irqraised1 = 0;
    ( t5 k; y, ?  {& I8 A- B
  62. static volatile int irqraised2 = 0;& U6 e6 q2 t0 r; B
  63. 6 W- g' ?8 c; Z0 n
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , H$ z( v& t: t/ L0 h
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ L9 g0 u- ]1 R1 t0 A2 F0 o+ c
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) L5 I( f' C: d( ~( L
  67. 2 j% _/ B  E# K3 {5 I, m! ~6 g5 s
  68. dma_addr_t dmaphyssrc1 = 0;3 H0 R1 w) b+ u: G* V2 _! b! n
  69. dma_addr_t dmaphyssrc2 = 0;
    - s! s% B3 F  g# F4 h, _6 U1 D
  70. dma_addr_t dmaphysdest1 = 0;
    9 P/ h( k. K, p. _
  71. dma_addr_t dmaphysdest2 = 0;
    ' [" D$ p% H2 ~: l' Z) m0 y

  72. ' X; e" H; l: x/ R  [
  73. char *dmabufsrc1 = NULL;& o! Q+ n: L: n7 f. W
  74. char *dmabufsrc2 = NULL;3 l; N9 Z3 |6 ]- k6 `- P  N
  75. char *dmabufdest1 = NULL;# C; z* b  F, f. ~7 O6 J* ~6 L
  76. char *dmabufdest2 = NULL;" Q) h# f% I+ Q, Y

  77. 5 X2 y) z5 _% w& i7 I  r
  78. static int acnt = 512;9 U. W: i, a6 H: X
  79. static int bcnt = 8;
    ' C7 z. V5 n* B6 G7 `% C- t
  80. static int ccnt = 8;/ `. K  _- {/ s- c, E

  81. 5 a  B0 I3 }2 R% @' k: b; z# @6 W
  82. module_param(acnt, int, S_IRUGO);3 `6 s1 O' ?$ n* T) `! K' \
  83. module_param(bcnt, int, S_IRUGO);( I+ I# @: J& K+ K9 ]# q! a, I
  84. module_param(ccnt, int, S_IRUGO);
复制代码

* a* z5 ~+ M% l9 X7 Y$ H) }/ G, p! X; C0 q, u3 \
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
/ ~# d3 {3 p: t" }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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。; F9 b* i# ]: l& i
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
9 o8 _; a; J/ F3 A) C$ h) r% S
2 R8 t, J6 w* M" F0 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-4 06:29 , Processed in 0.038323 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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