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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
  a% n* X% V2 _
  1. [code]EDMA sample test application
    % f$ p( j, p' ]* Z8 a
  2. /*# a( ~0 s! R  |6 v0 Y+ D/ T& B$ c% {( m
  3. * edma_test.c
    / e" ~! p) d5 n/ I
  4. *( t/ h0 ^+ H  E
  5. * brief  EDMA3 Test Application; J3 `( v& |  ?* }# R
  6. *
    1 l0 p" m9 j3 x
  7. *   This file contains EDMA3 Test code.
    3 f2 |8 A7 X+ g
  8. *0 C0 B# n# y6 h) R2 S
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE" s" H/ W5 U' j* o" s; e( R- X
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT  N4 t4 m2 t: @- E0 `6 e
  11. *         TO CHANGE.
    6 N8 l9 g3 z: i2 v! i% u/ ]* a
  12. *5 P) U) ?. f0 \9 Q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/' Y. i2 G. Y5 Y. p- ]( O
  14. *
    , k; Y# \6 [1 P9 M) [4 {2 Z7 k
  15. * This program is free software; you can redistribute it and/or$ O1 |- V+ ]3 P# E7 N
  16. * modify it under the terms of the GNU General Public License as
    ! Y6 g. s8 _# V" z/ X
  17. * published by the Free Software Foundation version 2.' Z. W1 @! Y( D2 f7 Y, p
  18. *3 n" f7 Q4 d) t+ g( \
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any& ^6 y( _. a/ L! d$ o  @9 @
  20. * kind, whether express or implied; without even the implied warranty7 z! B& n, h* Z7 Y" T+ o- n( l, e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the4 W) A) X) q0 p) K; R
  22. * GNU General Public License for more details.4 }# R6 e) _. M; g. i! N0 R
  23. */
    + i, w0 [4 w1 Z: b
  24. & _% o8 n3 [" x: ~' p
  25. #include <linux/module.h># x, N6 p: u- @- q, |" X: W
  26. #include <linux/init.h>8 U  H% C* d  h, l& i% F. n$ c
  27. #include <linux/errno.h>8 i) k! ]7 W' a/ H0 J3 L4 N
  28. #include <linux/types.h>
    1 L5 h' E, r+ ^. K* A
  29. #include <linux/interrupt.h>* ]. v, D* d& C, ]" H5 ~
  30. #include <asm/io.h>4 ~* \, r( s7 L; B, i; X4 \& X/ q7 p
  31. #include <linux/moduleparam.h>
      r7 D# S5 U$ Q0 j4 j7 C
  32. #include <linux/sysctl.h>( D6 u/ c9 t; X6 a
  33. #include <linux/mm.h>
    / B# I1 ~' a, q4 Z
  34. #include <linux/dma-mapping.h>
    : y/ r. h! \: S

  35. 0 T9 A( b' L2 u# ~6 j
  36. #include <mach/memory.h>
    . |6 n% \. J2 Q5 Y9 A
  37. #include <mach/hardware.h>: I, b! T: `) v! C
  38. #include <mach/irqs.h>
    5 O/ m% t  P" m
  39. #include <asm/hardware/edma.h>
    ' B& O. a8 j: h6 o( v
  40. 4 i; ?+ R7 O/ H4 T0 X' K3 P
  41. #undef EDMA3_DEBUG- b* J/ b& b5 \2 m4 n/ o7 t' ^
  42. /*#define EDMA3_DEBUG*/* ^8 f! L# q  ?$ |

  43. - {- F+ I: G. D; ~7 }
  44. #ifdef EDMA3_DEBUG
    1 ?1 s: I9 j) z
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)8 Y# Q2 }7 i$ z( }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ; m6 O8 k/ P0 j. w# M- D
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)" B" b2 b; H+ p; W5 G) J6 Z4 {
  48. #else- p9 u4 k$ }; W: ?
  49. #define DMA_PRINTK( x... )
    & O) ]6 n# Q( ~1 X
  50. #define DMA_FN_IN
    0 z5 t( B2 B. Z) L
  51. #define DMA_FN_OUT) B0 F/ ^" p* p0 N( E' Q0 J8 c
  52. #endif
    6 Y: D9 F* V% S# j5 E/ k

  53. 5 L$ G5 l. N8 P* v7 _. C
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    - p/ ~  L+ U6 U& H
  55. #define STATIC_SHIFT                3
    - p$ p: U* D1 C  k" b. r
  56. #define TCINTEN_SHIFT               20
    + K. X7 S. I8 G7 m  ^
  57. #define ITCINTEN_SHIFT              21) a) F! S# B& W, `, z# N# X
  58. #define TCCHEN_SHIFT                22
    . u# Z5 }1 Y) U5 L
  59. #define ITCCHEN_SHIFT               23
    1 x, V( t5 ]' ?5 t; U$ @, {/ ]

  60. 8 v2 A! }( g# {. a
  61. static volatile int irqraised1 = 0;
    # m( f/ \, a! v/ O* z7 }
  62. static volatile int irqraised2 = 0;
    ' i  y5 A6 K; H. v
  63. 7 H3 B8 w2 ?8 I+ p: e5 T$ ?
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* A( I5 P+ d1 ?1 o
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 N; `# t! R1 L% c
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 Q7 O- _' Y* F4 e  i4 }1 f# \
  67. 1 m. `' E2 }7 r
  68. dma_addr_t dmaphyssrc1 = 0;! r) u; s- S' l8 g5 c
  69. dma_addr_t dmaphyssrc2 = 0;( I4 ^1 }! }5 ]/ K( J: G) D
  70. dma_addr_t dmaphysdest1 = 0;
    % S/ {( {8 L. v  r/ ~) {
  71. dma_addr_t dmaphysdest2 = 0;: U3 }2 P9 o1 o+ z
  72. : _+ E2 q' |, S5 p
  73. char *dmabufsrc1 = NULL;
    9 y" [6 g9 r  n3 X8 j
  74. char *dmabufsrc2 = NULL;) j4 O  j+ f, A$ E
  75. char *dmabufdest1 = NULL;, z4 T& ~" q4 I" G2 R
  76. char *dmabufdest2 = NULL;
    ! M3 P. l, L( S  _+ K( {

  77. # I' e" q- Q6 p8 c+ L5 I! j
  78. static int acnt = 512;
    ! v& \' N8 z+ Y, W% _
  79. static int bcnt = 8;
    " w2 r8 ]" M- }! D4 N/ z! S
  80. static int ccnt = 8;
    " n/ V8 w+ a; j
  81.   [4 E8 i0 Y5 ]* s
  82. module_param(acnt, int, S_IRUGO);
    / p* r: ^  N! G
  83. module_param(bcnt, int, S_IRUGO);7 U6 X# h8 e# y5 F  r
  84. module_param(ccnt, int, S_IRUGO);
复制代码

: t, G0 d% x% U8 ]; M/ {$ |' F6 `9 M: Q0 M* {$ j
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" ^" [. t1 [& `* H" {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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。6 l5 c3 x4 F1 d( u% S
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 W! m* c" g7 h( q- [! A
4 x% I, j7 ^4 T! ]" B" x5 f& r6 H" H$ q: d; O, K6 t4 }" B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-22 02:14 , Processed in 0.044442 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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