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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 8 Q2 a) ^) I% ?
  1. [code]EDMA sample test application
    7 G0 o" x9 {* i1 p. V$ H. |
  2. /*5 @; \  J# d& h+ }# K) C4 F1 P
  3. * edma_test.c
    ' N1 I+ |: I& G( t9 N
  4. *
    + H8 D5 s8 k8 ], u* n' O
  5. * brief  EDMA3 Test Application! C. a1 f3 y( H1 c+ g( t2 L
  6. *
    , |2 n) {. [& U
  7. *   This file contains EDMA3 Test code.; k4 I# K' w1 I* A
  8. *$ A# N1 h* T' P  z8 p
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE6 I4 H+ x# n3 ?9 L
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! j7 {; V. A* M& y3 k5 J5 u
  11. *         TO CHANGE.
    , O. `. C: z0 K. w& D* x
  12. *1 V! D, Q4 E8 G: r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    $ ^- f/ g2 {+ ]" O2 \
  14. *
    3 [5 j6 Z7 w7 O2 ^( B, }, i# R
  15. * This program is free software; you can redistribute it and/or
    7 t. B/ ?: {1 j" H- X- }
  16. * modify it under the terms of the GNU General Public License as
    4 y2 L9 A( x1 X
  17. * published by the Free Software Foundation version 2.
    4 f8 k: T1 F& F. o5 u: F& W6 D
  18. *
    ! ?' v9 \& U# c, w8 O
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 R" S9 Y( R* b+ F" u
  20. * kind, whether express or implied; without even the implied warranty
    : n& R0 K, @" y+ V& f+ U
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* A* Z4 r1 b6 L  ], H; ^
  22. * GNU General Public License for more details.
    ! i% Q* l/ _$ ]" S
  23. */4 s5 W% I# t7 D9 C3 J

  24. / G, }7 X* {& T" ^
  25. #include <linux/module.h>
    # i* u4 e' V  \
  26. #include <linux/init.h>1 o+ M4 L" R! d( Z6 E
  27. #include <linux/errno.h>, Q  S( @6 Y- j5 e1 J. w4 C5 N# T0 w
  28. #include <linux/types.h>7 o" r! k; Z& D+ n+ x2 A* S7 d
  29. #include <linux/interrupt.h>$ l% u5 M( ?! j% I6 U( T
  30. #include <asm/io.h>
    , O! |2 Q2 l. ~1 d' a! v$ N
  31. #include <linux/moduleparam.h>
    - y# C! _! W/ F
  32. #include <linux/sysctl.h>
    / @3 y7 W# G$ q) a9 a
  33. #include <linux/mm.h>
    , a- o# y) e- i. d$ N' q! J4 m4 J! S  R( i
  34. #include <linux/dma-mapping.h>/ r0 L' J: V' Q. T: U1 z
  35. . R, r1 X5 c( b; [* e
  36. #include <mach/memory.h>8 f/ c  L) ]% ?4 x& P" }2 W
  37. #include <mach/hardware.h>6 C" k! E) T0 T; Z; \
  38. #include <mach/irqs.h>
    1 z/ E) D- T3 r( o
  39. #include <asm/hardware/edma.h>
    . Q9 H/ ^( Y* b8 U

  40. * Z2 u8 C2 y* M: n9 _4 q6 [1 J
  41. #undef EDMA3_DEBUG
    # {( C0 I: H. ?) d5 P  G8 f2 P
  42. /*#define EDMA3_DEBUG*/
    $ ~& \* x2 Y6 C6 e4 ?

  43. 5 [* t  L) u: j7 e
  44. #ifdef EDMA3_DEBUG  D7 B1 n8 m, e
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS). k3 k7 N# Q. o9 d: k
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__): q+ r( @! F2 j0 ^5 g7 `+ T' v% }
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    7 U! ?. T2 d) K% \, L% T: C
  48. #else1 X* J; a9 o5 ]( `6 @
  49. #define DMA_PRINTK( x... )2 Z  j/ A' h3 J/ o
  50. #define DMA_FN_IN! p* y$ U$ j4 z: \6 s
  51. #define DMA_FN_OUT
    $ |  \1 _2 z+ t
  52. #endif. ]/ Z7 O7 R# X7 Z2 D

  53. , B1 g+ @2 L8 z/ a0 r
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    & m" _/ {" W4 W4 B* r6 U
  55. #define STATIC_SHIFT                3
    ; s0 ?$ N) ?& E. O  I" B
  56. #define TCINTEN_SHIFT               20
    . Y  j. L5 ~5 g4 T# H; L* b
  57. #define ITCINTEN_SHIFT              21! w3 ]2 l7 h$ U/ ~
  58. #define TCCHEN_SHIFT                221 m7 @% b  `. C2 X4 K0 j2 W0 t
  59. #define ITCCHEN_SHIFT               23
    ! [  l0 o  B6 H

  60. . ~( i/ S$ T* L3 ~) H* c, ^# S6 @
  61. static volatile int irqraised1 = 0;$ S4 b# l" m& p
  62. static volatile int irqraised2 = 0;2 E3 o' ^; E( W4 v  `2 a9 Z+ K
  63. 5 q! A3 W' U: [2 W$ ?! H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. b- i3 |( x1 \6 Q) z3 k' R
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- o4 Z* Q8 d. V5 I* l  ]% O3 n7 b! v
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 j  ?# [# [5 h1 [9 S) r( _- v
  67. & a- l0 c) o& {6 V! C
  68. dma_addr_t dmaphyssrc1 = 0;
    + d: n/ X# I+ E7 L, {* Z/ n6 X
  69. dma_addr_t dmaphyssrc2 = 0;8 p; S6 }2 W; i1 `+ @9 j
  70. dma_addr_t dmaphysdest1 = 0;: y: t+ h% H9 \! O* P
  71. dma_addr_t dmaphysdest2 = 0;
    4 W: u2 k* f1 m" ]8 i/ G8 L8 e

  72. . l6 o& W$ q8 `3 N9 n" [) `
  73. char *dmabufsrc1 = NULL;
    , r7 \1 ^  s; J
  74. char *dmabufsrc2 = NULL;3 e2 g/ l# p, i: Q9 G7 l; K
  75. char *dmabufdest1 = NULL;% ?. [) T  a8 c# s' r
  76. char *dmabufdest2 = NULL;
    ! a2 h! u% b2 h
  77. % \( _* r# {) {8 z$ N' Y
  78. static int acnt = 512;
    ! X  [  |0 T4 G8 M+ w) l# c
  79. static int bcnt = 8;
    7 e& e# e/ f  ~# w" \/ O, h! G
  80. static int ccnt = 8;
    ) X; j4 E/ Y7 x; _4 o

  81. % b5 \) r9 c1 r% A* H, C
  82. module_param(acnt, int, S_IRUGO);
    * o3 ?" K0 O+ X
  83. module_param(bcnt, int, S_IRUGO);7 V; L3 e* ~& `1 X
  84. module_param(ccnt, int, S_IRUGO);
复制代码

) K; J9 K' j- |, B( `: \0 I) ]! R' \9 O. p% v- o7 a
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
0 v7 o1 G" H) W3 }5 D2 Narm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
. o- O, ~' G+ K! P3 h7 C     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
" B, o1 f6 [- ?( u. Z, t
1 I2 o3 ^2 e( ]* m8 M. {) |
4 T  N8 q) Z  W5 N7 g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-13 21:03 , Processed in 0.039296 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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