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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
- P, _1 [. ^9 a
  1. [code]EDMA sample test application  ]" X6 ^  @; w' _) J7 ]3 M
  2. /*
    7 s: d' G5 Z. w! m
  3. * edma_test.c7 V, x/ S' g& H
  4. *' B$ Q/ {- F* u4 \0 d
  5. * brief  EDMA3 Test Application
    % m' N) n1 F, z8 O) Q% T
  6. *1 l* M1 X+ j. z: a
  7. *   This file contains EDMA3 Test code.: R' ?+ \1 J. x) p
  8. *- G& z1 |+ r& ]) y& f/ e; ?
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE8 _6 z+ h7 N% u3 |
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    : j7 j) ?/ x+ H
  11. *         TO CHANGE.% g! O: \' P# c  I7 R
  12. *; N% v! b. V7 B/ ]' j& I( v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/! {: L) `$ ]9 x2 O6 W3 b6 m! }  H' {
  14. *# |! u; y1 i6 {. }$ k, Z
  15. * This program is free software; you can redistribute it and/or
    ( ~. L% A6 D/ r9 z6 E. d' }3 _% I
  16. * modify it under the terms of the GNU General Public License as# H8 V- T$ Q6 ^, O0 U
  17. * published by the Free Software Foundation version 2.. t8 {. \7 ~: |  U
  18. *1 L  I: w4 O* r1 M2 ~8 \% p
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 B" @3 g& F" O7 q/ s
  20. * kind, whether express or implied; without even the implied warranty
    & _% O1 \9 ?' A  {- T# d
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$ x- \- s2 R2 ?2 b/ Y5 J  ?$ ?2 m
  22. * GNU General Public License for more details.
    6 B! E/ ~  z1 i2 ?7 _6 q  T
  23. */: R- N3 G8 C) o4 h

  24. : S% i- ~/ I; ]8 H6 j
  25. #include <linux/module.h>
    ) m8 a% \3 ~; m3 u! ?
  26. #include <linux/init.h>
    5 A  G" g" l6 R3 d% v, F
  27. #include <linux/errno.h>
    2 J0 h. b4 e  A6 s  A8 _$ C
  28. #include <linux/types.h>
    5 D, K) J9 D$ L) j) P/ a) v
  29. #include <linux/interrupt.h>: E& B2 U) T8 s! h( \/ d
  30. #include <asm/io.h>0 ~( l6 e2 h& q7 \1 {! [0 b  I% {
  31. #include <linux/moduleparam.h>6 b( D+ w, }' U
  32. #include <linux/sysctl.h>
    ( X' D% @% J3 g- N
  33. #include <linux/mm.h>$ i( y, F/ _4 G! f8 V
  34. #include <linux/dma-mapping.h>
    5 }, R. e4 z$ J0 o. H1 _

  35. 4 W1 H1 a2 P+ L' I: A+ b
  36. #include <mach/memory.h>
    8 ?, W2 x& M7 \
  37. #include <mach/hardware.h>
    & W6 e9 M' h+ O, U# L8 B5 C
  38. #include <mach/irqs.h>. O6 v8 k. r6 ~6 N9 i% L6 N/ Q" A7 O# F
  39. #include <asm/hardware/edma.h>
    4 @; K. k5 [6 G

  40. 7 [6 l7 s$ F- d8 D, w9 |
  41. #undef EDMA3_DEBUG7 S; K2 M& T2 V, z( R
  42. /*#define EDMA3_DEBUG*/8 [, J2 Q1 M; I4 X& c9 s
  43. % j; e/ d4 ^" @7 M# C: V3 r
  44. #ifdef EDMA3_DEBUG7 ~! ]* |$ b' a: d4 F
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! N- `; ?5 S9 v! J$ y# t+ V
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    * |# g, ~' Y, f7 {" Z& m* p5 U  `
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    8 T3 Y" i; J) A. x2 L
  48. #else
    ' D2 i" j; x2 P$ R# Q& J' y
  49. #define DMA_PRINTK( x... )
    - L3 H6 e! ~# z4 w$ T; I
  50. #define DMA_FN_IN' X' U# A& ^6 B& d& [2 b2 z
  51. #define DMA_FN_OUT
    / X+ l$ v0 H* K& M- r/ y4 y. v0 Z! b9 q
  52. #endif! }: x5 P/ l( |# M* M: n  \

  53. 8 U* T5 T! a0 @8 Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* a; A0 E4 p+ d' K! h+ m, D
  55. #define STATIC_SHIFT                3
    3 h5 G; e3 w6 g# i
  56. #define TCINTEN_SHIFT               20
    . g3 `3 }* R9 n# z  B
  57. #define ITCINTEN_SHIFT              21
    ) R/ s  S" O2 }0 D; R# ^% ^
  58. #define TCCHEN_SHIFT                22
    ' q: p( [9 R) b, `( A9 w( ^
  59. #define ITCCHEN_SHIFT               23
    " D; d+ v* q/ ?. i4 J  p+ q9 b$ P

  60. 9 `1 }7 t, ?- _9 U0 k: `
  61. static volatile int irqraised1 = 0;
    9 e/ z1 L* p1 q
  62. static volatile int irqraised2 = 0;
    - U& t/ n& C! `5 a% Z
  63. - _4 X  ~, T. s* q4 V, C+ N
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 q% p" }2 C; F+ F
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 u& y7 B9 K; e4 [7 z' x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);9 P/ T+ O: o+ b9 [8 `* @. k8 X- H! @
  67. ( z; p4 V# f0 U2 W- j
  68. dma_addr_t dmaphyssrc1 = 0;
    5 ^2 ]9 f% [" Q1 I  C. s
  69. dma_addr_t dmaphyssrc2 = 0;
    % u9 B7 M# U2 c2 c/ J: @
  70. dma_addr_t dmaphysdest1 = 0;4 ]( \" B' C1 H' X+ B
  71. dma_addr_t dmaphysdest2 = 0;! q0 Z  F! B4 M

  72. , u8 a9 W- Q: c7 L+ U
  73. char *dmabufsrc1 = NULL;
      ^* \( |. V" j' q; e6 y
  74. char *dmabufsrc2 = NULL;1 D$ J4 p: o# }. b6 K/ M% q) Y
  75. char *dmabufdest1 = NULL;! m: Q2 \7 Q7 C# }
  76. char *dmabufdest2 = NULL;7 Z0 Y% n* }! ]- @) f, H

  77. , C3 L; K5 _2 t& W8 U# h, p+ ]2 g
  78. static int acnt = 512;
    + Q. ]2 j7 Z& P5 x
  79. static int bcnt = 8;( T/ H3 J" X" U+ j
  80. static int ccnt = 8;8 V+ u5 S7 x- a) f$ o3 n
  81. 3 j: F" \3 Z6 c, R& g' w! o
  82. module_param(acnt, int, S_IRUGO);
    * {% M9 F4 q! o2 x- V2 P) w
  83. module_param(bcnt, int, S_IRUGO);
    4 f# D6 S( P; D3 J, u7 c
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 i5 o  ~* ^5 P& l

' U% R8 ]& ~1 E      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
. s) [8 j2 C# [& ]5 varm-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 q1 F! Z( n" J; C
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
- T4 |# e, P/ @& \( |( G) Q
2 ^) ]8 C: a8 B  C" v# X- v) ~/ _1 c, O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-14 05:56 , Processed in 0.039573 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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