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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 # N7 `0 k: s* `" w! n
  1. [code]EDMA sample test application
    4 j4 I6 v. ~: L* M7 Z
  2. /*
    6 I6 [6 u! n) F; J* S4 H$ [3 e) @
  3. * edma_test.c: ~; E: e: Z& S9 y( C
  4. *
    ' q9 P3 K% [: R
  5. * brief  EDMA3 Test Application, q0 c; f0 b: V/ Y( J
  6. *7 o# n$ L' M+ c: E1 L- ?
  7. *   This file contains EDMA3 Test code.4 a! j, t- v' _) P! k5 e5 {2 k( ]% s
  8. *4 I; I2 Q; @8 U/ F
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE9 U0 I4 {; j0 R, q/ _+ R) ^
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    - Y. D; x; M0 t2 `8 F, `
  11. *         TO CHANGE.( q1 g* Y9 R* N' V
  12. *
    * w2 O9 X( U0 c1 b& N# W, ]$ r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com// ?; p( g7 x5 l/ W8 U% D3 V1 C, g
  14. *% Z( H, ]7 y- X3 i2 [4 _
  15. * This program is free software; you can redistribute it and/or
    # X- N6 J% S# ^6 \
  16. * modify it under the terms of the GNU General Public License as& ]# u' b1 O' m* ]$ g' Y
  17. * published by the Free Software Foundation version 2.  V6 r& S' X1 w( K
  18. *: W5 c# K1 i. D' I; S/ F# r* y
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any" E" C. D2 n$ c. L' |
  20. * kind, whether express or implied; without even the implied warranty
    % q6 W) n' [# n* I% P3 l' G
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    3 C8 c4 \9 R5 U+ V, ~2 d( g
  22. * GNU General Public License for more details.
    9 V7 d  u% s" A) p8 h0 k% s
  23. */
    " z# }% d! s0 ^9 u7 z# ^. |; h: ?
  24. # X* d; `3 b* {# C& `7 u! h& A, w
  25. #include <linux/module.h>, f5 W6 S( d8 v3 m4 e
  26. #include <linux/init.h>- G% _! E1 V$ [+ b2 `4 A* x2 S8 g
  27. #include <linux/errno.h>
    + j- j! e) X. q" u4 x# Z: h1 }% n
  28. #include <linux/types.h>3 Z. V8 L9 O0 ]; X- J  Q
  29. #include <linux/interrupt.h>3 b  d5 m# `; o
  30. #include <asm/io.h>, u5 t& p1 P5 m, N- S' h
  31. #include <linux/moduleparam.h>1 m( H  C4 G0 ~; a$ m! r" G3 X
  32. #include <linux/sysctl.h>
    ( u  T8 R: J8 ^* w
  33. #include <linux/mm.h>
    " F5 e8 }: d0 S" I$ {
  34. #include <linux/dma-mapping.h>
    # g. n! t; i$ @, A& s  p2 r1 Z

  35. 3 i# O7 f& \) x) M; k; g+ |
  36. #include <mach/memory.h>
    ' o, b) ^  n2 u0 N) ?
  37. #include <mach/hardware.h>
      W2 X0 j% h. W
  38. #include <mach/irqs.h>
      W% m* `  t5 |9 M: b; @# J
  39. #include <asm/hardware/edma.h>& H6 }3 z# ]8 m; e

  40. . U4 K& [' ~; V/ G) d. C! C
  41. #undef EDMA3_DEBUG5 G1 x5 B" l2 _' v7 R. N
  42. /*#define EDMA3_DEBUG*/
    - o/ f' M* H/ C) J; N

  43. $ y) [, i/ h' G8 M- S+ r  b
  44. #ifdef EDMA3_DEBUG% P  L" ~5 m, D: g. d
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)6 x+ r* b8 I% t( r, m$ V' S8 w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    # z7 n$ s6 K  s; O3 B0 L$ Z5 n
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)7 F6 k0 s! a3 t( A% ?! f) y
  48. #else
    2 z# Q& g/ G) R2 |1 g( y7 ?! X3 `! E* Y7 F
  49. #define DMA_PRINTK( x... )
    7 ^# r; j  s7 ^/ C' c
  50. #define DMA_FN_IN7 _$ @% q8 I5 ]
  51. #define DMA_FN_OUT  q# N+ j! W2 Z
  52. #endif
    1 r: L% S7 |) Z$ U* J

  53. * ~+ \$ q' h, U; D! R3 J/ R
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ' N) ^/ s5 k( d8 ^) s
  55. #define STATIC_SHIFT                38 V# I3 X& q) |$ T: h
  56. #define TCINTEN_SHIFT               20
    0 b5 M2 ~4 R% m, l$ z; u3 u
  57. #define ITCINTEN_SHIFT              21
    ( ]4 L. @% ^! v8 j0 ?
  58. #define TCCHEN_SHIFT                22
    $ _( Z; A3 H4 o/ ~
  59. #define ITCCHEN_SHIFT               23
    & W0 G7 g. V7 h5 c8 o& h; j

  60. & a4 X) n( \9 Y3 D) _% g
  61. static volatile int irqraised1 = 0;. ^1 k3 S7 C8 ^% n, z
  62. static volatile int irqraised2 = 0;
    * e' k' z6 a2 i' e: Z% z, u
  63. 0 M$ c" a# u; z$ X# B
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ p- D' d- A6 d8 w  B4 u
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 b& K8 @6 B1 }: u/ Q/ X$ P: Z6 C
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . b: `2 I( J  _

  67. & Y! b$ o$ d' L$ l# _( g+ C
  68. dma_addr_t dmaphyssrc1 = 0;
    / u1 |, W9 t! h1 k# R3 p3 J4 F
  69. dma_addr_t dmaphyssrc2 = 0;
    ; P  X2 L. L0 `+ k4 r
  70. dma_addr_t dmaphysdest1 = 0;) r  M+ X+ H/ I/ d) D. j+ b( ?& S6 ^
  71. dma_addr_t dmaphysdest2 = 0;+ F+ x; M' |2 L- B- t% ~2 t1 V

  72. 2 q& r  y3 x7 e" h/ T4 d
  73. char *dmabufsrc1 = NULL;
    % }  C8 [& L" M6 ]( Y8 D/ {
  74. char *dmabufsrc2 = NULL;/ ^* ?2 M! v( q7 v! h5 o
  75. char *dmabufdest1 = NULL;+ }, _' b& F% c. L3 F) i
  76. char *dmabufdest2 = NULL;
    * s! L9 U# {& X0 V$ k

  77. # ]( j2 e4 l% X1 I/ q% \
  78. static int acnt = 512;/ U9 ~' {: I! a5 r6 ~* b7 _
  79. static int bcnt = 8;: X/ C/ A- B' X6 B2 q7 f; X
  80. static int ccnt = 8;) L  E) i; t8 r, w% ?
  81. # O& u6 p: p. u5 m, M
  82. module_param(acnt, int, S_IRUGO);
    4 l1 K$ h+ Q6 b, A0 b" q4 ?
  83. module_param(bcnt, int, S_IRUGO);
    + T' {7 B. V0 R5 |& |; ~, L5 }1 i
  84. module_param(ccnt, int, S_IRUGO);
复制代码

0 o' R* a! p; ~! A: W1 B3 B) |( J! Q" ?* [
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
$ k! C; `* a! ~5 O2 y0 P0 g* \+ q- _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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。! R/ h5 L; ]& b
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。2 Q5 S7 U7 b1 H

' f+ W/ N7 E4 S6 x3 }% T3 v. W# _4 D: ^% ]% ~6 U2 V7 E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-27 14:15 , Processed in 0.037943 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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