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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
* D% i, p% _$ D. |6 z
  1. [code]EDMA sample test application  W# d+ u0 m5 q: }+ [& G  X4 B$ e7 ?
  2. /*
    , k; ^3 b5 _- L; e5 r7 H( Q
  3. * edma_test.c. t: k  q. O3 a5 u! }9 K) ^& I
  4. *& g* f+ P4 K  e( U$ ^' G
  5. * brief  EDMA3 Test Application
    9 x- N3 h0 T* K
  6. *8 Z' u+ ~2 s. G6 O% p0 V% v
  7. *   This file contains EDMA3 Test code.4 y, }& T; V! _- G% g% R$ G7 h. X
  8. *
    + a' E; a8 N# x4 m+ z3 ?/ y' W/ `
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: B' i2 D4 f% l+ D7 c- u
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! L; i+ Y3 Y6 n
  11. *         TO CHANGE.- }$ G1 ^# J+ G  J2 A
  12. *
    ( h" }: p  B% C' r' q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/2 _7 K" I' `5 @/ S) R
  14. *$ m4 h6 V5 ?# A, A0 ~' }( O6 s
  15. * This program is free software; you can redistribute it and/or
    3 X) N7 _3 p+ r: T  F1 i
  16. * modify it under the terms of the GNU General Public License as
    4 R3 s1 N* U  ?4 ]# ^9 w
  17. * published by the Free Software Foundation version 2.  N- p( N4 z2 m- u" F
  18. *+ u- a: d  f8 S* A: N  x2 k
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any' E4 A0 ]+ g! @6 i" _
  20. * kind, whether express or implied; without even the implied warranty
    2 x9 V0 W: G8 R& v- ^5 B0 O0 p
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    * \6 o/ ~- G& v! J
  22. * GNU General Public License for more details.
      ~/ O' Y: z! i! A* P
  23. */" M9 h  t% T. L7 \
  24. - Q6 ~) R6 y. h3 i, f
  25. #include <linux/module.h>
    * I( d  H: d: [$ R: Y% `
  26. #include <linux/init.h>
    9 F0 N6 [; I+ i& n; F
  27. #include <linux/errno.h>
    ; z/ Q5 E3 }0 `
  28. #include <linux/types.h>- f. G5 U' S0 c3 @6 ]
  29. #include <linux/interrupt.h>) {6 |3 b1 R7 J4 a4 F" M
  30. #include <asm/io.h>
    9 T/ N+ \( m. I! T$ x0 {
  31. #include <linux/moduleparam.h># {+ i2 L/ ~: L' o, Y  n
  32. #include <linux/sysctl.h>; ]) @3 h# t, O7 H0 E
  33. #include <linux/mm.h>
    : m( k6 H5 W( U, v
  34. #include <linux/dma-mapping.h>
    : O& y0 F* P) C* Y" L' H) H4 t
  35. - N5 I" n: g( U# N6 b6 a7 G
  36. #include <mach/memory.h>
    8 R( z; x& p! O/ r8 j# H6 Z4 `, `
  37. #include <mach/hardware.h>
    ' _& M, s/ d( @+ M* v
  38. #include <mach/irqs.h>
    5 P% {9 }" c0 o+ X. R$ A& B
  39. #include <asm/hardware/edma.h>
    + k/ D) F- ^8 D' K8 N; }/ `

  40. ) o& A6 D2 K. O& t+ z8 V: H1 x+ q. g
  41. #undef EDMA3_DEBUG
    & C9 |! b: c  B- }: N/ N. ^. [# o
  42. /*#define EDMA3_DEBUG*/4 p: Q4 I2 ?; O3 k! y4 ?
  43. 1 D( C7 b3 c! q: l0 H- t1 K
  44. #ifdef EDMA3_DEBUG8 N' x# V; |( h$ p0 C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 c4 j6 B2 A  T) k7 n, }. z
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# p2 A0 e3 I* G( ?/ J6 [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ; d" A" [. y# k8 }% i
  48. #else
    9 y' R; x9 }( V* N5 g; O
  49. #define DMA_PRINTK( x... )  q  H9 Z$ l0 X5 q, \
  50. #define DMA_FN_IN
    " n) R* O# a! s
  51. #define DMA_FN_OUT
    - H/ h) c0 J3 H; T* F, {; H- H
  52. #endif, m' Q4 J4 m2 M* h5 [- e

  53. 9 V1 z- G& |2 p, e
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    # o2 W7 ]1 E( M4 m7 g, |5 b
  55. #define STATIC_SHIFT                3) h4 ?7 T! u" Z, e; m) }6 W7 K7 O
  56. #define TCINTEN_SHIFT               202 J" G7 |; R9 k0 B- E' J
  57. #define ITCINTEN_SHIFT              21
    # a4 J( M& f" s8 Y* }
  58. #define TCCHEN_SHIFT                22
    . K  r0 W( d, N' D
  59. #define ITCCHEN_SHIFT               23, {9 N+ [" I+ Y& q5 C' `1 G
  60. ; u- Q$ g: G. D8 }! m6 t6 t
  61. static volatile int irqraised1 = 0;& }/ _; Q8 B: i9 \
  62. static volatile int irqraised2 = 0;! \) i7 l; d2 U# o, f) N- x0 ^
  63. 5 P8 \' o& M3 v0 p7 l
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 ^* i, q# s. [. X1 o0 S( ]
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: L, E; L0 T7 t# a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 N' N% H' q0 a, D2 `
  67. 1 j( P1 _0 R% g- J1 p. t
  68. dma_addr_t dmaphyssrc1 = 0;7 K- j7 @% A! i; Z9 p' E+ A- `
  69. dma_addr_t dmaphyssrc2 = 0;8 W# f5 d+ a5 _
  70. dma_addr_t dmaphysdest1 = 0;( N) D* g9 A% [  a0 Q7 K* f! D$ F
  71. dma_addr_t dmaphysdest2 = 0;
    . G: L) x& T% \

  72. 9 A' P% E" d7 s4 X
  73. char *dmabufsrc1 = NULL;' x5 o4 a+ T0 E% Z2 \1 @! j+ ]; u
  74. char *dmabufsrc2 = NULL;0 i$ _( \( N& M. L
  75. char *dmabufdest1 = NULL;
    - c6 X( d. a! ~
  76. char *dmabufdest2 = NULL;
    4 E8 V( V" I  k
  77. 3 j# ?; `3 s0 l) [
  78. static int acnt = 512;6 A" P1 G1 B( D- z8 O9 v
  79. static int bcnt = 8;( K9 a/ ~) ^+ ~1 @' D+ {
  80. static int ccnt = 8;$ M6 O$ {. y$ s# c1 B- N
  81. 9 r3 P4 t# n- `' }. x
  82. module_param(acnt, int, S_IRUGO);0 i" S7 V4 Y3 m0 I& d5 p, @* q
  83. module_param(bcnt, int, S_IRUGO);9 B; s& i  u4 p# A1 L, A
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 S/ j) W9 w( Z

  l3 ~/ d6 g* r1 ~" N- H      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用' ~0 @. j/ ]7 ]
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
) s0 b, T. m9 B     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  j- f' _/ s$ R9 `& l

; J: k4 x$ r* H. ~) D% B, b
0 n0 X- d  `' h% Q, T! K
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-1 07:00 , Processed in 0.039651 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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