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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 2 \" b! Y; r6 g0 @; ~# L
  1. [code]EDMA sample test application8 a8 a0 ~1 W9 v! A" n) ]
  2. /*  L! F9 P, w/ ?. Z
  3. * edma_test.c+ x# H$ ]/ n! Q# S- Y( `" o# X9 u
  4. *
    - _( {/ Q" U( |% y. I
  5. * brief  EDMA3 Test Application3 v0 H/ U- R- o; o# ]9 P
  6. *
    1 q& K# k# ^) y& |3 K
  7. *   This file contains EDMA3 Test code.
    ; V: h3 ^2 o7 S7 Y8 x
  8. *
    % s' S" `) K9 j) q0 N0 v, ]$ B
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE, ~% c3 t$ V) c" Y
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 R) I4 q; V) p% r) @
  11. *         TO CHANGE.
    ( ~- o0 R+ d$ d7 K/ j. S+ ]1 B
  12. *
    . F# `: b; Z- Y2 m4 R7 h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/& F' K# g# f' I, g
  14. *# Z5 b! L3 X+ l# P2 P, J$ u# f7 c; j
  15. * This program is free software; you can redistribute it and/or1 G" M: F% E& \& ]& a& N* B: E3 K2 |( b
  16. * modify it under the terms of the GNU General Public License as
    4 Y- |3 a( L% `
  17. * published by the Free Software Foundation version 2.
    4 ?4 R. ]8 [5 S2 a+ `% F9 B
  18. *) x1 i8 E5 p8 m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    $ z5 _+ o4 f' F$ P. I1 r* M4 ?
  20. * kind, whether express or implied; without even the implied warranty  A4 ?! G1 b% O# |3 C
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the3 R! v. k6 B6 e# d
  22. * GNU General Public License for more details.3 o1 T& m) X8 _; O/ W# E
  23. */& b" z9 B1 ~" P* t

  24. 1 {) L# T1 [. b  b* E5 J8 _. W/ V
  25. #include <linux/module.h>% {4 o; v" ]" b+ @. ^
  26. #include <linux/init.h>
    + X$ h( ?; C7 k" I
  27. #include <linux/errno.h>( X5 Y. q( a& c& E# W, B/ e8 b
  28. #include <linux/types.h>$ B% L: A7 j3 t6 ~3 d8 |" o' ?
  29. #include <linux/interrupt.h>
    0 f- {1 f# M0 T- W0 {$ y
  30. #include <asm/io.h>
    / B3 R' W2 \: \5 M# [2 I/ Y/ V) ^) H
  31. #include <linux/moduleparam.h>
    2 q" @6 d/ Z7 K
  32. #include <linux/sysctl.h>9 ]0 R1 J$ `5 i
  33. #include <linux/mm.h>
    2 K/ G, [$ j; k( g
  34. #include <linux/dma-mapping.h>7 v' |! U. R8 v* F$ b
  35. 0 v+ g4 F0 |) W6 ]' X) L6 b, _8 ^" i
  36. #include <mach/memory.h>
    7 h$ p0 N* F9 l; Q! U# `8 }
  37. #include <mach/hardware.h>* B/ m+ G+ Q0 @
  38. #include <mach/irqs.h>+ E% u/ U2 O  q# s
  39. #include <asm/hardware/edma.h>+ ~' g9 W6 a1 g1 R: r$ [' b

  40. - {! Z, `+ r2 ^4 L7 r' l5 v
  41. #undef EDMA3_DEBUG
    9 k* k" t0 a( t9 y) d, `
  42. /*#define EDMA3_DEBUG*/
    ) A8 B9 C1 h6 K  V' v! b
  43. & h+ T! E/ b! [5 G
  44. #ifdef EDMA3_DEBUG# u) ]5 Z7 m6 S1 K. i- f1 m$ T& K2 `
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)  N1 W& D4 `- i. x/ a7 }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__): I/ Z, _. r2 [2 e( K
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    % A4 O* }0 c: d, D
  48. #else
    4 W3 j8 S' C6 P$ B+ m! K: _
  49. #define DMA_PRINTK( x... )
    . i2 X7 v' C, m6 X) G: b; F/ Y; j% W
  50. #define DMA_FN_IN
    . X- w4 {) t( ?7 n, i2 a4 x& |
  51. #define DMA_FN_OUT1 }) I+ _( _8 ^' N4 c
  52. #endif
    * Y) Z: }, v$ q6 u4 f; ^* o- [: a; k
  53. 7 t- u" C8 D/ H) T. Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ; I: j: X1 A" |3 A+ q
  55. #define STATIC_SHIFT                30 w  A( E$ V. f
  56. #define TCINTEN_SHIFT               202 F1 c; h, A4 z( T, C  X. c# @
  57. #define ITCINTEN_SHIFT              21/ f1 G, J0 h( ^+ u) }* V8 A
  58. #define TCCHEN_SHIFT                22
    ! G+ t* D6 P, D/ |9 ~
  59. #define ITCCHEN_SHIFT               23
      |7 q9 p$ S' U
  60. % D2 @4 D3 C; S1 E
  61. static volatile int irqraised1 = 0;
    1 ?0 |" m9 H6 J' u
  62. static volatile int irqraised2 = 0;
    % Y* D8 |+ a. W5 k4 W3 e2 b: A
  63. 7 f2 p/ E5 K9 \$ Q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 ~: e, x# z" I- B0 l1 L9 |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);3 G3 F. r- I( W0 O: d. ]; ^
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 T+ u9 r4 @/ Y; t% e

  67. % ]% P4 _) n0 f8 o) j) A- T
  68. dma_addr_t dmaphyssrc1 = 0;
    6 D  A' l2 L4 d- v( L
  69. dma_addr_t dmaphyssrc2 = 0;, j3 L% g/ z4 v( U4 U5 r; R! i
  70. dma_addr_t dmaphysdest1 = 0;, r" v- a) D- ?  K1 h
  71. dma_addr_t dmaphysdest2 = 0;
    ; X% {8 U& H# H2 G

  72. 5 a7 v, F3 \4 j. e( v4 g
  73. char *dmabufsrc1 = NULL;
    3 H6 b9 a* M+ v- y; Z3 u/ @
  74. char *dmabufsrc2 = NULL;" T1 E5 V4 d( G: T2 k
  75. char *dmabufdest1 = NULL;
      G, F1 ^+ X1 U3 P; v" x# ~* G
  76. char *dmabufdest2 = NULL;
    5 \; A6 h6 W" H# y) F: D1 F9 }

  77. 2 v0 f' e3 K7 I' n7 n
  78. static int acnt = 512;
    % ^" c) f4 C5 B- s
  79. static int bcnt = 8;; e6 M3 O5 V! x$ E& s& T/ q3 J
  80. static int ccnt = 8;, o3 Z1 g2 N$ h% ]4 ?( R
  81. , \! K7 A4 i$ F
  82. module_param(acnt, int, S_IRUGO);' Z0 l. e& p- ~9 w9 m# v2 ~5 z) `
  83. module_param(bcnt, int, S_IRUGO);
    9 u5 z# W( o. m$ @4 T* |
  84. module_param(ccnt, int, S_IRUGO);
复制代码

8 h  O: M2 i5 u$ `+ l
) r1 {+ m% e" G  b" [      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* V2 F* i4 f  g
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ R2 @! b  S# b
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。& ]7 i& k1 x9 L2 t
9 F1 s8 F) e% R- ^( \$ q  {: i

. |/ Y& P/ ~/ q5 Y* \' L
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-10 01:49 , Processed in 0.039467 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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