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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; k& n  o; [3 {" F9 j3 _( y
  1. [code]EDMA sample test application
    # g+ n5 w0 `- o
  2. /*! J$ V% f0 p9 p- @5 F
  3. * edma_test.c
    7 m6 Z5 U& b: F/ F
  4. *
    4 V& ~/ L* l. l3 j- Q
  5. * brief  EDMA3 Test Application
    4 ~  o+ A3 |7 I* ^& h
  6. ** i# w% O* A" w
  7. *   This file contains EDMA3 Test code.
    6 Q( ~  r+ |# ]& F' n
  8. *" h* r: G0 s' m- t8 Y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE% T1 z& K  M/ v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT1 ]) w$ }+ h6 F. E* V) ~  g
  11. *         TO CHANGE.. B: _* N* B' c; Y/ j
  12. *6 c+ V/ N: _, s+ O1 I% t
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ! O( n# Y' y  P1 a! q
  14. *
    ; d- D* e: O. Z8 o% ]
  15. * This program is free software; you can redistribute it and/or
    # P& z( B$ U4 Z( P" e
  16. * modify it under the terms of the GNU General Public License as1 a/ b& R1 N6 {4 _# K
  17. * published by the Free Software Foundation version 2." Q, V6 @. d7 B
  18. *
    0 p: B) Q( }1 P9 R! V- l" l6 D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any7 _# X8 n- ]0 v; R
  20. * kind, whether express or implied; without even the implied warranty: w5 W& }. J  E* ?& e5 H
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 J: q' h4 o& N
  22. * GNU General Public License for more details.
    1 K* i+ D' l$ ^0 @2 M9 U
  23. */! \. g( C$ _" I% k9 i  ^! K* T
  24. ( s$ i9 ^/ q' ?2 v! ~3 u
  25. #include <linux/module.h>
    7 t) w. J1 C, v4 U( ]- w
  26. #include <linux/init.h>" [/ J+ d! K! K* T0 f# R
  27. #include <linux/errno.h>/ n% U) ^; H; p/ s0 F0 I8 m2 D+ }% c
  28. #include <linux/types.h>% h3 I+ q4 u" l6 u  v& U0 u
  29. #include <linux/interrupt.h>
    % p- i1 u4 @- p/ {9 u# m* o2 U
  30. #include <asm/io.h>
    + P3 \4 m% r/ t' h8 U: p/ b1 d: u: D
  31. #include <linux/moduleparam.h>
    + e& c$ e1 w. h
  32. #include <linux/sysctl.h>
    / v4 U3 P" Y( m- N' ?: A& ^* j( ]
  33. #include <linux/mm.h>6 |6 g0 B& _( q
  34. #include <linux/dma-mapping.h>
    ( b/ Y: d0 q- x' p4 s

  35. / S6 w) n6 T2 S9 M4 X" O' [
  36. #include <mach/memory.h>
    : R: u5 X+ s4 s: n
  37. #include <mach/hardware.h>
    + H7 W. B4 F6 [, z2 @
  38. #include <mach/irqs.h>  C* I- c* k7 n" y5 P! F2 j
  39. #include <asm/hardware/edma.h>  j1 v! N; Z9 v' b5 ^( F

  40. 8 T* L0 [6 W5 W' z
  41. #undef EDMA3_DEBUG! b. z4 o. ?& y7 V7 g' H
  42. /*#define EDMA3_DEBUG*/
    * n% R! C* @$ f1 r( P7 M

  43. ) @) g& k3 [  v% p& K: R8 j( `
  44. #ifdef EDMA3_DEBUG
    2 F5 J$ i! j5 g# v& m: h
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)% ^0 S5 c$ W. A( d8 m& }8 v
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)  S! U; w0 E$ }- N2 e
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ! K. R6 R# `) F+ ?% I) J( l
  48. #else5 N# e9 {7 X( L, Y! L
  49. #define DMA_PRINTK( x... )
    $ f% {* b5 v5 P+ S: l
  50. #define DMA_FN_IN
    8 N$ j/ Z: s- t2 `" i& W6 l' w
  51. #define DMA_FN_OUT
    5 W2 v, ?3 q4 ~/ R* p
  52. #endif
    , q) i* X4 A" R  Z) g

  53. . \$ p! L5 f. y. ~" B* F( D
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)) s2 T* ~2 }, |2 L1 Q7 ]
  55. #define STATIC_SHIFT                3! \4 ]/ d/ a; H8 K+ Z8 v- ^6 U* G
  56. #define TCINTEN_SHIFT               20* M% H$ C) J: ]* ^. v
  57. #define ITCINTEN_SHIFT              21" W% b- }/ q4 C6 y
  58. #define TCCHEN_SHIFT                22
    7 Y0 X+ Y  z  l7 a  U& n
  59. #define ITCCHEN_SHIFT               23
    ! K" v( t, R) B! N
  60. $ B: j( q' s) F9 L
  61. static volatile int irqraised1 = 0;/ R2 @7 t8 O+ w
  62. static volatile int irqraised2 = 0;" {4 E  U& G( g- v& T; d/ P2 L
  63. + j# W8 S4 M* h; p
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& p3 x# W" Y! m2 s; v
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( O% i# h# B2 [# M7 o: a; G$ \
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 |2 O8 }' e6 o; i1 {6 r, P1 ^9 y
  67. # {% O+ S  t3 m% W* U# Y5 Q
  68. dma_addr_t dmaphyssrc1 = 0;
    5 z: e  G. \6 J% [0 c8 s+ M
  69. dma_addr_t dmaphyssrc2 = 0;  A: Z' _0 F: m+ T2 `6 c
  70. dma_addr_t dmaphysdest1 = 0;
      N& ?; o' r) t
  71. dma_addr_t dmaphysdest2 = 0;  `+ c. |3 b- ~# J1 P' F9 X" P' l5 f  W

  72. 6 s7 ^$ n3 U+ H
  73. char *dmabufsrc1 = NULL;
    ! k. Z0 f' A8 K; ?
  74. char *dmabufsrc2 = NULL;2 A" z% x0 j: ^9 f& E
  75. char *dmabufdest1 = NULL;/ @4 R5 F  m! @: s- n: Z
  76. char *dmabufdest2 = NULL;
    5 l7 o+ K+ M) x
  77. ; l6 [9 F8 e: e- P2 m5 H% o
  78. static int acnt = 512;/ ^9 o$ Q' m4 g# ?) s
  79. static int bcnt = 8;* k7 N. c/ N7 t( D  j/ p
  80. static int ccnt = 8;
    * o% j& C! K  n2 S

  81. , u+ c9 L, k) b
  82. module_param(acnt, int, S_IRUGO);
    . G' N. e5 i1 i6 v' ^0 a  S5 Z! {
  83. module_param(bcnt, int, S_IRUGO);8 q+ X3 Q: b7 S7 `, [9 Z7 ?) y% n( u
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 e0 f. z, ~0 J* a/ N  t. ?
+ \+ J2 N4 ?$ M: s! b# [5 J/ R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 @( H7 A+ _, y  darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。7 {5 W3 V% C& X. V+ |: u
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ s/ M. U4 K6 z3 t2 ~! E$ }1 d
/ U' N& {, ^: q$ q- ?$ T" ]$ A% F; I/ Y5 {- \3 P0 R/ h. ^, b: B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-14 01:20 , Processed in 0.051962 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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