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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
; Z# d& f5 A* `/ o( x- {) s
  1. [code]EDMA sample test application# h* R: p6 w/ {
  2. /*  c7 [# L. x) g: [# X" ^
  3. * edma_test.c) A, g7 j5 L) `+ w, M
  4. *  |# I5 m- d4 G- G  u
  5. * brief  EDMA3 Test Application; X3 u# c' u4 n
  6. *# o0 v" |+ o; T1 ?- R5 x$ c
  7. *   This file contains EDMA3 Test code.% R" m/ P  e  N0 \2 n6 ?
  8. *, W: W. @& d! p; A8 N: S8 \
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    6 b8 ^' S% E: D8 ?9 p
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
      I4 T) e) }' ^% D  D- t
  11. *         TO CHANGE.
    # [, q: I/ `/ F& r
  12. *0 s. T" y' `& {
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    / t1 H0 n8 Q4 _4 E
  14. *
    ; y6 E9 j4 m7 I( }0 I6 }
  15. * This program is free software; you can redistribute it and/or7 u! t% O+ M( ]. D
  16. * modify it under the terms of the GNU General Public License as6 @/ \' f$ K4 ]& d- ]: e9 H3 x5 |: Z, q
  17. * published by the Free Software Foundation version 2.0 u' `- b/ a, m, x5 n& t, A. s6 O# h
  18. *! p/ h; n; K. |+ v6 D# A0 S# f" \; b
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any  O* c9 W4 s- s
  20. * kind, whether express or implied; without even the implied warranty1 a/ S* z* u; S  o' p8 N8 U
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0 S7 S* r. `( A! A$ R7 n
  22. * GNU General Public License for more details./ v% O0 Z1 }8 L
  23. */& b- o: A; K9 n2 {

  24. 0 z3 u( u4 ]0 A) a/ L' O2 ~3 {
  25. #include <linux/module.h>7 D  C1 i6 A% d( g
  26. #include <linux/init.h>* N. A+ T( K/ }3 C$ x; D9 l! h6 x: _
  27. #include <linux/errno.h>4 F% Z. T) V  a9 j6 G0 }# b3 t
  28. #include <linux/types.h>) X; g/ N2 e! Z1 K7 p) Z
  29. #include <linux/interrupt.h>
    & L" F# p. _2 P# U0 w# w! {
  30. #include <asm/io.h>& r+ {3 a& Z, u+ \- {% \5 P
  31. #include <linux/moduleparam.h>
    - K" [8 p# s! I9 ^8 p8 J5 M
  32. #include <linux/sysctl.h>
    , c" c/ H' X/ o0 ?( _
  33. #include <linux/mm.h>4 T6 C% }8 {0 Q# U
  34. #include <linux/dma-mapping.h>4 a3 W6 m0 L$ Z2 g# b

  35. ! H5 D& z2 `1 N) a+ h" z
  36. #include <mach/memory.h>
      E, O( h0 t; W9 N  u. i
  37. #include <mach/hardware.h>
    / \& R, u$ s5 N8 `; K
  38. #include <mach/irqs.h>8 ]' ~: v2 t2 L  `! G
  39. #include <asm/hardware/edma.h>9 o; p/ ^) F- L

  40. ; |4 i" D1 F. J8 N6 f8 t; c
  41. #undef EDMA3_DEBUG, V) Z# E9 _8 t: t
  42. /*#define EDMA3_DEBUG*/
    + [: t4 `4 L( X6 `, _# }

  43. 9 b: J* ]- Q8 l6 V% o6 r
  44. #ifdef EDMA3_DEBUG* ~) n( ?6 I  p* F) l' M
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    1 L5 H( m' a, [: i3 T
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)' Y1 p' [# ]. M8 l7 P
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)( x! W5 K3 C- ]4 V
  48. #else
    ) T5 u) C; v! f1 g  ?
  49. #define DMA_PRINTK( x... )$ O+ O/ L$ m% `
  50. #define DMA_FN_IN
    / [$ c6 T, Y% _' F! i0 Y$ @
  51. #define DMA_FN_OUT" g! B3 [- ^% o% o# J
  52. #endif
    . u$ D1 I3 R, f6 Q9 ]

  53. ( A/ m  Z2 Z. ?+ f( Q2 F3 B
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    $ x" j' F9 s: o' W$ d0 c6 W0 L& Q
  55. #define STATIC_SHIFT                3
    1 W' @9 w4 o# z$ Q
  56. #define TCINTEN_SHIFT               20
    3 q& c  d) E! c; Q* C1 q
  57. #define ITCINTEN_SHIFT              216 E/ b: e; S0 J  M; T
  58. #define TCCHEN_SHIFT                22( u+ |4 C# N% x# z+ ~( z* w
  59. #define ITCCHEN_SHIFT               23
    * U# C& [6 V1 T' g

  60. , h! X$ B  X, X% u& Y4 h* F
  61. static volatile int irqraised1 = 0;
    / Z. `  z- W+ V# S7 B4 X3 Y& S" k7 h
  62. static volatile int irqraised2 = 0;; Y& t2 ]9 o, x" [
  63. ! Q2 {3 ], \% d7 ?3 P5 |7 a) D% o
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / i* D+ u" m5 ~" z( G
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 A2 u! s% J: o8 H- z" a) e  J1 }; _
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
      ^9 v" k7 \3 x) W. X
  67. 2 {  K. ?$ ]0 p% `
  68. dma_addr_t dmaphyssrc1 = 0;
    : P$ D  V3 h/ W9 E; g
  69. dma_addr_t dmaphyssrc2 = 0;
    ' C1 E. W* K; r! e/ G7 q5 t# l# b# [/ ~
  70. dma_addr_t dmaphysdest1 = 0;' Y) l, O& Z1 I5 ~* J
  71. dma_addr_t dmaphysdest2 = 0;: I' A9 |  M) h
  72. , a9 p, V8 x% n3 N* B
  73. char *dmabufsrc1 = NULL;* L0 I; n9 u# I. X, ^
  74. char *dmabufsrc2 = NULL;
    : U- M; z, s1 |. A3 {
  75. char *dmabufdest1 = NULL;
      v1 r  H" e. x5 g" E( t1 [
  76. char *dmabufdest2 = NULL;5 r. V7 E0 G3 _' P
  77. & h$ ?. f" {8 K0 t- ^& l/ r
  78. static int acnt = 512;" I% {+ D! l0 z3 b6 t
  79. static int bcnt = 8;9 e8 n# ]) _. h6 O9 p" ]7 J
  80. static int ccnt = 8;
    ) F5 d' q/ \/ D
  81.   c6 P2 m$ I# T4 I( r
  82. module_param(acnt, int, S_IRUGO);
    6 @; W. d0 Y) z+ i8 l' _
  83. module_param(bcnt, int, S_IRUGO);2 m; N4 y6 t+ R  b. p, [
  84. module_param(ccnt, int, S_IRUGO);
复制代码
$ j# `2 w, q$ G) F& G. \

4 k$ }7 \4 U/ o* p6 C0 g      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
! b3 z; \- ^! Iarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
3 ]: d6 F7 F9 T6 y     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
( H9 O' C  `4 V1 L% s* S8 O  k
9 r8 w$ E4 y* K# N! d. _1 L* w3 Q7 ^: K. b; z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-28 15:14 , Processed in 0.038758 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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