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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ' Z1 @7 W# N5 J7 R' R, z9 n) Q( L
  1. [code]EDMA sample test application
      s# {9 {( b  B! q4 {$ T1 Q- `
  2. /*: R5 F$ ]0 D' `) b/ \2 i& P  r3 d
  3. * edma_test.c
    " J/ x3 X# {- N) n
  4. *
    , v4 i- x% A! A! R$ @6 E
  5. * brief  EDMA3 Test Application
    # ~* X; p" h" Z: B
  6. *
    " B' B0 V( S9 }# A2 _9 b
  7. *   This file contains EDMA3 Test code.5 `) A, G# W+ j. M$ |; X4 w  s: M+ y
  8. *. W9 _1 @/ f4 v: x9 l$ B
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    , G. `& K" d9 P0 G2 l8 d0 p
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    + m; z( m: b( E+ K! c; D: e) e: J5 D
  11. *         TO CHANGE.
    . Q+ |2 Y% v5 K6 s1 a6 G& C
  12. *$ Z* ~$ z( C+ p/ O
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 |& }" v; N2 m
  14. *
    8 W9 v! V* t& |
  15. * This program is free software; you can redistribute it and/or' w6 i9 t. ?) g/ e7 H" X7 Q
  16. * modify it under the terms of the GNU General Public License as
    3 Q4 X3 D% X2 t' q
  17. * published by the Free Software Foundation version 2.
    ' c8 V( [5 m" Q8 f
  18. *
    - c8 S0 ~" j3 r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any9 C4 q" i8 m* P) b
  20. * kind, whether express or implied; without even the implied warranty
    6 h& w3 m" l+ H3 R7 y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 [4 V8 R# W4 H9 M  E
  22. * GNU General Public License for more details.
    3 i# \3 \% S- I
  23. *// B- z" T8 d, h  G+ A) B
  24. 8 c( ?9 t# }7 r2 v) H( U+ _; z
  25. #include <linux/module.h>4 R+ q' U+ y/ ]& Z
  26. #include <linux/init.h>
    : }. n8 X, ?: j0 n- V. w$ a! D
  27. #include <linux/errno.h>
    6 t7 d! ~4 y6 H2 U
  28. #include <linux/types.h>
    : V: `7 l& T5 h5 k* i: O! T
  29. #include <linux/interrupt.h>8 F6 }: f7 G0 r. e9 m+ g
  30. #include <asm/io.h>" o; o0 Y2 ]7 `! O9 b
  31. #include <linux/moduleparam.h>1 ~; c7 z$ f9 l/ ~% K0 Q9 e
  32. #include <linux/sysctl.h>$ g0 y8 V% I% u  Y$ l
  33. #include <linux/mm.h>
    8 S, C8 [- b0 Q+ G' n6 f
  34. #include <linux/dma-mapping.h>
    3 |2 a4 s6 @0 X; h9 T2 H

  35. : z2 E% i9 ~# U% e. N: ~, m# y8 |
  36. #include <mach/memory.h>) d* D  h" U1 P/ M5 W
  37. #include <mach/hardware.h>) K+ Y; o: J+ M" b* b
  38. #include <mach/irqs.h>9 d. @+ I# R' `
  39. #include <asm/hardware/edma.h>/ F# g9 u1 a+ D) N/ j0 S# j3 G; r. N
  40. 6 u) c  u9 u# b+ N% o0 A* s
  41. #undef EDMA3_DEBUG
    ! b" |9 w- ], i* B7 T, Y
  42. /*#define EDMA3_DEBUG*/
    / _+ \( j/ J# _5 F

  43. 8 K: J* o2 {+ m5 S* b! a9 X8 |
  44. #ifdef EDMA3_DEBUG
    ' [) i4 O: f# W# [
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS). I+ d. ]$ I/ d* k1 P8 ~
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)0 S% W  |" p) L: m  M5 G- q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 F  e2 Y2 @9 R6 S- S! t. |1 P
  48. #else
    % M! ?7 w' E4 z+ |5 b7 e% p
  49. #define DMA_PRINTK( x... )
    2 k  n: b+ v9 N+ C- P3 Z
  50. #define DMA_FN_IN
    3 }& p( v) O7 v' V' y# G  [0 N/ }
  51. #define DMA_FN_OUT9 D4 ^, Q+ K: t8 v; P8 v1 M
  52. #endif
    - _1 {; r* g+ d: f. M5 ]0 Y: B

  53. - v. h6 N8 C% Z1 H) ^4 V/ n
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)$ W2 m! K  O4 I) f
  55. #define STATIC_SHIFT                3, A3 A( v1 D5 o0 X) m( h, v
  56. #define TCINTEN_SHIFT               20& X0 Y' Z. y) Y
  57. #define ITCINTEN_SHIFT              21
      [# @' T; D# v. C5 {. }3 e8 P
  58. #define TCCHEN_SHIFT                22' J& J& F# F1 E8 {
  59. #define ITCCHEN_SHIFT               23+ S3 m- ^+ ]2 c. i9 }3 [

  60. # \% b5 S7 e4 o0 v
  61. static volatile int irqraised1 = 0;5 ]7 o; Q" w$ z! k! P. c# T3 T
  62. static volatile int irqraised2 = 0;
    ( ?- U1 T, S+ e% L

  63. 6 j; G# p" j3 _. v' {
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 I5 `& s1 Y; q3 n
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ J/ D+ J. _, W" A$ _
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  ^% v7 `% m5 r& u$ O6 v# g

  67. / C& v9 N* h: R# S6 O  f" k/ X
  68. dma_addr_t dmaphyssrc1 = 0;( ~% \: Z# u, i& R. R
  69. dma_addr_t dmaphyssrc2 = 0;% T: E, m! E. U
  70. dma_addr_t dmaphysdest1 = 0;4 Q7 N- q! k+ R( P: O7 b
  71. dma_addr_t dmaphysdest2 = 0;) }' A; M7 y# p. k/ }3 u! u
  72. 5 O7 W# R' [8 O# d6 Y
  73. char *dmabufsrc1 = NULL;" m+ e* T. x- C; T; P' _9 m
  74. char *dmabufsrc2 = NULL;
    7 X1 ~( @7 J. N
  75. char *dmabufdest1 = NULL;" a4 B' i- g: v% s' k/ b
  76. char *dmabufdest2 = NULL;$ i/ v6 l$ `: \7 i5 j  u% r6 {

  77. 3 t7 X- S; A  z: O! H
  78. static int acnt = 512;
    5 \% N/ C& x: o( P
  79. static int bcnt = 8;
    9 H. [' z0 e: z/ g
  80. static int ccnt = 8;
    3 u6 o# N! v  m1 T5 q
  81. ; X* j+ L9 o3 H+ p! h+ k* V
  82. module_param(acnt, int, S_IRUGO);
    ) q5 {, |0 v9 Z# C" b: Y( N" H- L
  83. module_param(bcnt, int, S_IRUGO);
    : l% j% @+ h& `5 C3 ?
  84. module_param(ccnt, int, S_IRUGO);
复制代码

+ n! X8 E1 i' C' |! t  L
! e; k; ~  J7 m# o, P9 s' f% s      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 h5 j  q. ^$ n' c, t. e6 P, L
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ d! H! C1 v3 A+ i2 N. n+ D6 [0 d
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
) q! O& y+ x4 J. Y5 q- k
6 b, t' ^1 G" K9 F1 L8 i
! H! O! ]! B+ j2 F; J: ]% B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-21 20:12 , Processed in 0.039908 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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