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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- t- m# Y+ c' H2 w" n# L1 n
  1. [code]EDMA sample test application0 J, {- U0 K2 Y7 J/ f5 q6 G
  2. /*
    2 O9 H- X) x$ L: n# x$ M: {
  3. * edma_test.c
    1 }& x4 E: i$ `( w9 N: p
  4. *# \  D! R+ K2 [7 H7 y
  5. * brief  EDMA3 Test Application
    3 M2 {, ]" y1 q, z2 S0 |; ?) e
  6. *
    : h  _6 g; O# Y- c
  7. *   This file contains EDMA3 Test code.
    6 Y. @& G; M. D* D$ m/ f8 l
  8. *
    6 `( E0 }8 E2 `- F- f/ c2 T
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    7 f. S1 i! ^, Q7 d9 Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    & x7 ~2 r* h5 w; S: N# E# ?8 z
  11. *         TO CHANGE.
    ) \, M2 n5 r+ ]$ e! E8 P" T
  12. *
    # p8 |$ u- `4 Q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 J" l' y2 I) I. u% {! U
  14. *
    & h: e4 D- w, Q% A% z% C) l
  15. * This program is free software; you can redistribute it and/or
    & n2 I+ E3 p2 ]( F$ l$ G4 k1 y
  16. * modify it under the terms of the GNU General Public License as0 m& q: a4 }9 a2 F; ~$ I* X1 r
  17. * published by the Free Software Foundation version 2.
    - W5 p3 j8 C% [( I% k( u
  18. *
    8 R7 J( N& j) F4 V2 y
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    3 y7 r. V$ S; I, x2 z1 q
  20. * kind, whether express or implied; without even the implied warranty
    3 H+ d1 ~5 }! c! J
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the3 k6 p- i7 Y# A1 I8 d
  22. * GNU General Public License for more details.2 w7 y+ {3 {3 U5 m  B: f& ~
  23. */% `' [+ \. \. K. G8 g9 p

  24. % [! }5 i9 J( k1 H6 k! d! X
  25. #include <linux/module.h>2 t) g6 k) o9 D
  26. #include <linux/init.h>
      O: [2 t9 s) `% \
  27. #include <linux/errno.h>2 P( |  {3 h2 q; a3 B' y  Y
  28. #include <linux/types.h>/ e( H, M% A4 F
  29. #include <linux/interrupt.h>! n. i- \  n8 q
  30. #include <asm/io.h>) Q* V2 V4 w; [; G; y# o: E
  31. #include <linux/moduleparam.h>
    - O6 \8 C+ ~# w$ N# n
  32. #include <linux/sysctl.h>
    % \# E7 p. T4 w7 z; I
  33. #include <linux/mm.h>
      h# q4 U/ _4 s) E
  34. #include <linux/dma-mapping.h>
    4 ^( l( a+ Q- S6 H* G6 d1 F" y  `
  35. ! t. J/ v. o. O( p" b# J
  36. #include <mach/memory.h>5 Y0 [- o9 q2 N9 [% q4 a1 U
  37. #include <mach/hardware.h>
    . H: N+ [/ [; L+ E8 _; @! u4 E( B
  38. #include <mach/irqs.h>
    " ^6 s6 B6 {; C  g: ~. u
  39. #include <asm/hardware/edma.h>- H# J! Q8 U/ Q9 O" z# q. j
  40. , g  @5 {8 }; p9 O% p. O, v
  41. #undef EDMA3_DEBUG
    6 n1 k9 @9 j: [5 g7 i# S
  42. /*#define EDMA3_DEBUG*/2 C1 ?  ?0 l" S$ T
  43. % \4 J5 I# P( k* H* k, c1 p
  44. #ifdef EDMA3_DEBUG
    ' M& O) ~" N$ l2 \9 e) Y( j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( n6 i# r. b: C1 q5 R: m
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)  M* G5 t4 i7 V5 Y
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)7 j# U* [, |. D9 |# k4 K
  48. #else8 z3 [6 v5 s5 f* J/ ^; ^
  49. #define DMA_PRINTK( x... )
    5 w9 P( k% [3 z
  50. #define DMA_FN_IN1 j! O, u) v/ e9 d8 d9 N# l$ g
  51. #define DMA_FN_OUT6 \0 {9 {# U* K' B
  52. #endif
    ) ?; b% @* _1 m  J! i; D, e8 H. t! i

  53. 6 J2 d7 D( U- [0 R! A
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)0 b; m/ Z6 D4 b8 D, H( H
  55. #define STATIC_SHIFT                3( f, V) b: M" n! v& Q. U1 J$ e
  56. #define TCINTEN_SHIFT               20
    2 g1 y- \4 W! G- j4 q8 e2 |0 A9 o
  57. #define ITCINTEN_SHIFT              211 `4 f. [/ w$ y9 z; [
  58. #define TCCHEN_SHIFT                223 n+ c9 v5 O, S' Q# I3 `
  59. #define ITCCHEN_SHIFT               23
    & N& P0 \/ O& {3 d6 V4 P) n

  60. 8 [1 }0 Q1 ~) {1 |0 m4 O/ C
  61. static volatile int irqraised1 = 0;- v# @; J- x1 S. H! \
  62. static volatile int irqraised2 = 0;1 I% f  `4 x: O+ i2 e

  63. 8 A- Z% I( F& m2 ^
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) n9 p! B+ x' f; d5 T! Z
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 V3 T% ~% n* T7 C1 f
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; _( J* y2 B3 `( F0 ?

  67. 3 R2 K' l  S5 S0 B2 I% G' K: l: X
  68. dma_addr_t dmaphyssrc1 = 0;
    # C) ?$ S; V$ |/ W" ~
  69. dma_addr_t dmaphyssrc2 = 0;: R4 X8 k6 T0 ~0 a/ V0 [. L
  70. dma_addr_t dmaphysdest1 = 0;& F5 m9 W/ o: y" L% }/ H: i
  71. dma_addr_t dmaphysdest2 = 0;; C9 H: G) p8 [8 c3 N; N

  72. : L" h( K/ o4 R5 f& K' t* s* L
  73. char *dmabufsrc1 = NULL;
    + }# P' H8 z, c" n" w
  74. char *dmabufsrc2 = NULL;# \5 F: z: i4 X' `9 b( X+ ^
  75. char *dmabufdest1 = NULL;, Q& l/ \2 m, {( A" E! u
  76. char *dmabufdest2 = NULL;" u- e) x! ^6 J* Z5 [, L( g2 ~

  77. 0 G/ Z3 v8 z0 F
  78. static int acnt = 512;' n5 D# R1 n( Z: J( O
  79. static int bcnt = 8;
    . W# }  F% I, Y" a5 y
  80. static int ccnt = 8;
    + F) i- O+ K' u. t4 d9 ]& I+ h

  81. 1 I8 p% E/ T' ~! g! b
  82. module_param(acnt, int, S_IRUGO);* U6 t. I6 G9 t, y: B
  83. module_param(bcnt, int, S_IRUGO);" ~1 x5 o5 v) h2 r  @1 d2 R$ [$ D, n7 X
  84. module_param(ccnt, int, S_IRUGO);
复制代码
* q5 g7 c7 z/ o& |; g7 Z
9 G" O" o  ?# y* p2 ^' v
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用6 Z& r  D. d& B. B0 Z; n
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。5 q' K* I# s& N% I7 \! ?
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
! X' R9 H1 Z, e
  v: P1 U# p3 ^' x+ b
& T/ k2 x" ?7 Q5 p1 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-24 05:34 , Processed in 0.043349 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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