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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 , ~: P2 m0 A5 G8 S! A1 A/ t. k
  1. [code]EDMA sample test application! X& ]% D) n5 G
  2. /*) z& W- ]( i4 X1 s% P, q/ w8 W
  3. * edma_test.c
    9 ?2 ]1 `4 Q4 S" m/ g
  4. *
    1 w9 f% {/ Q+ K7 ]
  5. * brief  EDMA3 Test Application0 I+ O" D/ h, z" K5 k! E' y; ?
  6. *
    : u) e8 a. F0 [8 G8 M5 ^9 C
  7. *   This file contains EDMA3 Test code.7 O7 u+ Q3 s1 }& ?: s" t
  8. *$ Q# b! j# M5 ~) n+ R
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, A7 v/ b  ^' _2 y5 J" D, j) I
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    # r6 f' p+ P, b, {, x
  11. *         TO CHANGE.
    , L' c) g* B4 k
  12. *
    / P1 G7 X) _$ l$ U9 ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/* d! I; D: d9 n$ B/ I
  14. *2 q0 n" t8 E+ u; s5 f  o
  15. * This program is free software; you can redistribute it and/or( f9 o& z% P" A# }0 W
  16. * modify it under the terms of the GNU General Public License as
    * s& X' R2 z0 ]! k% w& v* n
  17. * published by the Free Software Foundation version 2.
    ) e" A% }6 ^3 c* B  ^/ {4 j; f
  18. *4 j! U! @( i$ a: Q! x
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 y6 L& J) k  `, c
  20. * kind, whether express or implied; without even the implied warranty
    . K( m! h4 P: B1 I
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    ; D! f  B" V3 W& Q% |" k. T
  22. * GNU General Public License for more details.
    1 L8 Q' f# c/ I' G$ L, L
  23. */
    ! B+ F+ d3 E% ~/ C& W+ p  e! @7 t4 A0 [
  24. 2 F6 Q! b2 [: H. e4 A
  25. #include <linux/module.h>
    6 [' f0 z" q5 Y
  26. #include <linux/init.h>
    9 g  e' h" k0 Z2 I; V- }
  27. #include <linux/errno.h>
    ( P! Z% W8 |# {- g
  28. #include <linux/types.h>1 n1 z+ {4 U5 T
  29. #include <linux/interrupt.h>
    3 F" N7 S( {% t% K+ h2 ~" ~
  30. #include <asm/io.h>5 a' l6 h7 `/ V
  31. #include <linux/moduleparam.h>- m6 I8 N1 T6 n6 b
  32. #include <linux/sysctl.h>+ t7 ]% h5 H- u5 D+ ~
  33. #include <linux/mm.h>
    7 C6 h# A2 U" [
  34. #include <linux/dma-mapping.h>. w* P! C* p2 ?. Z
  35. 9 D, C5 M: f- o+ Y+ y# t- p: |# B
  36. #include <mach/memory.h>8 S9 T4 d; e6 Y( E) \6 c% v
  37. #include <mach/hardware.h>
    ' Y' E$ @7 N  @# i0 Z0 k
  38. #include <mach/irqs.h>5 Z4 s  v2 d% R" R
  39. #include <asm/hardware/edma.h>) Z3 H2 C% A1 F- D& D9 Q( Q
  40. 7 x7 g/ ?% d6 }* G6 M: ^1 L, D0 G
  41. #undef EDMA3_DEBUG
    " a( @) ]- q; W3 F. c4 G
  42. /*#define EDMA3_DEBUG*/
    * j5 c" z+ t2 ~, ]$ }8 @6 E

  43. " N4 l7 o9 L# D
  44. #ifdef EDMA3_DEBUG
    ) R2 d, ]+ Y- K8 O2 N! N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    4 c% z$ F. Q4 d$ k& O' A
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# X! H8 O* K2 i; r" j
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)+ W, L- m& R5 t$ Y7 T; j2 b
  48. #else$ E" ]* `! l: L- m% [0 A
  49. #define DMA_PRINTK( x... )
      L. ~3 S8 d* a0 e$ q. u
  50. #define DMA_FN_IN
    ; A& t2 `% _) m
  51. #define DMA_FN_OUT
    6 y7 d; n4 Y6 H/ J9 v3 L
  52. #endif1 B) T+ G( S4 d! ?' [# B
  53. ! m+ ?3 K; P8 _; N: H
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)2 A0 R6 A: }6 m) _/ f, m# B% Q
  55. #define STATIC_SHIFT                39 f9 t# m. H( p
  56. #define TCINTEN_SHIFT               20( D' }2 a$ D9 u
  57. #define ITCINTEN_SHIFT              21
    , g* R9 h7 v; g
  58. #define TCCHEN_SHIFT                229 D' A# s7 ?( V7 G4 b4 x
  59. #define ITCCHEN_SHIFT               23
    5 ~7 i- c* w& k  M1 |( Q. ^9 f" d
  60. ; ~$ {1 C8 a7 j: a: {& z
  61. static volatile int irqraised1 = 0;( M; ?: x' E+ X! h% f- A
  62. static volatile int irqraised2 = 0;
    0 U- I/ s0 h6 A; c; ]
  63. + Y/ V$ A' @3 Q  C' O4 r' |& o
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , h& s) g) v+ u# e( B$ G! N
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( u; _, `& n& t
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 o- H; m' E" g" G

  67. 0 s" I8 s6 A4 j# x5 P
  68. dma_addr_t dmaphyssrc1 = 0;
    3 e$ {! D: p: ?
  69. dma_addr_t dmaphyssrc2 = 0;
    : w/ k  k# P0 z3 |( e# x
  70. dma_addr_t dmaphysdest1 = 0;5 r8 t. h$ _; I" S* M. c# Z- z" H
  71. dma_addr_t dmaphysdest2 = 0;6 {" h( w/ G( b: i" L$ b( O
  72. ! e- `& e# \6 d
  73. char *dmabufsrc1 = NULL;- S. Q6 v5 ?1 a1 T/ ?
  74. char *dmabufsrc2 = NULL;
    ! T$ Y6 G* Q. [( b% P
  75. char *dmabufdest1 = NULL;
    # y) H5 _: f  B
  76. char *dmabufdest2 = NULL;
    * J" w7 F9 S' l4 Y" M5 I& o

  77. . }" p( w1 }# f% H
  78. static int acnt = 512;
    2 ]: y+ p( V7 u1 A+ ]# ^% P9 U
  79. static int bcnt = 8;  t0 S' Z. X: f' h" [+ U; _
  80. static int ccnt = 8;
    % J6 r9 v5 s: ]. O7 U, _4 P

  81. & b, e/ i# `: d
  82. module_param(acnt, int, S_IRUGO);
    5 R6 O  {5 r; m+ c# b) G
  83. module_param(bcnt, int, S_IRUGO);
    9 H# e) f7 p2 |: [+ |
  84. module_param(ccnt, int, S_IRUGO);
复制代码
1 ?% ?& \: e' S, f+ c8 u$ H" Z5 i
* ^8 G0 h1 K1 k- w( R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* _. H7 d  B: `2 j- d* i
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。/ E$ d3 i3 m+ |( ^( Z9 w+ E2 B- o
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
! H9 E. M, q. L1 g, U3 A' q
2 q* L9 C2 r+ A) L3 U( S0 v' s9 A
2 N( A* F) G( |; F2 F
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 09:27 , Processed in 0.040257 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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