OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站
点击跳转“创龙科技服务通”

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
$ x! e/ k  h' o( X% Y$ _% W- s
  1. [code]EDMA sample test application( o. r4 A) y! _" ~( ?+ _, D! E% F
  2. /*8 @) c. |' O  M- t3 L
  3. * edma_test.c6 H+ U; v' L/ k) l, m# _' u. h
  4. *
    , J' e; o+ Y2 E# c* j
  5. * brief  EDMA3 Test Application5 h, u7 M1 k8 }. r' u- M
  6. *
    ' C1 |# V8 c2 m( X2 W# }* G7 o
  7. *   This file contains EDMA3 Test code.& O* s+ B+ n' |: h+ V
  8. *8 W( f$ C* C- L! I
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE* o6 v2 n3 j+ d& `$ o
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    6 f2 l0 p# {0 n# W
  11. *         TO CHANGE.
    0 N$ V1 x+ n' K( J6 k1 L. R9 {, P
  12. */ f5 r5 U9 ^0 R8 U5 [8 f+ ?' {( ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    / Y' f1 S2 F0 c3 ]9 q0 k, e) y" T' [. r
  14. *
    1 H; f) q/ o6 y- Y
  15. * This program is free software; you can redistribute it and/or6 f6 {! {" N. J
  16. * modify it under the terms of the GNU General Public License as
    9 H0 g' ~% _! w8 {5 }9 z! F" t
  17. * published by the Free Software Foundation version 2.! q1 l5 s8 \3 g5 ~' I' @
  18. *0 A* s- G6 h) H6 B' J$ o3 E5 L# j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + p, |& c6 ]' E: O. c. F
  20. * kind, whether express or implied; without even the implied warranty! V9 H" _! D' d6 N7 F7 o
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 V$ T# b$ N! t) p$ X
  22. * GNU General Public License for more details.  k8 Q  S% s! x3 X
  23. */) ]( _  _6 T  ?6 p# m

  24. - t9 X4 y5 m4 ]
  25. #include <linux/module.h>
    4 P- D  v6 ^/ U* z7 g
  26. #include <linux/init.h>
    4 o4 `; s: @" j6 t( T6 |" ?8 P. ^
  27. #include <linux/errno.h>! R. a( s% A1 y  _7 e. c
  28. #include <linux/types.h>
    " \; V$ I+ [/ F& P, F1 \0 Q; [9 N, i
  29. #include <linux/interrupt.h>5 X  x% K- x# w( l! P# d# R" m$ B
  30. #include <asm/io.h>+ |: o9 M' k! G. x$ P9 E% ^
  31. #include <linux/moduleparam.h>
    0 z; F3 }' e2 ^% P! N- s  k" j( O
  32. #include <linux/sysctl.h>
    5 y: p3 J1 p. t; L
  33. #include <linux/mm.h>
    ( x; ]8 Q. s& o
  34. #include <linux/dma-mapping.h>3 f% h* e9 l& h5 V

  35. * P5 c0 K: m7 G0 O* X
  36. #include <mach/memory.h>
    ; N2 y, s4 T! F0 z3 }2 b/ s7 ]' j
  37. #include <mach/hardware.h>2 S1 _  |5 F  z8 K6 f
  38. #include <mach/irqs.h>
    4 E5 J, ?3 G& c* ?4 v2 F& e
  39. #include <asm/hardware/edma.h>
    5 b) I* g! x& k; S6 g) R
  40.   |. X- U; P# f1 v2 z2 z% R8 z
  41. #undef EDMA3_DEBUG5 O" a" T- u$ T3 h, }
  42. /*#define EDMA3_DEBUG*/
    $ @( o5 k. P/ T# L2 Y) \

  43. 7 f7 }5 }- D# Q6 p* K) i2 ^+ b/ R
  44. #ifdef EDMA3_DEBUG
    + _) v  g0 u; \4 e4 u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)1 A: D& L! r! p  l
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    4 ~$ v3 e' U2 G$ q3 L! _' P
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)' I" n& k1 B, p
  48. #else
    5 T8 t, z, @; S6 |
  49. #define DMA_PRINTK( x... )
    : _% c1 N8 @8 c( a5 Q' G7 ?
  50. #define DMA_FN_IN) V: @6 Y# ?9 B$ Q3 T" ?: T
  51. #define DMA_FN_OUT
    : B+ s, x9 V3 M3 S- l7 \
  52. #endif
    5 R8 H% B! b- V0 e

  53. ' c6 K6 _2 Q3 ^! @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)( C0 U; z: G+ }! P
  55. #define STATIC_SHIFT                3
    / \) I3 M# p3 D: \9 z" Z5 I
  56. #define TCINTEN_SHIFT               20% _8 m' X+ r' C6 {: f! x
  57. #define ITCINTEN_SHIFT              21
    9 {* r- R; J& w& P7 U
  58. #define TCCHEN_SHIFT                22
    5 W# m5 O# b  L$ F+ w- u3 e- l: c
  59. #define ITCCHEN_SHIFT               23
    ; D  N& {9 j/ e

  60. & H- @9 ^! \& \& N
  61. static volatile int irqraised1 = 0;0 q8 D/ o+ @4 E7 S
  62. static volatile int irqraised2 = 0;
    6 {/ i1 @3 e$ d' r+ F' M0 B. J
  63.   Y5 g0 ]. M& M# |
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - G" O8 }. M) ~1 E
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      U& x! T7 d, ~$ M7 L- M
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ A2 I8 z' r, k
  67. : w" w) d6 `9 r7 M7 P
  68. dma_addr_t dmaphyssrc1 = 0;
    2 Z9 N# s" \6 r  x8 a6 D) R
  69. dma_addr_t dmaphyssrc2 = 0;7 C* R2 u( M% q( M2 N
  70. dma_addr_t dmaphysdest1 = 0;, Y7 m, [  M/ C0 L! B
  71. dma_addr_t dmaphysdest2 = 0;" c' B) n5 l1 u" ?

  72. ' Z# m1 S, t) P# F
  73. char *dmabufsrc1 = NULL;
    7 I' V+ g6 q/ Z
  74. char *dmabufsrc2 = NULL;
    $ r, c- [0 f! g2 q
  75. char *dmabufdest1 = NULL;
    1 g  i. V: l* T( G+ i
  76. char *dmabufdest2 = NULL;
    0 O  I; k  p2 o; y

  77. . F* N% J! Z4 Q, Z- Y$ g! d6 S
  78. static int acnt = 512;( {4 i! B8 u4 W- c0 ~+ q
  79. static int bcnt = 8;
    1 m* J/ F) e; Q/ x; g
  80. static int ccnt = 8;/ G  l0 o! Z+ C
  81. ( ^$ n/ v3 @& z! \3 h
  82. module_param(acnt, int, S_IRUGO);
    5 b, u5 ?# i9 y% S7 M
  83. module_param(bcnt, int, S_IRUGO);3 e0 D0 b, v+ W) N2 E( n3 m
  84. module_param(ccnt, int, S_IRUGO);
复制代码

7 U1 \. T5 F3 h
, a- _1 I* ~) Y: N2 t      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用7 e2 g! I) Y2 X2 m
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。, }- S1 k; z& U! b
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。8 o5 S8 K: o+ b5 w9 V6 H; I+ X

( u7 I. `; f* l1 Y( h# z& E2 A+ H" x* F% |2 z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

点击跳转“创龙科技服务通”

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

GMT+8, 2026-3-13 14:47 , Processed in 0.039979 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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