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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) i* R1 l4 Y# }: S4 d
  1. [code]EDMA sample test application! V6 p! e* g2 M( i( v
  2. /*
    % c' G# d: E1 w3 `
  3. * edma_test.c
    , }# n+ |! ?' K' B, E) f
  4. *3 ]6 e& U( G, s  ?3 r$ _6 r; J
  5. * brief  EDMA3 Test Application; S6 D+ ^  |0 f+ G/ K; `/ k
  6. *( |% X& S7 I+ ~( s1 t2 j( L
  7. *   This file contains EDMA3 Test code.
    7 f0 D( h9 C+ a1 c4 u% @
  8. *$ G# p3 a9 q2 t4 H! F( J' o
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    9 R5 `7 l# n6 g  d: S& H
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT/ l! g3 p+ V5 _0 ~6 Y
  11. *         TO CHANGE.
    * s. t; J9 Q4 i9 z2 V" S0 U
  12. *# N7 o" Z/ N- y9 v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# v  j/ \  d4 v. E3 B
  14. *$ s. S& C9 _5 U0 [# x, U
  15. * This program is free software; you can redistribute it and/or5 m' h. ~( G2 ?1 s# C$ W  o+ K
  16. * modify it under the terms of the GNU General Public License as) [2 u; V5 u; ^2 O
  17. * published by the Free Software Foundation version 2.$ b* s( F/ r$ M0 F
  18. *
    7 l/ e# g1 Q; @
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # Q4 u5 C  j: \% r
  20. * kind, whether express or implied; without even the implied warranty
    8 o& P) n: j" b' a6 j
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      S; u; C7 w' m4 g" u
  22. * GNU General Public License for more details.6 v0 E% B" p! q
  23. */
    ( _$ q  J( }1 t  ]) b) |# B: ~

  24. 4 H' m% B" s" F/ }' `% p
  25. #include <linux/module.h>
    5 {. V' U7 X4 s0 e
  26. #include <linux/init.h>; k0 y6 {' n% B5 k! k. _3 ~
  27. #include <linux/errno.h>: M, @5 g& G3 v; C  l
  28. #include <linux/types.h>. J) P7 p8 H! T4 ?$ k) I1 \& G
  29. #include <linux/interrupt.h>8 |1 F: e9 R8 q4 A" r  z$ j7 D
  30. #include <asm/io.h>% I) H8 B3 A+ z9 _2 t" j  ]
  31. #include <linux/moduleparam.h>
    & ?% ^) d2 Z8 I( i/ Q
  32. #include <linux/sysctl.h>
    9 B+ i1 e% {; z# T3 o
  33. #include <linux/mm.h>
    # F7 [' @; d6 Z; A! s$ R: m
  34. #include <linux/dma-mapping.h>( s2 y' ]# c) [1 |. t! P' v  R

  35. , _5 @4 D9 y- M, @) O* ]( ^: o3 @
  36. #include <mach/memory.h>
    - K4 E$ _: r& p2 Y: u7 W
  37. #include <mach/hardware.h>4 h7 }) \1 U1 I4 Z/ Q
  38. #include <mach/irqs.h>
    4 o1 y: A6 T) Y/ g+ v3 b. V- d
  39. #include <asm/hardware/edma.h>
    8 K  M2 e# }: G4 u. c; M
  40. 6 n4 P0 K" G1 v& }0 H+ e
  41. #undef EDMA3_DEBUG
    , k) V/ M, h. f
  42. /*#define EDMA3_DEBUG*/
    ' I# O% y1 g2 Y' P0 B
  43. ) f) Z/ o6 \$ D' R7 j" c
  44. #ifdef EDMA3_DEBUG
    9 `4 u9 }# z" `; V4 {3 q6 b
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)% T) w" Y- B# S9 z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)3 j9 q' \; v/ S
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 L6 j& k) q  w; t) ~* @) j
  48. #else' X5 d6 h6 T' Q& y8 ]8 @9 r+ d
  49. #define DMA_PRINTK( x... )' V2 E) F6 a1 Z6 p' y9 h1 a
  50. #define DMA_FN_IN9 ]* X$ b$ d8 ~8 W+ ~
  51. #define DMA_FN_OUT
    # \+ ?* u, e2 i  n% t
  52. #endif
    , Q; I( {! ?* U- l
  53. 4 l% v" {/ t3 ?! p# i
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768): f& q" X% P+ S# ^& @( ?% ^7 [; V
  55. #define STATIC_SHIFT                38 @/ V" ^0 E# c) h3 [9 `/ W- \
  56. #define TCINTEN_SHIFT               20/ [- {- _, k& G1 j& o/ f& \
  57. #define ITCINTEN_SHIFT              21) R- {, W3 X! b+ a$ n
  58. #define TCCHEN_SHIFT                22
    0 X; j/ z9 }- ~% f$ \
  59. #define ITCCHEN_SHIFT               23
    1 |2 ]2 A9 [" z
  60. 0 \8 A; ]" \( u  B+ D* e) V
  61. static volatile int irqraised1 = 0;% t, \! {) e* B' Q5 h& g
  62. static volatile int irqraised2 = 0;, q6 ~" t# a! Z7 {# t' t
  63. , l& L2 I. B$ l" H1 A1 q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 O; p$ z  v& f4 @% g( [
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 }3 v7 \  c4 \. D4 t! Y1 z# k
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * o2 ~- u; [: s/ b7 Y0 A

  67. . u5 M# `+ N. u4 J! d
  68. dma_addr_t dmaphyssrc1 = 0;, u( P, ?% w* h& }, w
  69. dma_addr_t dmaphyssrc2 = 0;
    6 h# v: t6 i3 k' }" n" w' S/ u
  70. dma_addr_t dmaphysdest1 = 0;
    9 j7 z* Z3 D" v6 g$ Y! \
  71. dma_addr_t dmaphysdest2 = 0;
    # v' G: M+ D4 d4 a
  72. # S4 F# L8 a; X) V. K
  73. char *dmabufsrc1 = NULL;, ~9 v+ }. h% j( D, r7 D; d' k7 V
  74. char *dmabufsrc2 = NULL;+ C4 i5 P' Q5 d& i* y7 I
  75. char *dmabufdest1 = NULL;
    9 A, F- \  w0 |, h8 ^5 w4 f
  76. char *dmabufdest2 = NULL;; P6 P, G; C/ u: j1 H& x; ^
  77. 5 O) K. x% j* K0 n: e- {$ `
  78. static int acnt = 512;' G# Z0 X. V) I# F) ~
  79. static int bcnt = 8;# ]) T, t- s* |" a9 W& f% z6 I
  80. static int ccnt = 8;
    3 y0 D9 u( V- |. F' {, ]
  81. ( S  m1 S( J  t$ w- ]9 k
  82. module_param(acnt, int, S_IRUGO);9 P$ A; ], ^) G) g
  83. module_param(bcnt, int, S_IRUGO);
    $ s. s9 n" X  x+ k
  84. module_param(ccnt, int, S_IRUGO);
复制代码

& [6 n$ q! x2 e4 r' z, F& M7 M- [& J- n1 v9 t6 B
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 h, j, u! R$ f, s3 k4 F2 Marm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& U  \+ N4 Z8 [: A* s" E
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 L/ k% @! |, i: O
7 J* q+ P0 ^, t8 j3 y

/ v7 l6 \8 ~2 J+ @2 J2 f, [
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-22 11:43 , Processed in 0.074034 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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