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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
! }& b4 I% A" P, Y3 d6 a, R
  1. [code]EDMA sample test application
    7 v0 b* \1 x8 T4 J( m
  2. /*
    . b9 n% y/ [- {
  3. * edma_test.c
    8 C. K5 y: ~* d+ {8 s% Y
  4. *
    1 a) o, p/ ~# `0 N1 x* B1 M9 b
  5. * brief  EDMA3 Test Application
    % \" ]- |; D* x; S+ ^
  6. *
    : n- a- k; M2 E% n) c* c! B( s
  7. *   This file contains EDMA3 Test code.) B6 N. }$ p+ V
  8. *
    4 t+ T7 p; P* S( X8 w) o: Z9 j
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE% \2 \' M, N8 W+ L- h
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    8 Z+ w2 T& z) Z/ m% l# P5 T( `8 ^
  11. *         TO CHANGE.# l  X  \( {! B+ `; N3 G( [9 k: e
  12. *( I! W2 n: Z) a: L( y/ J( y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/- N) o$ \9 Y/ n
  14. *7 u4 x$ V$ D& j$ w  E3 q; W! I
  15. * This program is free software; you can redistribute it and/or
      A; E4 ?4 n; t0 R- q* h
  16. * modify it under the terms of the GNU General Public License as
    ( T- ?  z) Q- Z7 j6 W
  17. * published by the Free Software Foundation version 2.0 j) v& O9 P* |
  18. *
    * j: f2 R" a/ T' a' m3 _2 D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any% X* _( X+ a% ~& O
  20. * kind, whether express or implied; without even the implied warranty
    - \( y# C5 i/ P6 E
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, ?6 f. H5 k4 J, ^- b5 q  ]  Z
  22. * GNU General Public License for more details.
    ; p" M4 P% S! [. d* n" {, z
  23. */" g3 O# J$ K$ x9 r7 C
  24. ! O+ A1 |( B3 K
  25. #include <linux/module.h>
    * a2 `" j% n9 g4 W2 d. K3 B
  26. #include <linux/init.h>
    ) F1 }4 n4 G, H# f& f& G
  27. #include <linux/errno.h>' N3 V$ d; v; O' ^# `- `; U
  28. #include <linux/types.h>
    " T' B( C& L, G* o. P" |
  29. #include <linux/interrupt.h>* z) Z& p5 f! r9 g% }
  30. #include <asm/io.h>
    * T1 \( q- Q. x  Y
  31. #include <linux/moduleparam.h>
    8 N; S/ z# d+ {9 ^" @
  32. #include <linux/sysctl.h>
    : u4 V; b$ d; |/ N+ ^( |/ J
  33. #include <linux/mm.h>& v% C3 x9 _0 n, Z/ {. _9 R
  34. #include <linux/dma-mapping.h>
    8 V* I- `% z& T5 i  x* m

  35. 4 A  l% j9 `- j% g6 w
  36. #include <mach/memory.h>1 X% V9 a1 S& [& S
  37. #include <mach/hardware.h>
    / q/ u! r' X3 r) R/ E
  38. #include <mach/irqs.h>
    + @' H+ M8 I0 j6 v; B) A' B
  39. #include <asm/hardware/edma.h># c3 T! v4 g% u: y

  40. ' |: x8 `7 F7 l- {
  41. #undef EDMA3_DEBUG. r+ P+ }0 k0 m
  42. /*#define EDMA3_DEBUG*/
    9 W* Z/ G* _1 w3 z5 S3 F5 v
  43. & Q$ v' j9 r1 s- [' }( |
  44. #ifdef EDMA3_DEBUG" }+ P+ ^) t% ?) q; h
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS); O0 t# q1 m7 ~2 i/ L0 l0 X
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - ]6 h) g  \% W! y* I
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    - S. A  g$ n' H/ d) e' o
  48. #else! V  B. m% O! S5 V. ^+ U) c
  49. #define DMA_PRINTK( x... )
    . n$ @0 M" S3 k
  50. #define DMA_FN_IN
    ' C$ d" t) h/ Q4 q
  51. #define DMA_FN_OUT
    " v1 J, s+ [4 i" M) p4 U
  52. #endif" ~7 O' k  J6 n0 t0 ]# A3 y( y

  53. + T- l4 T: N3 W! O5 p
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)% J3 W5 N: I( i9 m; J0 ?
  55. #define STATIC_SHIFT                3: b! ?$ }6 [, g; k
  56. #define TCINTEN_SHIFT               203 j$ V# B5 t8 b: G
  57. #define ITCINTEN_SHIFT              21) ?- z9 B+ |9 Z- v! J$ B9 ~( u- O
  58. #define TCCHEN_SHIFT                228 l! d7 G& i9 V, @
  59. #define ITCCHEN_SHIFT               23/ s) M3 j# c4 Q/ v) R( A
  60. , J* M: ?* w/ M$ W8 J
  61. static volatile int irqraised1 = 0;8 q/ z- O1 v6 s+ D
  62. static volatile int irqraised2 = 0;
    0 g+ Y- b3 \4 e0 D& y
  63. & F, b) [0 i' L. H( m: v
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . A; c( a7 c7 t! O# j
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - a3 P+ C! \) J) g* d6 U2 y1 P+ b
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " F  E3 |2 _# M9 ^* V

  67. ; V4 M: |0 ~4 m5 @
  68. dma_addr_t dmaphyssrc1 = 0;1 @7 H$ a" q! u2 {# A! u
  69. dma_addr_t dmaphyssrc2 = 0;
    ! M+ X' s* b  k- |& G. Q5 [( y9 A
  70. dma_addr_t dmaphysdest1 = 0;6 T* ~6 }+ p" z6 [3 F. C; j. \, B
  71. dma_addr_t dmaphysdest2 = 0;
    ) U0 C/ U3 e0 a

  72. ) G4 s4 \# {  n6 a, T
  73. char *dmabufsrc1 = NULL;- {7 T& p  A. h& J6 q/ p- L
  74. char *dmabufsrc2 = NULL;  L7 r/ j- r, ^& G  p" Q) k" {( ~
  75. char *dmabufdest1 = NULL;' G3 d- J/ l. [& G/ P
  76. char *dmabufdest2 = NULL;* S  _* {( L) p  {- ~+ _+ P
  77. " m# v2 a" }/ T. ?+ `. h
  78. static int acnt = 512;$ l) p. K+ h$ s# @3 S, h- T
  79. static int bcnt = 8;
    ; m9 L1 N7 M  ]3 i* g
  80. static int ccnt = 8;
    0 @$ k) Q% ~1 n, a) h

  81. ; A1 C6 B) b1 D
  82. module_param(acnt, int, S_IRUGO);2 x7 B* u5 N: b! O
  83. module_param(bcnt, int, S_IRUGO);
    ( v. z/ Y2 d0 L) X1 T6 n5 J
  84. module_param(ccnt, int, S_IRUGO);
复制代码

( t- s' ]8 o& z& F* f/ b- v; q' \! v: m$ H0 d5 g! _! X
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用: o$ s. u' V5 ^1 g, a' M( q- k
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ M, i8 Q% T. ?7 P! W( f# }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 i4 p0 ^: }8 t6 v. B0 U
. x# P0 P# A6 z$ b$ j, s4 k  {. e8 V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-8-13 16:03 , Processed in 0.041948 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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