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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
9 f- f& Y( h$ }  b
  1. [code]EDMA sample test application: w) ?$ p( \; F0 P
  2. /*+ l2 m; C- g1 D
  3. * edma_test.c' G! M, C0 S' ?9 m
  4. *
    0 \4 C" c( ~" U% S
  5. * brief  EDMA3 Test Application7 p2 e9 k+ t. ^+ |7 N
  6. *& L: \3 q9 U, f5 H! J* x2 l
  7. *   This file contains EDMA3 Test code.
    : j$ x9 @% C+ z+ q
  8. *3 m1 j, z- t+ R2 b
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, ]- Q0 {3 f4 D/ j
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT. {" c% V) o: j7 m8 E: T
  11. *         TO CHANGE.
    ! Q, l4 w% G& r
  12. *
    + x9 k; u2 g/ g0 x0 s/ E. z4 u9 x
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. v- O/ k$ Y% G* s
  14. *
    " Y( [* o0 R: z% ~/ f1 G
  15. * This program is free software; you can redistribute it and/or6 O( i; P) M/ i% X0 u* v" ?: N
  16. * modify it under the terms of the GNU General Public License as
    . u+ U  x. Z; H
  17. * published by the Free Software Foundation version 2.
    ' ^4 N4 q& A! `8 L
  18. *
    3 U1 c! B6 [; c# ^% i! K
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any( |8 t1 v- v# G' E1 a
  20. * kind, whether express or implied; without even the implied warranty, |7 T) O6 j1 G2 P0 `. m
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    " @6 L! R, P4 S2 `( U
  22. * GNU General Public License for more details." k! ^2 S. E1 Y: O% ?
  23. */* {  X5 O* }5 t/ [3 j- H% p
  24. + z1 S7 H, A) d- {) |8 {% {  x
  25. #include <linux/module.h>
    " ]% F, L4 J5 j) d1 V( I# `8 e
  26. #include <linux/init.h>
    + }' s$ i2 s, `
  27. #include <linux/errno.h>
    ! y! S! [* h: @( M* [8 ^! n  f8 ]
  28. #include <linux/types.h>
    6 }* `+ d% ~9 o/ o
  29. #include <linux/interrupt.h>
    % [7 a8 n0 M( H2 y9 E0 M9 R
  30. #include <asm/io.h>) L  {# Y" W: e( l3 Z: O
  31. #include <linux/moduleparam.h>
    6 ]) \& W) s+ s' Q: P
  32. #include <linux/sysctl.h>" k  T* P& V$ m
  33. #include <linux/mm.h>
    2 X2 A( j) I$ u1 ^4 o) o
  34. #include <linux/dma-mapping.h>* D1 q! O* F/ ~- x1 `
  35. 4 b" a+ X3 s1 ?
  36. #include <mach/memory.h>9 q7 ~8 w; R  @% @  M- M" P
  37. #include <mach/hardware.h>
    " G" d# i% E4 d/ b( E' v$ [
  38. #include <mach/irqs.h>. J' C, {% I, o$ S- ?/ o1 j
  39. #include <asm/hardware/edma.h>
    , L- T/ m/ m0 j- J3 d
  40. : J8 Z8 z- d  N5 d: V0 v7 o
  41. #undef EDMA3_DEBUG% B: P/ }/ |5 R- a4 M( [) s9 K
  42. /*#define EDMA3_DEBUG*/
    ' u$ r) J3 i4 ]6 Z

  43. # \6 J0 U# D$ u0 o, \6 F* f
  44. #ifdef EDMA3_DEBUG- q0 S4 i8 I& f4 d: E! _& n! {1 v
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
      |8 t0 ^/ p& {8 p* K+ t: ]  x
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__); W+ k' ^( d# H( I( _3 Y2 y/ A
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    2 [2 X5 ~+ D& _: `6 }( C
  48. #else
    $ G. w. g4 I( r5 |! O
  49. #define DMA_PRINTK( x... )
    9 ?! w! N% c; l  l
  50. #define DMA_FN_IN
    " M, N/ R; g' X1 x- G* u
  51. #define DMA_FN_OUT" b  N$ `% ]8 V2 v$ L! T  i
  52. #endif
    $ |- }+ K- q( m; N' z2 E' O2 V) ~

  53. " I* r+ O& T. N# D& z1 a
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    4 G# z* K0 B  f7 \% I2 y
  55. #define STATIC_SHIFT                3# I/ j1 [1 K1 l# ?1 \4 B
  56. #define TCINTEN_SHIFT               20
    1 n& X/ F7 j1 H7 M+ v
  57. #define ITCINTEN_SHIFT              219 C9 h- B$ r& [8 k* I9 R
  58. #define TCCHEN_SHIFT                22
    ( Q5 _! \7 x: A( A1 L0 B
  59. #define ITCCHEN_SHIFT               23
    . E9 E5 {% J5 o/ T  ]8 z! g

  60. + n; k! z/ z/ g. D$ a
  61. static volatile int irqraised1 = 0;! f& w+ x" w1 O; I$ v
  62. static volatile int irqraised2 = 0;
    $ ]4 E5 s+ c: x0 L( k% [7 h
  63. 5 o8 y# a7 w, x3 M: |% t1 I, ~
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 g1 h6 H, M8 `' A
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      g% C4 O- ~& `5 x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 Q2 }5 S. g5 O+ Q! O! f0 c# M
  67. 4 ?) q3 ~- ~* ^# M4 E0 }! j
  68. dma_addr_t dmaphyssrc1 = 0;
    ! n' Z; }8 ^" U% F1 f, n
  69. dma_addr_t dmaphyssrc2 = 0;! F8 v2 x( v6 P- i$ E! d0 K( d! a
  70. dma_addr_t dmaphysdest1 = 0;
    6 ]$ R( L1 D' p/ x
  71. dma_addr_t dmaphysdest2 = 0;
    * E1 A1 h1 y' p

  72. : q, @# t' x8 b# |2 f4 \$ _- z
  73. char *dmabufsrc1 = NULL;. h: T0 q+ g" }6 j
  74. char *dmabufsrc2 = NULL;- }+ |& n% x0 r, _. j: w
  75. char *dmabufdest1 = NULL;
    0 s) u- |: ?/ C( K$ D
  76. char *dmabufdest2 = NULL;/ q/ ]& i0 v9 e5 u( v- v
  77. 6 ^  V# @  k, j3 H4 K% ]9 E3 A
  78. static int acnt = 512;# c5 y0 E4 Q" \' n. t3 g) u, H% j
  79. static int bcnt = 8;8 n% D8 {; {: Z/ y! r
  80. static int ccnt = 8;
    7 q; o# G8 R% Q  Z' X# m: k

  81. 3 {. R3 k: ]6 C# t9 d  v
  82. module_param(acnt, int, S_IRUGO);
    0 g3 E! P' `* z& p3 d) G8 p
  83. module_param(bcnt, int, S_IRUGO);
    * Q; v+ p9 U7 }$ S% W5 S2 P
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 Q, T7 v& j* q2 U" I5 M2 S& m7 |6 r

% a0 u8 O' J% X; I  {      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
- [+ B, j, }) C% g3 ?# l7 R! 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
8 Z% |( C( S3 J! A) ^" p" C5 _     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
2 U1 g) d2 \# n! ^# D. W* C5 B. q  s

! D/ R! s+ x4 l/ l) L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-9 06:54 , Processed in 0.048070 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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