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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: A* M$ r' x( N3 x/ q4 [8 U
  1. [code]EDMA sample test application
    $ V% a2 f2 X* i( I5 P! N
  2. /*
      }& S+ S/ c$ V* ~; b0 o  @
  3. * edma_test.c
    ) Z" o; t/ j. V" ]8 x$ X
  4. *5 O2 y! O/ b  D! k4 F
  5. * brief  EDMA3 Test Application
    9 J! B: A4 U8 Z6 g
  6. *; r- P' O- j+ ]$ \3 L# N/ p$ A
  7. *   This file contains EDMA3 Test code.* Q6 t/ B1 K- R
  8. *
    7 Y6 ~1 ?, O( w  ]0 i* s
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    * n* A$ D) P1 |& S
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ' r; ?# n: F8 U) n0 m6 f5 c# v7 @
  11. *         TO CHANGE.- m/ q1 m/ C5 g6 G1 ]+ N% b
  12. *' i, _- `$ ]3 p% C" J; U
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# v! |' ?8 b( l/ j) C4 Z/ \, O* m
  14. *
    4 r: L0 `' _3 E/ C) Q2 H
  15. * This program is free software; you can redistribute it and/or
    # }& ]; r) L2 J/ z
  16. * modify it under the terms of the GNU General Public License as
    ; S# V2 d, P7 M
  17. * published by the Free Software Foundation version 2." q$ s% ?# z* G6 e3 S3 n2 \0 F
  18. *
    % e0 h' C' b# N6 R. u4 K  V
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    - p7 X# H: f  v: z4 I
  20. * kind, whether express or implied; without even the implied warranty" \* Z) q, b5 C, D% I" Z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the8 \2 v. M# k" W+ U
  22. * GNU General Public License for more details.
    8 X2 z9 Q) A. h, x& J+ m' w, i1 l1 Z
  23. */( s  e9 X$ K3 i7 {; W- k9 J$ W, G
  24.   z6 K& L5 z4 I+ X6 m
  25. #include <linux/module.h>9 V) ~, P: @3 B! g7 g
  26. #include <linux/init.h>$ u% ~" a; @1 p! G( Z. o
  27. #include <linux/errno.h>( P3 D5 z8 d' L
  28. #include <linux/types.h>9 n. A' ?& H+ i
  29. #include <linux/interrupt.h>
    , \! e) r9 g8 ~" u1 j
  30. #include <asm/io.h>
    & H) d  T6 ~5 E/ X7 E* [  o
  31. #include <linux/moduleparam.h>
    * P' V8 m0 a2 ?+ P
  32. #include <linux/sysctl.h>
    & [' h5 O" T7 C. m
  33. #include <linux/mm.h>, R9 @" q8 i* _  \! J, E
  34. #include <linux/dma-mapping.h>/ i! `4 Q' s& I. P

  35. ! X; r, t! Z0 ]6 n  p
  36. #include <mach/memory.h>
    1 H3 t' i1 Q7 _; E* Y
  37. #include <mach/hardware.h>
    0 h# w- m( _% P2 W
  38. #include <mach/irqs.h>% f6 G) I( @4 r. T! ]3 r  e
  39. #include <asm/hardware/edma.h>7 D0 l" c# L6 @" q4 f& n3 |
  40. " T0 {& C0 G# {
  41. #undef EDMA3_DEBUG0 B$ U2 Z; d5 i0 z
  42. /*#define EDMA3_DEBUG*/. f5 f9 j, [# ~* b

  43. ! {1 C0 s. R+ H+ s# o' X3 `* x! L
  44. #ifdef EDMA3_DEBUG% c$ |. g  R0 H, b0 Y# {
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    6 n( W; K, n, z5 g% w% O+ x- }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    0 F) c- W; B- \- I7 b
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)6 |5 s6 Q" u: Z) u3 X/ w/ j' ~
  48. #else
    # \* K1 \3 y+ z  P  R/ N( ~, _
  49. #define DMA_PRINTK( x... )* {! Y9 t+ T' c* x7 P6 V, t  H4 N
  50. #define DMA_FN_IN
    $ f8 q2 B7 M0 G
  51. #define DMA_FN_OUT
    9 C9 m6 I- d+ ]* |8 s* p, f
  52. #endif1 v$ J% {, s1 ~4 [0 s

  53. 9 L1 I& j' S& ]6 D; f; q* v
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    * o6 m) g. ~; r& f7 N6 b
  55. #define STATIC_SHIFT                3
    0 t: V7 @" h8 N
  56. #define TCINTEN_SHIFT               200 s9 x! j7 H7 ^( Z/ U) k3 V
  57. #define ITCINTEN_SHIFT              21- {8 G1 n4 x. Q  {/ j7 j
  58. #define TCCHEN_SHIFT                22: Q9 p" `/ v1 ~$ K, ~- H3 o+ {% P. `
  59. #define ITCCHEN_SHIFT               23* r4 R* e1 p) ]. x# ]: r

  60. + l5 v/ g9 Y7 Y" W8 O
  61. static volatile int irqraised1 = 0;  i3 ^! _3 [- S2 S) F; ^/ Z/ ?) o
  62. static volatile int irqraised2 = 0;
    ( \$ j* F2 I. Y* m! _  Y  S
  63. % l. R( I3 X5 O0 _
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 U# f9 a- X- d4 P6 w5 L
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & ~0 S' L# K: q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! T8 ^. j# D$ _

  67. & K; o5 r: P0 T1 k, j
  68. dma_addr_t dmaphyssrc1 = 0;
    6 t# e' k# c& b0 p, Z3 v" x! M
  69. dma_addr_t dmaphyssrc2 = 0;6 V* A0 Y+ a0 b4 y  A
  70. dma_addr_t dmaphysdest1 = 0;  F- q1 {9 M/ [0 q) K7 N$ w
  71. dma_addr_t dmaphysdest2 = 0;
    ( ^  C/ o& B* @
  72. 2 t$ f6 F5 Y# P
  73. char *dmabufsrc1 = NULL;7 N0 P7 E! f- W9 G/ R. K' p
  74. char *dmabufsrc2 = NULL;
    1 a" c7 q6 a: }# S9 z" l8 i
  75. char *dmabufdest1 = NULL;# R: ~; }+ \0 C
  76. char *dmabufdest2 = NULL;  e# T8 D+ ~& x3 K
  77. $ \8 M& U; ~, B( ]! u$ v+ j
  78. static int acnt = 512;
    - r2 m0 p% \( R3 y) P4 _! S. A
  79. static int bcnt = 8;( O1 d4 U2 Z, Q0 a& C1 ?* m6 ]
  80. static int ccnt = 8;1 r! X8 q1 a4 U8 I) }* p
  81. * @! i7 `0 j" p! ^+ h* }8 ^  V
  82. module_param(acnt, int, S_IRUGO);9 k7 Y1 K6 Q# C" a3 h% E+ X3 y# k
  83. module_param(bcnt, int, S_IRUGO);- |! z' X' q- Z7 c+ j" I1 w8 G- M
  84. module_param(ccnt, int, S_IRUGO);
复制代码
3 j" v+ ~0 `! x5 v  Z) o) G# {( T* a) s

, C! n, t8 w# q/ d; _/ u      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用  A# D, ]1 w  I. P% q
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
" y* M/ {9 m9 c% @9 f$ _     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. C5 J+ I* K0 e. m( Z( ~0 m' V4 j, V3 N* P  K( u

$ k  Y" j- \# k  |% @' {* f
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-7 17:07 , Processed in 0.037983 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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