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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
0 Y; n/ G8 e% D# j6 w
  1. [code]EDMA sample test application8 W7 m0 C' O/ u  T
  2. /*
      m# h- i+ `- F
  3. * edma_test.c! k4 o/ @9 t; W9 B7 O( \, e
  4. *8 R" Q8 i( M1 W+ @0 C
  5. * brief  EDMA3 Test Application
    9 F1 R. L9 M' l  _6 e$ [& [
  6. *
    & k# }4 `' z* c9 X% Y
  7. *   This file contains EDMA3 Test code.9 x7 d3 i: _/ h  q
  8. *" t2 k# [, V) d6 L
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE/ U% [0 J# z) a' ?( \# @
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ! S( ^$ l  q/ f4 G! L8 t' ~
  11. *         TO CHANGE./ _: l% w/ Z: ~
  12. *
    4 L: D' V# G: B: v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com// k3 S" @4 l; O+ M8 r
  14. *, q! X# a/ e3 u8 i( e+ Y
  15. * This program is free software; you can redistribute it and/or
    ! p9 S$ H4 _6 @* L$ {
  16. * modify it under the terms of the GNU General Public License as
    4 ]* I" {2 X9 J( }1 k, x  h
  17. * published by the Free Software Foundation version 2.2 B1 m; [3 `9 v1 N' z/ J: b
  18. *% m3 E8 c5 J- }6 K. u0 C9 i7 X- Z
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ) \6 y) R' h" l4 c* r
  20. * kind, whether express or implied; without even the implied warranty3 o" g- K# h. Z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the; `" j# W$ e( a. F  ^, g
  22. * GNU General Public License for more details.0 v) v. W* l3 j" e. b
  23. */
    7 o. f. f& Q3 O4 \) C/ K

  24. $ s% O1 a. M% b7 U% m
  25. #include <linux/module.h>+ N1 R2 U$ F7 I  ~
  26. #include <linux/init.h>
    7 `7 I) Q2 J2 x- o: F( J
  27. #include <linux/errno.h>
    7 u9 @! v9 Y% E6 K
  28. #include <linux/types.h>& @, |8 \! b& P1 S& G: X8 d8 d  k
  29. #include <linux/interrupt.h>
    # B( I5 F' n/ \3 u$ v; W
  30. #include <asm/io.h>) s% F# x$ y, h5 z9 o
  31. #include <linux/moduleparam.h>
    1 }- ^9 J" b) ?( Q$ l4 s
  32. #include <linux/sysctl.h>' `8 |' Y2 V9 @( X/ D& n7 M9 \- n
  33. #include <linux/mm.h>
    : R5 ]9 ?: A4 ~$ a
  34. #include <linux/dma-mapping.h>
    ) P2 d& ^) E% ~) e  y  a& R

  35. & {' L: T7 G2 o6 [) O
  36. #include <mach/memory.h>
    $ d3 H; O9 {- g' K* K8 S' A; L6 g
  37. #include <mach/hardware.h>
    ) k  d$ ]) O) V) u" j
  38. #include <mach/irqs.h>3 s' H+ X, o! I- R6 l! C4 \6 ^7 k
  39. #include <asm/hardware/edma.h>3 M' R7 M8 l3 C

  40. % x; r. h& Y. Q- |$ c- G; I, l
  41. #undef EDMA3_DEBUG
    ! _& t; k0 w4 `" J
  42. /*#define EDMA3_DEBUG*/- [8 J& V* v; s+ r: q' E

  43. , A1 U& h' ?+ B* U& U, _
  44. #ifdef EDMA3_DEBUG
    ( B% h# g3 ?. E# |! W0 r. I" j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    7 e$ l8 j7 d- `- V6 g! Z# l* ~& C; g
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)1 w5 [5 i$ n, Z( G8 W1 C% k" j$ u
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    1 c6 r5 ]) m& d2 Q1 W4 C
  48. #else* T4 ]" t1 w# P! r/ D& T: r
  49. #define DMA_PRINTK( x... )7 z- F+ w5 C1 s( ~6 ]+ z7 T5 |# g
  50. #define DMA_FN_IN2 D; \8 p5 B3 I/ [8 {
  51. #define DMA_FN_OUT/ H! N( A  j2 i! I
  52. #endif
    + a, \- o" y1 @) w1 _% x
  53. + Y: o7 e8 g% y2 W, Y7 W6 B/ |* ?1 b
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)" b( S+ e# k5 R
  55. #define STATIC_SHIFT                36 T0 K9 X; a8 y" y& N9 J
  56. #define TCINTEN_SHIFT               207 s" r9 ^% W. l9 Q  ]/ a; q
  57. #define ITCINTEN_SHIFT              21
    ' G/ s$ V- V" A7 E  z
  58. #define TCCHEN_SHIFT                22- h+ D' }# L6 z, L5 R
  59. #define ITCCHEN_SHIFT               23  [$ j6 w5 z6 C3 V6 O

  60. # ]9 }" L2 G' [3 D6 }' N
  61. static volatile int irqraised1 = 0;
    % z% M5 o+ n+ M% o4 U! `- {
  62. static volatile int irqraised2 = 0;3 q, g' O6 j+ p5 p0 A" z
  63. 4 s: ]+ z+ N* Y! s$ I, G
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ v7 J6 o$ k% A1 G: _3 a
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 z' k/ e7 ?) l+ l  V* r) x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; C1 l3 @- q3 E# E& t! H8 N. N
  67. 0 n. @. L/ D) w; b* ?
  68. dma_addr_t dmaphyssrc1 = 0;
    - X7 O9 k7 A% x) j  X4 g9 M' m
  69. dma_addr_t dmaphyssrc2 = 0;& m% D/ {/ G# T
  70. dma_addr_t dmaphysdest1 = 0;
    * V; }: i, [  @2 c
  71. dma_addr_t dmaphysdest2 = 0;
    + g  x" B/ Q( {
  72. : O1 i# o7 X$ J
  73. char *dmabufsrc1 = NULL;
    / l$ t% N# x8 E9 i) f5 e0 F: O
  74. char *dmabufsrc2 = NULL;
    " }( C& i- q0 a2 f. k/ c
  75. char *dmabufdest1 = NULL;; q, ]7 E, ?2 e
  76. char *dmabufdest2 = NULL;# u1 s2 K) P6 F* a
  77. % r0 M) e) v4 ^% r* x, W4 b  U
  78. static int acnt = 512;1 ?2 H; F2 ]" u5 @2 l
  79. static int bcnt = 8;1 h8 d, L  Q6 @0 A# c
  80. static int ccnt = 8;
    0 B# }/ J) G+ `

  81. " t: J( h& |, G6 q% l) Q3 E
  82. module_param(acnt, int, S_IRUGO);
    2 x' R0 ]) o& ?; J- O+ D
  83. module_param(bcnt, int, S_IRUGO);( }7 N( Y2 S0 J
  84. module_param(ccnt, int, S_IRUGO);
复制代码

4 V. p- ?" l6 v' A* ?
5 b, r* v0 x+ W8 I# l$ @" F      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
: L# _# k4 T* E9 q0 [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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
8 ^5 B- F3 q2 }5 Y     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。" @4 a6 Z5 a- e( ?' J

. s4 D6 S3 D: d5 @7 }+ \% P$ c; r$ l& |1 Q8 z0 H
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-21 11:21 , Processed in 0.040501 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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