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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 {7 i; R' k5 o4 q8 a# c, `. I
  1. [code]EDMA sample test application
    ( ?& K4 I; i. l0 \
  2. /*
    ( d) R- p2 U. x1 s, o  C
  3. * edma_test.c+ E( P/ L: S! o9 l+ N6 o/ L
  4. *
    6 I- k' p1 F$ T. F
  5. * brief  EDMA3 Test Application
    + f& X( H+ F; _2 D: Q& K' l
  6. *, n* u+ C5 Q# {. |9 q/ I' w* M
  7. *   This file contains EDMA3 Test code.' a& Y! t, G: N- n  \
  8. *
    9 n  O" [' H1 v* l0 o- h
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' c; \9 L$ s  A( z! |3 w* s: O
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    1 ~$ g7 R' P  O5 O3 s, R
  11. *         TO CHANGE.+ }" R; c0 e# H1 X. N' H1 F
  12. *
      K; S; p) Y3 d* W
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    # D7 F2 U  N! a+ J" w; a0 y: k
  14. *
    " x) z9 I. |  H3 z8 F8 T7 Q- [1 ]: z
  15. * This program is free software; you can redistribute it and/or
    ! \+ \* E# [7 K7 s/ x( h; Z. t8 o
  16. * modify it under the terms of the GNU General Public License as
    * u! E. X$ V( M- o$ u
  17. * published by the Free Software Foundation version 2.
    1 }/ r+ l! }3 V: T5 R- J
  18. *& H& ~* X4 L/ v, |# q
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 Y' r4 x2 @" {; U
  20. * kind, whether express or implied; without even the implied warranty
    9 Z3 |5 C- Y0 Y/ [
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    1 _' ^8 u3 }9 c+ F4 j2 Y5 T$ k
  22. * GNU General Public License for more details.1 j9 \  J; |* e
  23. */' p; ~$ f( O- |
  24. $ r" v9 {. D% {) t1 Y
  25. #include <linux/module.h>8 p: U6 s8 @. d
  26. #include <linux/init.h>
    , S+ J: A; S6 T  j. g: E0 n
  27. #include <linux/errno.h>
    / Y  Y. s" _4 y8 m5 M) ^
  28. #include <linux/types.h>
    . I6 ]  ~' [& C5 L9 A( E
  29. #include <linux/interrupt.h># x( q+ m1 O1 z3 z$ C  i/ g, I
  30. #include <asm/io.h>
    3 o$ J3 ~! G4 e; C' N  A4 i# D
  31. #include <linux/moduleparam.h>" z4 O$ i: f+ U/ ^$ y& y0 x
  32. #include <linux/sysctl.h>
    8 j% n9 A# K2 H5 ~3 r9 r
  33. #include <linux/mm.h>
    0 D3 G. ?0 c- }- ]4 [8 L: w- k
  34. #include <linux/dma-mapping.h>! E% L0 _: w2 x0 k$ c% H  J

  35. . s: K' A# C5 D5 U: W
  36. #include <mach/memory.h>) C# {$ v( Q' l( C7 U! S
  37. #include <mach/hardware.h>1 `  ~' @8 C) a7 E% T! Z. A
  38. #include <mach/irqs.h>
    3 g5 a! A+ o" L* J' H/ W" }
  39. #include <asm/hardware/edma.h>
    ' S0 w5 C5 N. T! u( ]4 i8 O

  40. ) p" E2 D8 D5 k- m! y' O
  41. #undef EDMA3_DEBUG! `0 L* |+ E! D% j
  42. /*#define EDMA3_DEBUG*/" n; }/ [. J' {; u: I* i; c! c
  43. ' w  ?1 g( J# n; O6 j3 s
  44. #ifdef EDMA3_DEBUG! q: D3 {4 C+ M( U7 T
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    0 ~; g0 Y+ l! w1 u" }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    1 O. K' r5 g6 P1 A; g) a/ F! n/ {
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ) `/ L6 P' c1 g# E
  48. #else# _" p6 n, P3 S; }+ O
  49. #define DMA_PRINTK( x... ). j6 W* Y1 j& k+ \- N
  50. #define DMA_FN_IN7 Z; ^6 k* }. A9 r  T" D
  51. #define DMA_FN_OUT. W+ a  P3 O/ O
  52. #endif
    % l/ `- f/ ^. T' @
  53. 5 }7 X+ l% V6 ?* r) P7 T% b% Z, w
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)4 _5 n% U: ~7 z; r: P3 x4 g  W2 _
  55. #define STATIC_SHIFT                3
    0 |- f: ?1 b$ c! c5 @7 E! \
  56. #define TCINTEN_SHIFT               20! t1 T: e$ h! H; X; d* @
  57. #define ITCINTEN_SHIFT              21( B$ W" ^+ |) B5 c
  58. #define TCCHEN_SHIFT                229 I8 l; g# e- S& `
  59. #define ITCCHEN_SHIFT               23
    0 f! r" w- \2 q, }5 C2 x* l

  60. & Y- F1 I7 l% q7 b
  61. static volatile int irqraised1 = 0;* s- E# j& C8 I4 n% {
  62. static volatile int irqraised2 = 0;9 G" t& _/ r# G7 [
  63. 4 P# L7 P" e# t4 C) P
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; z- ?8 z4 D8 O$ a1 T  G
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& b: t9 j0 p/ i" A! _1 Y9 O
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 y4 V+ _, i1 r3 o- W) j- `/ q+ j

  67. 3 j. B1 V2 i! x4 ?
  68. dma_addr_t dmaphyssrc1 = 0;! ]1 A5 r. i) k
  69. dma_addr_t dmaphyssrc2 = 0;
      H, Q+ O) ]9 M# U  N
  70. dma_addr_t dmaphysdest1 = 0;
    ( n/ A2 B: d  B: w7 Q* {
  71. dma_addr_t dmaphysdest2 = 0;' v( _' Y) w) ]% H6 }# J

  72. % M7 G$ M# J( g1 v& d
  73. char *dmabufsrc1 = NULL;
    1 W* U& S2 P# m& H, {4 c$ i; \
  74. char *dmabufsrc2 = NULL;) P7 A; c! S2 X  D
  75. char *dmabufdest1 = NULL;
    * r( E- H( _' w6 r, u
  76. char *dmabufdest2 = NULL;9 @+ K( L$ I1 t# T

  77. 5 h; T& G# ~5 r) {
  78. static int acnt = 512;
      }  z1 o, w0 w$ j) B& L3 L8 L
  79. static int bcnt = 8;, ^) b" D" {7 W, ]
  80. static int ccnt = 8;
    . F! h, s8 x& {
  81. 7 Y" y8 _1 [3 j2 a8 _5 a8 l
  82. module_param(acnt, int, S_IRUGO);5 n6 k7 f+ r3 `# {9 F9 _
  83. module_param(bcnt, int, S_IRUGO);( `% A/ N; O7 C- @; i( ~
  84. module_param(ccnt, int, S_IRUGO);
复制代码

8 A# ?+ _, ?0 Q0 j
- }# e8 h# d( o4 ~* [7 ^$ s      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
6 f$ F& }, R# A' P- f$ `/ j. 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
. k* [6 A/ O. }5 E: ~     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
! p5 _8 m1 E5 y9 [# m+ @& E- ]$ _% \& I1 f
0 U& s( p2 T7 d$ M! b8 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-25 10:57 , Processed in 0.039295 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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