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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 8 n$ x/ i! K8 C  q3 u# v
  1. [code]EDMA sample test application, i# A: S9 }4 {$ N5 n4 @6 e) t5 a
  2. /*
    ) B% m$ V7 z9 N) x$ \# J; _
  3. * edma_test.c/ e9 U( {/ J. f7 Y' i8 g* h) G
  4. *  J) ~4 W: k& f4 m- k! w
  5. * brief  EDMA3 Test Application1 S9 \* _/ G% v9 Y
  6. *$ C' y7 h' `2 v  a7 |
  7. *   This file contains EDMA3 Test code.+ |* k/ W; J* ]. T
  8. *0 F3 F/ [1 G, B. ^, p8 F: ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE& ?6 `$ p( z2 P8 R8 r0 |7 ]1 N& _
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ) S: W% f: n# v1 D0 e7 [
  11. *         TO CHANGE.
    " L/ Y) F$ d. g" {/ l
  12. *
    ' x3 H7 d. n' h$ }
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/6 {4 k8 n+ s* T; }; n3 ?
  14. *
    8 Z9 \% H3 H( f
  15. * This program is free software; you can redistribute it and/or, S2 y9 B, n. q+ T7 }+ K+ l
  16. * modify it under the terms of the GNU General Public License as
      F# n0 A& }2 W, Q( Z0 r- W
  17. * published by the Free Software Foundation version 2." E2 H( h8 b1 O. _: d0 d
  18. *3 @3 g# E/ ?3 _7 J# C  m3 l
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    0 [# ?$ o8 p' ^: ?+ \) Q; E7 y
  20. * kind, whether express or implied; without even the implied warranty
    . F2 ]( F' D9 u$ i/ W
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 n, ^2 m3 b' u+ Z8 ~+ {
  22. * GNU General Public License for more details.
    8 ]- W5 O" k1 l' h
  23. */
    ( c) A. A$ ]; @

  24. $ V1 {3 {! ~( ~3 t" Q
  25. #include <linux/module.h>' i/ Z/ \) Q1 S+ d) K
  26. #include <linux/init.h>
    # G6 P" o6 q, h8 {2 L" M
  27. #include <linux/errno.h>
    ' w. d# }+ U) ?0 K
  28. #include <linux/types.h>
    0 G, z5 R7 t, d5 |( d- _
  29. #include <linux/interrupt.h>) Q( {, _4 Q/ r2 G: G  a; \! `
  30. #include <asm/io.h>
    3 _6 c& a9 p: l. W) Y1 b
  31. #include <linux/moduleparam.h>( w- d. M) q& X; @) V7 Q; n
  32. #include <linux/sysctl.h>
    2 |# I+ P  }' V6 d
  33. #include <linux/mm.h>
    6 ~# Z8 G6 }& U* u
  34. #include <linux/dma-mapping.h>
    : {5 P' n5 W6 T+ Z" U/ k- H2 D! H

  35. $ v7 s7 S' w$ u0 C2 w
  36. #include <mach/memory.h>0 n6 J- L- J# ?2 N; J5 E& s
  37. #include <mach/hardware.h>7 T) L8 p7 a  _- F( {5 i" ^2 |
  38. #include <mach/irqs.h>
    + x% S% @- ?& q+ d
  39. #include <asm/hardware/edma.h>
    ( k$ _( {$ c# J8 f* H0 J; x

  40. 1 ^2 L. b" c5 M3 q' Y
  41. #undef EDMA3_DEBUG: t  g& I, z7 z7 t$ o0 m3 W
  42. /*#define EDMA3_DEBUG*/
    , Y2 A  ~. h) e9 i( j/ R% G5 z8 g* E
  43. - O- K. I5 N( G: r9 `% z+ K
  44. #ifdef EDMA3_DEBUG
    ( j9 d6 K3 W: U, ?+ D4 j& d
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)4 N" i! F1 x# k# |
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)& u* p+ w& g1 {: G9 N
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)/ f! {! d6 ?( |- P! H0 r  |2 u
  48. #else3 t9 }! y2 x2 s! k
  49. #define DMA_PRINTK( x... )
    5 E: k+ p/ S+ C
  50. #define DMA_FN_IN
    6 v- I8 K5 `( s( z1 S7 n
  51. #define DMA_FN_OUT1 O& U2 |  p7 e8 z
  52. #endif) a/ b9 H# @6 j

  53. 6 {' I9 ~5 o' ~4 q! H, ~# O; a
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    + Q2 w1 V% i( p2 @3 K- `9 C
  55. #define STATIC_SHIFT                3
    1 H  T: `8 k/ h7 e& _+ B
  56. #define TCINTEN_SHIFT               20
    / A2 `: t! s$ @3 }, u1 @
  57. #define ITCINTEN_SHIFT              21
    & c4 U2 ~# S$ \" {/ e. D3 D2 f0 T/ S
  58. #define TCCHEN_SHIFT                229 M9 p* f& x6 K* s8 f; {7 |
  59. #define ITCCHEN_SHIFT               23
    . W  }6 z# d; R2 b- A5 u

  60. # _2 S8 D- D: n* @" W3 K
  61. static volatile int irqraised1 = 0;( E- o  w+ D/ f. a
  62. static volatile int irqraised2 = 0;
    3 T3 j( C3 Q. ]# a

  63. ) G# S# Z- G4 G9 e5 f
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & c1 T) \* `7 M& ?% x0 O
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: F0 g8 K  K+ C6 O! A  W
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / \, }3 l# U) Y1 t; R8 L; J

  67. % c6 w6 h% Q5 c; N, o
  68. dma_addr_t dmaphyssrc1 = 0;; Y+ Z: [( X! w9 q/ p6 v. m" R
  69. dma_addr_t dmaphyssrc2 = 0;
    6 ^6 [# r1 f! f5 O3 A
  70. dma_addr_t dmaphysdest1 = 0;
    . W* B. n3 K" p0 h) y$ I! M. S
  71. dma_addr_t dmaphysdest2 = 0;
    & G& t) a% Q/ o  q

  72. * I6 }( U% G% Z5 H
  73. char *dmabufsrc1 = NULL;
    ) L) \/ R+ E( {$ U
  74. char *dmabufsrc2 = NULL;2 u' A: `$ E9 a' D9 d8 ?$ x
  75. char *dmabufdest1 = NULL;; d6 D/ K0 j5 S8 f2 M  H
  76. char *dmabufdest2 = NULL;- X8 W. P- \  e$ Z2 N+ L, F( f
  77. 4 B* b  c  @/ I) V
  78. static int acnt = 512;
    , T% y5 K) ?. l
  79. static int bcnt = 8;' S0 d" S( }8 g# ?7 H5 T) f
  80. static int ccnt = 8;3 u  U! e( V6 ^

  81. * _+ t8 l8 @3 }+ [6 x: b
  82. module_param(acnt, int, S_IRUGO);& w0 }4 j, ?/ Y0 p3 U' y# w. s
  83. module_param(bcnt, int, S_IRUGO);
    1 K' U( G+ ?; h  b
  84. module_param(ccnt, int, S_IRUGO);
复制代码
. j& Q* \+ \6 v7 d' O. [6 a: ]; m
# c& p$ O- X# F4 [. G  j. Y4 k6 {
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
, f  P# e- ^7 S* d/ X; Harm-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 Q5 @1 [; i. W5 a. t* o5 w     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
* u: O  N- I9 |/ y+ V5 L7 R0 O7 _# }% I1 g

- W! z/ q) L/ D+ m4 _, d- `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-30 03:32 , Processed in 0.041359 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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