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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
( o" u8 b: w% f+ P7 o( u! D+ O
  1. [code]EDMA sample test application
    7 G: f+ ^6 I( p- s( E, R4 _2 c8 i" I
  2. /*
    1 r/ g* d9 S# n" T2 t8 K" L
  3. * edma_test.c( ]1 V7 U  ?1 Y, z
  4. *
    % U* W% u  C# s  @& o
  5. * brief  EDMA3 Test Application
    . q! f7 G2 O# {# H) Q
  6. *, w9 J6 x. u2 F+ Z/ E8 {8 Y" k
  7. *   This file contains EDMA3 Test code.1 x- Y# ?0 z6 r) O3 L4 y
  8. *" H, B$ L5 \" Y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    3 O3 v" b! ^6 E- b9 Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT. a. K) ], ?. a" H1 j# }
  11. *         TO CHANGE.
    , G9 A; S& U8 R+ I$ j
  12. *
    7 c# p8 ^/ L# M3 x9 Y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! D+ k& S* a" L7 s
  14. *
    3 F2 U. u/ M) g& c0 g( b" [8 F
  15. * This program is free software; you can redistribute it and/or: F/ }) F7 M8 m
  16. * modify it under the terms of the GNU General Public License as/ ^! o, S; W$ O8 {" \& `( z
  17. * published by the Free Software Foundation version 2.2 T% _/ d. o1 e$ t
  18. *
    " A* ^# @! z( V
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    % E6 M8 r- Y; J
  20. * kind, whether express or implied; without even the implied warranty
    % Y+ w2 ?' R9 n& s8 P3 _% o
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the( R/ `8 ]4 H( k3 F3 J
  22. * GNU General Public License for more details.
    ) N2 }. O4 n7 \* T& ?& o& v
  23. */1 y( `$ D4 `1 \5 d6 o9 G

  24. % M) M* W, m2 Q. X; T4 X6 Q
  25. #include <linux/module.h>/ s3 r& x2 s) \9 B% S, `# b
  26. #include <linux/init.h>1 ^" I! m5 Z+ S+ Q% n
  27. #include <linux/errno.h>+ P% L+ y" U0 o& y. \
  28. #include <linux/types.h>
    ( |8 U$ B, g3 y3 y# A& [
  29. #include <linux/interrupt.h>" ~0 x. C. A* X4 }! v
  30. #include <asm/io.h>1 T5 H* V9 `* }/ U& u
  31. #include <linux/moduleparam.h>( \2 z8 r3 i6 }$ ^! q6 i$ Q
  32. #include <linux/sysctl.h>6 N9 q6 |- T- _$ r3 K; M
  33. #include <linux/mm.h>
    9 ~" a3 R/ i! r7 S( K
  34. #include <linux/dma-mapping.h>1 E) P( J1 d/ b0 u7 N5 S% \/ @

  35. 7 z0 {9 F$ c0 ]0 v) n
  36. #include <mach/memory.h>
    " z7 l2 J/ M3 w1 |% r
  37. #include <mach/hardware.h>4 [$ P6 L( E4 O  O% ]
  38. #include <mach/irqs.h>4 ?5 {1 W) m- r
  39. #include <asm/hardware/edma.h>6 Y" f- W- A; x# J4 ]. U
  40. * [+ f% b9 W. Z
  41. #undef EDMA3_DEBUG
    / y7 b* Y2 w5 C" u( m
  42. /*#define EDMA3_DEBUG*/
    8 X5 B' C5 l3 w- _- ^9 T4 |
  43. , M* h( c. X3 V6 d- z: ]+ d
  44. #ifdef EDMA3_DEBUG
    3 O7 R) {3 ?0 B) ~
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)3 g( j7 s( ?- ?* \
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    # o3 y: J6 r5 q0 d7 [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)" k/ V. m7 P, L: u7 t+ T: S5 }
  48. #else
    ( C5 J3 y7 X' L1 K) R3 y
  49. #define DMA_PRINTK( x... )
    # j. ~9 S2 G' L& \2 X! c2 h! |) m& q
  50. #define DMA_FN_IN
    " D$ F' X5 A) R: I
  51. #define DMA_FN_OUT9 z4 w# C" w3 P% x8 j
  52. #endif4 W8 ?* O. e3 |- G1 O; ]* H* P, [4 _4 O6 G

  53. 2 E' j) z1 w8 n- @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    # J  A" `& w( A( N  V1 d
  55. #define STATIC_SHIFT                3
    - y. h8 d6 E" f! ^  G
  56. #define TCINTEN_SHIFT               20  |5 Y6 C+ o# z3 U
  57. #define ITCINTEN_SHIFT              21& \4 q! ]( }4 Y6 t8 V7 ?
  58. #define TCCHEN_SHIFT                22. Q. b9 n  G9 X' O
  59. #define ITCCHEN_SHIFT               23
    - \" q+ X7 H+ t6 p
  60. 1 G+ o4 J/ x7 T  T
  61. static volatile int irqraised1 = 0;
    9 `! A5 x9 `0 x9 n3 u. k
  62. static volatile int irqraised2 = 0;* Y. b8 D/ Z( _( i+ R5 x
  63. * b. g) U& s/ E' A, n' v4 {' r
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; T1 D! r( ]' a) O$ x
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 n9 H- w1 s6 G* {8 ]
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. E8 H' ?. P1 P$ o) D" M

  67. $ L& D7 P4 I3 O: \& b% E  w# {
  68. dma_addr_t dmaphyssrc1 = 0;
    : k9 h9 s5 I- X6 x
  69. dma_addr_t dmaphyssrc2 = 0;( s7 q* v3 G  B5 ^7 ]( M
  70. dma_addr_t dmaphysdest1 = 0;
    8 Z+ [% i+ a4 S( Z, w' v- m+ E% G
  71. dma_addr_t dmaphysdest2 = 0;* ?& m  ^, c6 R7 ~) r

  72. 8 h- z) o. W( u# z
  73. char *dmabufsrc1 = NULL;4 ^/ `( `, o6 s+ g; [) y5 I
  74. char *dmabufsrc2 = NULL;
    5 c8 Q  v3 \$ j7 ^
  75. char *dmabufdest1 = NULL;
    2 Q, ]+ Q, ^. E3 ~, t7 g
  76. char *dmabufdest2 = NULL;) g" N% K* ~& y2 R+ x% ^8 P9 a2 u

  77. $ e/ `$ O$ q/ a) g2 g
  78. static int acnt = 512;% u! K" t9 o0 H; L. R
  79. static int bcnt = 8;, [8 u* a7 {- `6 G
  80. static int ccnt = 8;
    2 a1 D2 r2 {) M# Q! b9 p
  81. : u" I5 I) T6 k" T* `" \: @
  82. module_param(acnt, int, S_IRUGO);
    + P# T) z7 T8 B
  83. module_param(bcnt, int, S_IRUGO);* Z: F5 m* L8 \' ~# z: R) W
  84. module_param(ccnt, int, S_IRUGO);
复制代码

6 E0 C3 i- @" E" d8 A: t) X; Z! D" r7 M, [: y6 J' a( K
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
. Y1 h& |( n3 X8 d3 W# b: {6 Barm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。/ T6 c. I  A- S% E# T# w- s- y4 H
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。+ `2 _, ~: a0 Q8 k0 G3 J; C( E; r
# n9 \: D+ X* E) Y- k

  q9 g) j6 k. H1 Y8 Z6 i5 I
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-7 21:55 , Processed in 0.039327 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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