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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) z' z; l) o! c2 L0 R9 f- Z
  1. [code]EDMA sample test application/ ?/ o2 B$ T3 r4 s5 ]+ \  s
  2. /*
    / z0 c/ ]9 q; Q0 Z4 i5 D
  3. * edma_test.c, U& r; q2 `2 u
  4. *3 A. @% i9 }( p0 P3 e. W
  5. * brief  EDMA3 Test Application, C8 j' ~$ H4 K! {3 o- X
  6. *
    / I: j6 P  F$ m  i( m! p+ S+ ~
  7. *   This file contains EDMA3 Test code.  g9 b! r* [: F) ]/ `. U
  8. *0 w* A, X4 A5 ?6 L* ^
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    + @5 S3 ^4 s3 d0 s  g$ j2 \/ |' P
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ ]  \. s1 \7 r: A0 P% U
  11. *         TO CHANGE.' @" h& l! V: K. s: N: j
  12. *) s. u! n2 N' B8 G7 |1 t
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    % i+ `( |8 s0 m
  14. *+ }0 ^& S2 }# M. I' B: ~. _( x
  15. * This program is free software; you can redistribute it and/or$ i9 d5 q  }' z& U
  16. * modify it under the terms of the GNU General Public License as( ^7 x* S+ H! s  \/ [: T. Y+ g
  17. * published by the Free Software Foundation version 2.
    ; c  K8 R& G' s- K5 Z$ E2 X4 X
  18. *
      x# P7 e2 q. F9 B% [
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any8 m$ h8 F1 E" W& O
  20. * kind, whether express or implied; without even the implied warranty
    ; p' t) y  l) u/ Q
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the5 j6 t; K# u* D% ~. F$ [
  22. * GNU General Public License for more details.
    . g. b- ~( p- r# x$ _4 E, R
  23. */" h. t6 a5 @* Z6 Y) q6 k; e# d
  24. # V" Z" k; \+ L1 w/ }
  25. #include <linux/module.h>' }# g7 x" J* A* h& A* g
  26. #include <linux/init.h>
    7 O7 Q( z% ?" m# `- O2 x: B% I
  27. #include <linux/errno.h>: H7 _7 ~  x# |5 g. o. J
  28. #include <linux/types.h>
    % L: a- g+ |+ V" s) P2 P3 q& O0 i
  29. #include <linux/interrupt.h>
    1 p9 ^' E8 v1 K. l+ F6 h; \4 Q* j* [
  30. #include <asm/io.h>7 g% T9 {4 U4 ]: Z4 ^/ ~
  31. #include <linux/moduleparam.h>% N: E( J+ N3 u1 l5 y+ H2 Q1 m. j( T7 ^
  32. #include <linux/sysctl.h>+ r. a- W6 \  ]3 v5 ], O( _" {
  33. #include <linux/mm.h>
    1 G3 o' D& ^8 p; }9 i* _9 q/ U( g0 W
  34. #include <linux/dma-mapping.h>
    " ^# x* L# L, Q, I& @' |1 f

  35. 6 q5 |. L, a3 y2 \
  36. #include <mach/memory.h>* S4 @) U$ Q. N2 K
  37. #include <mach/hardware.h>. o" z' @! Y/ V+ z
  38. #include <mach/irqs.h># b; A& ^. M) m9 ^7 \
  39. #include <asm/hardware/edma.h>* `" D) o  p: z# B7 R
  40. 7 @1 U! v! i+ {, C
  41. #undef EDMA3_DEBUG4 C+ n* [  i0 q7 }9 h/ ^2 I
  42. /*#define EDMA3_DEBUG*/
    " e' N: j4 e8 E& U' u; P

  43. % x! Y6 b1 S+ [
  44. #ifdef EDMA3_DEBUG3 a7 H6 C4 Z. H4 s( n$ @
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    + S4 m( A. w. d, X8 G  Z+ T
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__), T3 r# F- A$ E. R7 f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    . T2 c! q! Y2 ^, q3 ?4 A4 J
  48. #else
    6 k+ p: }% L8 w8 M' _8 ?
  49. #define DMA_PRINTK( x... ); A7 H, t1 u6 K  I
  50. #define DMA_FN_IN
    # }! a$ B" s, J3 Q4 y
  51. #define DMA_FN_OUT
    8 L9 N1 _4 f* Y. d* j# a- Y
  52. #endif
    . a( i3 b. s/ U' P3 W
  53. % ], D! z* N+ }# ~
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    7 w  V2 l3 e) ]3 t
  55. #define STATIC_SHIFT                33 M# h4 Z9 a. t& b5 V5 n. w
  56. #define TCINTEN_SHIFT               20
    - g( w' |- T: I8 q1 e, b  B
  57. #define ITCINTEN_SHIFT              21
      v' U8 w# D0 Y! l# O
  58. #define TCCHEN_SHIFT                22
    4 v% ~- I. t* h. X
  59. #define ITCCHEN_SHIFT               23
    - R" R, r) z5 T$ Y6 D
  60. 9 }( c+ n0 e$ [5 \# ?( ^6 H
  61. static volatile int irqraised1 = 0;
    1 A3 K1 O" _0 B( U" y# Z2 B0 E
  62. static volatile int irqraised2 = 0;
    9 b% r$ ?5 J$ M, n( e( D0 V9 O

  63. - @! W7 t2 ]5 u2 a: q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* U- ~2 @1 S  T6 s. G+ F! X( ]3 P
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! B; C& F4 G4 I& y/ Q: E
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : O7 t  }3 q! ^1 M3 @/ A+ S
  67. ) o( C- u6 P6 G3 O, Q1 i9 ]
  68. dma_addr_t dmaphyssrc1 = 0;
      M: C' ]( N  `$ Y9 J3 `
  69. dma_addr_t dmaphyssrc2 = 0;
    : B4 Q. P7 i+ z4 x8 X- D" N. f
  70. dma_addr_t dmaphysdest1 = 0;! d$ j7 O7 r5 A" s8 P! h7 s. }
  71. dma_addr_t dmaphysdest2 = 0;$ i8 H6 a: V: ]  r" p! t

  72. 5 l& V0 G" z, J0 W5 ~  V  g0 K6 J
  73. char *dmabufsrc1 = NULL;8 T' s) ]+ Y: L* q0 d
  74. char *dmabufsrc2 = NULL;2 i/ W: P/ }3 n
  75. char *dmabufdest1 = NULL;  p/ m# d" p$ y% r5 h/ [- s5 u
  76. char *dmabufdest2 = NULL;! m- ]* H1 W) _" f! S; B
  77. 3 q+ J1 |% d' R* j* Q
  78. static int acnt = 512;& v4 m4 ?) @; y! G) p4 _  Z4 t4 l
  79. static int bcnt = 8;5 w$ R' K7 h* k9 M* V3 L0 p$ @7 B
  80. static int ccnt = 8;
    9 p0 y1 ]+ \; z5 j
  81. / C0 Q3 O: a2 z- k* P
  82. module_param(acnt, int, S_IRUGO);; R6 H3 R1 _: r1 V+ d8 M  s# b
  83. module_param(bcnt, int, S_IRUGO);
    + _; x" C& k' h
  84. module_param(ccnt, int, S_IRUGO);
复制代码
' l1 B1 f& p0 q& ?1 }
2 j7 P, |3 |& U% M+ F6 U
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
# M4 h) W! o; O* l6 d; {* `! Barm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。# G# u4 s2 a8 ~
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
- m; f& O/ F' [0 j5 \" I  g2 i& _& Q
$ b( q. k) v8 h8 z! r; u7 u
+ V" B8 A- B% ]9 A5 R4 z" m
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-1 08:11 , Processed in 0.037734 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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