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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
9 V- _9 P: p1 ]; B( m# K" g
  1. [code]EDMA sample test application6 i# S" I( A- Y* c9 H6 d5 b+ l
  2. /*
    % n9 ^4 P% m1 C7 E, s, j/ S
  3. * edma_test.c. x* t9 o5 F3 N1 z: P: Q6 `/ H6 d# _
  4. *
    ( T5 T" [2 `% R  m3 u
  5. * brief  EDMA3 Test Application1 n6 L' F& a" N3 |1 U1 u( g. p
  6. *
    0 J2 [) O5 N& @) D4 V
  7. *   This file contains EDMA3 Test code.
    - k' F8 C- q8 W* ~4 U6 Z
  8. *
    / z  J. ~1 ^4 B
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 j, W- T$ {; F! E
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT" b, g  e7 S2 _1 o1 S- R
  11. *         TO CHANGE./ Q$ X: U; q. U
  12. *
    8 _& L( [$ W1 o- x" T
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    . E! j2 {" d9 F$ ?; c" g
  14. *
    : R3 S: |" E+ I
  15. * This program is free software; you can redistribute it and/or
    * c$ z5 S1 k2 g' h, s( ?9 W
  16. * modify it under the terms of the GNU General Public License as" z5 r. F3 w9 M+ U& y! Y) z7 z
  17. * published by the Free Software Foundation version 2.
    $ n2 ]0 [5 K0 m! K$ p
  18. *
    * S* E+ g& b  B; _: k: _
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    1 R; q8 V6 @# m, T, l
  20. * kind, whether express or implied; without even the implied warranty
    3 a. p& ^6 y) `: \& S
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    $ C! F3 }& K$ y1 Y& z
  22. * GNU General Public License for more details.) j5 g* ?# R% w: O, Z! X; _
  23. */, R0 Z) W( ~, P: |3 C( g+ s  ?
  24. 0 J3 W7 Y2 @' ~( w7 p
  25. #include <linux/module.h>
    ) H, I6 p5 W7 J. b) y
  26. #include <linux/init.h>0 t  P" Q9 m# n* x1 T* u3 Q. b
  27. #include <linux/errno.h>
    + v$ U- G, J9 ~, I6 y
  28. #include <linux/types.h>9 x, `5 A: y' b' v# L! A
  29. #include <linux/interrupt.h>
    # D% X$ k  P3 H( N
  30. #include <asm/io.h>
    ) L1 b: B! ]6 o; ]' A+ ^
  31. #include <linux/moduleparam.h>1 C% A4 W7 B/ e5 B! \" R! v& y
  32. #include <linux/sysctl.h>  P, e- q1 P- m2 e
  33. #include <linux/mm.h>
    # _; g: m7 E- I/ J
  34. #include <linux/dma-mapping.h>
    ; X1 u3 I: x! @2 a7 ]) [

  35. ) p" K) P3 n& y! i# u
  36. #include <mach/memory.h>
    , B  x1 M  b; U- |2 E5 z
  37. #include <mach/hardware.h>
    2 ^+ i  ?' K! G/ \; X/ {9 A: m
  38. #include <mach/irqs.h>
    & O, o- H3 M% r. S
  39. #include <asm/hardware/edma.h>
    " ]2 j( H  N  w/ }' Y2 g' S% r

  40. : d4 _2 s# X  X5 q  I4 T
  41. #undef EDMA3_DEBUG
    1 _& i& l1 j. n4 [
  42. /*#define EDMA3_DEBUG*/( c; d& P' b& h- t1 t
  43. ' ^7 w, V- x' ^- f
  44. #ifdef EDMA3_DEBUG
    7 w, ^' t1 x8 f0 x1 L- c, X7 e
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)9 |1 {, F# C3 R4 w) O# ]$ d
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)* f7 Q( G8 m0 Z5 T6 D
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
      `) ]" R: N* `4 F1 I+ R, _" V
  48. #else5 r, R# F/ f, [
  49. #define DMA_PRINTK( x... )) o; p. C2 [" i3 r
  50. #define DMA_FN_IN0 [( K2 b& O( e; E# j9 c
  51. #define DMA_FN_OUT% {  `+ q* u/ j- P9 R
  52. #endif' {; X, @3 G( {5 F, [0 t  f

  53. 0 i7 r) Q5 g* x7 T
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    . N' S9 M9 e4 N3 y
  55. #define STATIC_SHIFT                31 ?+ Y% [, P$ V% l9 }5 ^
  56. #define TCINTEN_SHIFT               20
    % ^) y; g7 k/ S( L) n& ~# {7 S
  57. #define ITCINTEN_SHIFT              21. N. y* A4 d* r# L5 w+ ^+ `
  58. #define TCCHEN_SHIFT                223 k; ~2 q7 ]: e* Y9 P
  59. #define ITCCHEN_SHIFT               23# K# }: l) J" r+ C: S# W
  60. 3 z' M1 J% u) ^
  61. static volatile int irqraised1 = 0;
    $ v. A$ e3 h+ X$ R0 F" W, l! v
  62. static volatile int irqraised2 = 0;  c  s1 R. ~) R, \! ~7 ?

  63. 3 O9 z; W$ Q# f3 b
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ X  |7 T/ H: D0 q5 P) ~: @
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: ?2 [9 Q' |& `: L4 D* X+ w/ m
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " p; x* ]2 P4 u& ~+ ?8 t6 Q8 J

  67. 6 D  N' n  l, Q9 f
  68. dma_addr_t dmaphyssrc1 = 0;" ?5 v" a! t4 {2 e8 t+ I
  69. dma_addr_t dmaphyssrc2 = 0;% ]- g* i: C7 K
  70. dma_addr_t dmaphysdest1 = 0;$ o5 I6 f0 o* d0 A6 e1 N
  71. dma_addr_t dmaphysdest2 = 0;
    2 X: `; O1 h+ R
  72. & a6 m" q) I( n, d1 g+ c
  73. char *dmabufsrc1 = NULL;* H3 D5 v1 Y: Y' q( Q) A( t, P) [
  74. char *dmabufsrc2 = NULL;
      B5 g! K, p8 p) v5 H; c6 T
  75. char *dmabufdest1 = NULL;
    # {- I, Y: N+ O$ B4 H% h5 R9 K2 C) V
  76. char *dmabufdest2 = NULL;
    4 F( `9 Y. L4 x. t8 i6 Q& x; T

  77. 0 s. q$ ]' V! T2 F/ u6 Q' W
  78. static int acnt = 512;1 e; H7 k9 A2 F
  79. static int bcnt = 8;9 i/ ^: W- G5 ~% q7 P
  80. static int ccnt = 8;: V% P) P+ M* G" D# ]$ _4 a
  81. $ N" C" A5 G4 |% R7 B# s& U
  82. module_param(acnt, int, S_IRUGO);
    ) u7 @1 m. A! ?, R5 M: T
  83. module_param(bcnt, int, S_IRUGO);
    0 k+ X) t6 j+ ?0 o2 k  [
  84. module_param(ccnt, int, S_IRUGO);
复制代码
- B; {! R; e! k& q
! X' `* R5 _' p
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
( O* g9 }1 v; F& t! q* z9 larm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) i' C+ `, m4 G; N0 H) f3 X' `     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 f+ `( w* i( u" V7 x& W9 `! E  X8 u) J; ^
: J9 S# X0 }9 C9 X; o7 P7 ^
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-14 09:50 , Processed in 0.041625 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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