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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 k# @8 J! _- x
  1. [code]EDMA sample test application
    . Q7 J+ V. j; f! f' B2 n: d
  2. /*# g  T6 |/ E& }& V% _
  3. * edma_test.c
    8 |* B( V( V; t. ^+ g: h
  4. *; {! W! ~8 x/ X* T
  5. * brief  EDMA3 Test Application
    , B1 U- e- C; [
  6. *& c+ u3 s8 g& Z8 i# V3 ?
  7. *   This file contains EDMA3 Test code.) X. D/ i: X. i# ~  u8 r' @
  8. *, f/ B, C2 i$ T! Y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    7 F& w( R+ z) d& V+ l$ I
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    , J8 k7 J5 N! E3 d+ r
  11. *         TO CHANGE.+ j6 T# `! E$ J8 e
  12. *8 K, L# Y; J& j" x
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! I* u; m9 |  R0 o$ X
  14. *, y/ A4 T' I5 n7 V( f
  15. * This program is free software; you can redistribute it and/or) m+ ^* J! R! u# T" a8 p7 O
  16. * modify it under the terms of the GNU General Public License as; f, n  ]: N2 b7 u
  17. * published by the Free Software Foundation version 2.! `, L; \$ v- S& t0 B! u
  18. *- h$ i# Y/ L9 D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + M9 g. u  c: _# [% j: ?
  20. * kind, whether express or implied; without even the implied warranty) H: K. D; ?1 W. @/ a
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    2 P  |- A; l. q' d7 s
  22. * GNU General Public License for more details.
    ' M" J4 N! ^2 ]3 `
  23. */& V& q. ]/ Q2 [/ G* z' |2 W6 h; Z

  24. $ `) H- o% y, D- l
  25. #include <linux/module.h>
    8 {& q8 u1 C. j
  26. #include <linux/init.h>
    2 `$ ]- W, o+ L" E/ M1 B
  27. #include <linux/errno.h>
    2 c6 s( y3 P, w* v* [6 A
  28. #include <linux/types.h>* ]- y4 b: h2 L; y" f. u
  29. #include <linux/interrupt.h>
    ' x8 |+ n2 P  X
  30. #include <asm/io.h>
    3 }2 A2 j0 n! Z% W1 A3 S, d
  31. #include <linux/moduleparam.h>% d5 ~7 N6 G8 }  ]+ S, m, f. K) o
  32. #include <linux/sysctl.h>- W7 X5 m  R6 ^  F9 D+ X
  33. #include <linux/mm.h>- m) L( s' \5 a
  34. #include <linux/dma-mapping.h>
    $ Y6 q/ m4 F' V

  35. ' F! V5 l$ l4 b% b, M) J6 x) J
  36. #include <mach/memory.h>
    ' z; i8 k, D+ W$ [9 |7 ~
  37. #include <mach/hardware.h>
    , d+ E) [& E5 W
  38. #include <mach/irqs.h>% i, N5 K( T5 |- d9 K3 w) @0 j
  39. #include <asm/hardware/edma.h>. {: B! |: d# w% ^- |3 [, G

  40. , E' ?. M' |2 D6 G6 W" ]  I
  41. #undef EDMA3_DEBUG& ?2 C' `9 h; B
  42. /*#define EDMA3_DEBUG*/9 J4 B( {: x! [/ P- H
  43.   @1 v. r2 \6 W& z5 B- b# ]
  44. #ifdef EDMA3_DEBUG
    " h1 i3 L" A3 l. W* O! m* s
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)" P. F/ J6 k' r; b, t
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    & n7 [# k  Q" S# z
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    9 r7 N" O. J$ p1 F) a
  48. #else- ~% X) |3 A3 N; I
  49. #define DMA_PRINTK( x... )
    * `% Z% ~$ w  c$ u" P
  50. #define DMA_FN_IN8 q5 V+ g1 a1 n" P( r, X, N1 }3 a
  51. #define DMA_FN_OUT0 a  u; a4 Y0 `2 s9 K* R& d& R
  52. #endif
    : V; C' {' h! F

  53. 7 M7 k) d9 y4 _# M; c4 M
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768), C& N0 [6 J. _* O3 H/ @7 a
  55. #define STATIC_SHIFT                3
    3 L: o2 d" Y* s- F4 }
  56. #define TCINTEN_SHIFT               207 R% F# ?7 O- {& I. n
  57. #define ITCINTEN_SHIFT              21! c* o% v; j& O* C
  58. #define TCCHEN_SHIFT                22" I6 {- k/ G$ ]2 Z# M
  59. #define ITCCHEN_SHIFT               23
    9 [6 r% a- U' H2 [
  60. 9 K5 r7 l1 L$ f2 f; T- F' H
  61. static volatile int irqraised1 = 0;
      _3 I0 V! p5 v  J$ H. \0 J7 _
  62. static volatile int irqraised2 = 0;$ y0 Z9 O" V/ M/ L( |5 T5 b  O

  63. ; H$ W& m5 i4 q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! }. y, y& a, m; G. V. J
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ d1 ?1 y4 B. c8 ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & j6 Y, r4 t/ o) C

  67. , {, [3 U9 K0 B" T0 Q8 i
  68. dma_addr_t dmaphyssrc1 = 0;. G, |' x; ]7 y' }* v
  69. dma_addr_t dmaphyssrc2 = 0;" y" N& k- i* O% d( L
  70. dma_addr_t dmaphysdest1 = 0;( |3 F% @) c( k) M/ h3 Z
  71. dma_addr_t dmaphysdest2 = 0;7 _/ q( B% p4 R" A9 a' w

  72. - F  |$ n5 N7 b( @2 G: g7 d
  73. char *dmabufsrc1 = NULL;3 V- B8 Q/ v5 i; |
  74. char *dmabufsrc2 = NULL;
    & k0 d" C# E+ l3 g1 y
  75. char *dmabufdest1 = NULL;! l/ g( f3 V0 E$ I( z( z1 f) V" n
  76. char *dmabufdest2 = NULL;
    9 d' ^7 c4 P" K! H( F9 T; R8 \

  77. % \/ Y! z, p% p, J
  78. static int acnt = 512;
    % n5 N& ?3 K! L* t9 _' w
  79. static int bcnt = 8;
      h; T9 R! L8 }6 o8 U
  80. static int ccnt = 8;
    0 p6 X" h# N3 u3 Z8 n; [! N/ ~
  81. 8 X$ `) [4 W& k- H2 t
  82. module_param(acnt, int, S_IRUGO);- M0 r, V3 {' C8 i( |' ]
  83. module_param(bcnt, int, S_IRUGO);
    + v, H0 N7 y4 v% d
  84. module_param(ccnt, int, S_IRUGO);
复制代码

% H! K3 Z1 ?6 {- J$ z# \9 C, i/ v1 _- `$ J* E
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
* y+ u- G, S& }5 e8 h7 d& n1 B  Aarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。( W: b& W, M, ?; G0 k
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
' a% Q* u0 f5 d; D- a; r
7 d9 z- I5 g3 r- p* r, D' {  b: R* [3 y4 w4 }, I. h1 }2 i+ J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-19 08:20 , Processed in 0.037161 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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