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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
9 h; H$ C! X9 j7 N, x
  1. [code]EDMA sample test application
    ' g9 r  H* p4 G( U
  2. /*8 J5 x! }- m1 H3 s4 |: p
  3. * edma_test.c" T  m& {: E; S2 H, w) v
  4. *
    7 j1 D2 Y. F) ^4 l8 q6 o! h
  5. * brief  EDMA3 Test Application
    ( Q* d9 E8 D1 l5 \/ \! O
  6. *
    % p: L# V6 B3 Q
  7. *   This file contains EDMA3 Test code.0 f# v! K7 o4 x! q! r
  8. *: n# m  s8 j/ l/ Y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    " ~0 ?" T/ B0 i3 q8 S4 C
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% R7 F5 M& q. H
  11. *         TO CHANGE.
    " {: i3 @( Y6 b! l0 E2 @
  12. *
    1 b' v. y' b' a% ]: Z8 |* A$ l
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 M* w* r' {# A  }- G
  14. *
    , T4 o6 W. J5 J: ^
  15. * This program is free software; you can redistribute it and/or
    " z: n; q6 Z1 _' I; u8 ~
  16. * modify it under the terms of the GNU General Public License as
    , B# z  J$ T$ t# p0 L
  17. * published by the Free Software Foundation version 2.+ m8 \' M0 `; |# f& C1 w" u, ]+ e
  18. *
    $ X  E. y; d3 I7 a, }! @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # d& Q6 k  @# V" b
  20. * kind, whether express or implied; without even the implied warranty
    + n) p& i5 U" V: F2 F7 n( s
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    " Q9 ]$ R8 x  ~1 b6 P- f1 @
  22. * GNU General Public License for more details.
    5 {) q) A  i4 g& ~* ?* o1 i* P
  23. */2 v0 Q4 x" z5 I) M3 D

  24. * P2 {# u/ g2 L* x- H0 R
  25. #include <linux/module.h>
    : x2 S3 o  G8 |# i6 }. l0 ?
  26. #include <linux/init.h>4 S8 R5 U# W. R5 L- [
  27. #include <linux/errno.h>8 C6 ^4 \" K. ~& H
  28. #include <linux/types.h>
    ! M% J6 Y6 g6 E4 l8 h" y, ?: J: E6 q
  29. #include <linux/interrupt.h>
    / `* G, X& ^; W- Y* n, @4 j; E
  30. #include <asm/io.h>9 @: L& v* d3 `$ i( K, H9 X: Q
  31. #include <linux/moduleparam.h>
    8 M" _# H& P! M9 U$ \
  32. #include <linux/sysctl.h>
    6 u2 j9 X3 s4 [( Y  i# J& n; ]
  33. #include <linux/mm.h>
    . d$ ]2 T' ~4 Y$ t
  34. #include <linux/dma-mapping.h>( Z8 ~2 y# D5 _$ q3 {" o* x& a

  35. 7 q% Q, L: n& S' ?$ ^
  36. #include <mach/memory.h>% ~9 x. I0 O4 j( r& Y
  37. #include <mach/hardware.h>
    " q$ f$ R8 Z+ d9 @" N! X. q
  38. #include <mach/irqs.h>
    5 I+ x& ~$ w2 I& G- m, n4 n0 D
  39. #include <asm/hardware/edma.h>
    4 v. o% C& e4 E. S# O3 \% J( L2 v4 o
  40. * h5 X9 |: y2 F  ~8 w$ c7 v% p& F
  41. #undef EDMA3_DEBUG
    + I- K8 G# Y2 v( s
  42. /*#define EDMA3_DEBUG*/
    7 F. x8 M% Q: ?6 U8 s1 b- P& \0 R

  43. : F9 X* c( d; r/ X# \
  44. #ifdef EDMA3_DEBUG9 |- d1 w* k7 A3 b* p% N
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 |% q+ ^$ M' w7 {
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - l* \4 Y5 j4 |$ b
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    7 I9 @' O4 }- n- |  v& J
  48. #else2 O5 G3 A0 E2 R: e- P# Q
  49. #define DMA_PRINTK( x... )
    6 B4 B: f, h6 I0 d8 e
  50. #define DMA_FN_IN9 S0 L# k! Y( Q+ L/ J
  51. #define DMA_FN_OUT
    ! F+ d: z8 R! {5 S: T5 e9 V9 w
  52. #endif
    " n$ V. w6 E% U) S$ m0 t* w7 O
  53. & f( i% C) E; b7 h) a/ C
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)$ Z; I' i& c/ z7 t1 m
  55. #define STATIC_SHIFT                3
    + ]+ N4 L" ?) g8 {; ?
  56. #define TCINTEN_SHIFT               20; r) W* Q; Q" H& F' W# W5 Z
  57. #define ITCINTEN_SHIFT              21
    % f$ _) Y4 Q5 k8 `/ @
  58. #define TCCHEN_SHIFT                22. u- B" |. Y1 y
  59. #define ITCCHEN_SHIFT               23
    % f$ Z! o& S) i
  60. 6 |% @% e5 \; K
  61. static volatile int irqraised1 = 0;; [+ c* i- ~  `7 _& B/ ~
  62. static volatile int irqraised2 = 0;
    * o  F/ G1 @6 P9 N  K
  63. $ ?* q9 B, C. `$ c
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 c6 b, I7 P2 W  @" N* |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 y+ J$ ?7 w! T1 R
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 ]+ Q' C- {, c0 |9 O
  67. " @0 ]# E% D* A) }
  68. dma_addr_t dmaphyssrc1 = 0;
    ; X$ ?7 B3 ~, I) m. |0 {8 T
  69. dma_addr_t dmaphyssrc2 = 0;
    0 T( O5 q  K7 e1 T& H4 j
  70. dma_addr_t dmaphysdest1 = 0;! |6 U7 b' v6 S8 X( b, t2 G: m
  71. dma_addr_t dmaphysdest2 = 0;# X1 \; M+ Q2 r, h9 L# ~
  72. ! m# M# n. M2 R: l8 a1 r, s0 U
  73. char *dmabufsrc1 = NULL;. Q* _( w& t# F# u: W
  74. char *dmabufsrc2 = NULL;
    $ {3 }9 h, Z4 {1 g2 U1 _
  75. char *dmabufdest1 = NULL;3 ?8 `) D' j+ _8 e$ }1 Y
  76. char *dmabufdest2 = NULL;/ L8 D; z* c  ]1 [" S5 `3 @
  77. 9 ]) I- L! U- U' C# D5 w
  78. static int acnt = 512;* `% b; z  v% `: [; O% Q% j
  79. static int bcnt = 8;7 C. E9 h7 P4 v& H0 J$ K% J
  80. static int ccnt = 8;
    7 a% E3 C6 W4 \* z
  81. 1 i' z2 l( d  V
  82. module_param(acnt, int, S_IRUGO);
    5 }6 f7 A! B4 {) c! d
  83. module_param(bcnt, int, S_IRUGO);
    1 p/ A: r: n( z( _6 @4 j8 H
  84. module_param(ccnt, int, S_IRUGO);
复制代码

* }: `1 r6 H5 h/ q* S* j9 \: q7 @# n# i0 V% c3 Z7 M
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用/ _+ T& n+ t, Q& h: k. k7 K( }
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。; n# O- c3 E1 B1 e! x( y4 b1 x0 @
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
8 {- ^4 l, o/ }4 @8 V' ~$ G8 X7 L4 n; r6 b) ~# W3 \# K

; l; I) [+ }. C) j3 I7 g. N  [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-29 22:32 , Processed in 0.041074 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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