OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
( K6 `& p% O" r% J  f0 A! z
  1. [code]EDMA sample test application
    ' y: H& ]. ]8 {! M
  2. /*
    9 o5 \: U7 ~9 r9 ]' \4 v% i
  3. * edma_test.c
    : Y) k9 e3 L! u6 N3 v+ G
  4. *) }! _8 n9 k! {/ W
  5. * brief  EDMA3 Test Application
    $ ~' C( }# K1 x; p! }8 ?
  6. *
    % U( U: t. K3 A# w9 x8 E* f
  7. *   This file contains EDMA3 Test code.7 B5 |  r" X* l2 P8 g* N# @
  8. *
    ( N  z  `3 H3 a% p' U- y1 x0 M8 o$ t5 p
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE& n& w; x. P" g3 R
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT' Y* q, y8 ]+ {+ Q
  11. *         TO CHANGE.
    ; `& B* W: R2 Z# d) ~' Y6 g: R5 u6 g" N
  12. *
    6 @8 k- `0 w5 J6 A* b7 G9 [$ \
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    , Z* W1 J+ F. X( K, G
  14. *3 b& K4 @. J* {. ^- Z, K
  15. * This program is free software; you can redistribute it and/or. [8 T* I: E& R7 J, G
  16. * modify it under the terms of the GNU General Public License as* A8 w* q7 b6 m, j
  17. * published by the Free Software Foundation version 2.3 i8 p) r4 g* T6 w4 [
  18. *
    " W) u. B! I$ i
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    % ~0 o/ D  z. Z8 r
  20. * kind, whether express or implied; without even the implied warranty  C! u$ Y, c  P# \* y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, o/ i* K3 S0 y
  22. * GNU General Public License for more details.
    7 E6 [# ]+ x% |3 p( Z. f
  23. */( [, j' Z$ Q: M5 z1 S
  24. / G" z# W9 N, M6 U6 V% Y
  25. #include <linux/module.h>- `' s- k) J: k" A/ x8 }0 m
  26. #include <linux/init.h>. m' z$ C5 ~1 Q$ G4 }
  27. #include <linux/errno.h>/ }, v( @8 o4 x) J
  28. #include <linux/types.h>
    2 e+ j* m  K0 }  l
  29. #include <linux/interrupt.h>( k/ b- W6 H+ J
  30. #include <asm/io.h>: t( P1 B9 Z5 v
  31. #include <linux/moduleparam.h>) W0 D" G9 t  ?3 n
  32. #include <linux/sysctl.h>
    . p4 X" @5 v2 t
  33. #include <linux/mm.h>
    ; k. |+ u) E$ _7 h4 T! V
  34. #include <linux/dma-mapping.h>7 A# N( Y# j6 ~) o% T

  35. 3 ~! f9 [" k' f$ ~( W, U
  36. #include <mach/memory.h>2 ]% D3 B& \5 f/ o9 g( m4 i: E
  37. #include <mach/hardware.h>2 K6 z, v2 w: l8 S( B& N
  38. #include <mach/irqs.h>
    9 D/ v0 |$ Z- [7 s4 A8 x8 ~
  39. #include <asm/hardware/edma.h>( ]% k" U' Q7 _- P* Z

  40. 5 c/ J2 w9 p+ u, ~# p$ \2 Z% _
  41. #undef EDMA3_DEBUG* g% l* \3 z: v# c$ i
  42. /*#define EDMA3_DEBUG*/5 o+ @/ A  r" R8 W8 s4 M! H

  43. ' Z/ v, t4 Y, {: E6 d5 x/ s
  44. #ifdef EDMA3_DEBUG
    + U8 V. s% i' ^2 w3 X* E
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)7 I  E1 I) F2 E) H
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( U# \5 w6 @  s6 o* t6 b
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__). u0 Q# ?1 s, k0 t& l
  48. #else
    $ n* ?# z( [5 K* Z) h- S  R
  49. #define DMA_PRINTK( x... )
    7 \  E* H) v8 @, n, s
  50. #define DMA_FN_IN- k2 E, B: h, v' a6 Z
  51. #define DMA_FN_OUT
    2 |" C" y8 h+ y$ \6 }% b5 ~
  52. #endif* B/ x; v8 y6 Q: v* h7 I$ l
  53. ; N7 @% R* }$ c# G. v
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)3 ]  r8 ^9 v' E1 p
  55. #define STATIC_SHIFT                3
    " j. v) A/ p/ _( i2 ^& F
  56. #define TCINTEN_SHIFT               20. V2 [% e4 h- X) ^; w- P, a0 U
  57. #define ITCINTEN_SHIFT              21
    . Q% T, g1 _. q8 F( \* L
  58. #define TCCHEN_SHIFT                22
    # B% u. ?* ]  X0 x4 {
  59. #define ITCCHEN_SHIFT               232 q2 z4 I4 U, {, d
  60. ) S8 W* q. E" S3 H3 m
  61. static volatile int irqraised1 = 0;0 p4 P, a  l' d6 h/ B
  62. static volatile int irqraised2 = 0;
    + q0 a- a& S7 C+ B7 z+ X/ I

  63. % c8 Q5 s3 Q; T; c8 d
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % _/ c; U' h# J) l' H# ^
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " r1 P9 D( C- K2 \& y3 h; X! r
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- c9 t1 A. [- c* {
  67. ) Z! ]( F; r7 f& [) n# W
  68. dma_addr_t dmaphyssrc1 = 0;# y; ], z" u: B3 @$ v8 N
  69. dma_addr_t dmaphyssrc2 = 0;
    & h- d0 o: w5 C# B! I0 R) @
  70. dma_addr_t dmaphysdest1 = 0;
      E" i* W/ R4 R5 l$ Y
  71. dma_addr_t dmaphysdest2 = 0;
    & u" d% c6 R' F
  72. + P* k) d/ ~0 N4 y2 Z% W& j5 p
  73. char *dmabufsrc1 = NULL;3 ]8 x* \, T5 f' ~8 k/ ~
  74. char *dmabufsrc2 = NULL;
    $ T- C0 ?( Y+ L
  75. char *dmabufdest1 = NULL;
    + }" |& x6 P: o% K. v: z
  76. char *dmabufdest2 = NULL;
    & L6 p! X8 J8 }7 g+ R/ H6 y5 u

  77. ' O$ \; u/ y- {: Q
  78. static int acnt = 512;- ]* N$ n* g  d$ X3 [. Q: d0 J
  79. static int bcnt = 8;$ ^6 i* g3 ^% ]7 W+ e9 r/ m. ?
  80. static int ccnt = 8;
    $ N3 Q$ N6 t- f

  81. . X! [! L) W9 q! U/ m" Z
  82. module_param(acnt, int, S_IRUGO);
    $ G* [' {/ m( E  B; C& Z+ Z% ?, T
  83. module_param(bcnt, int, S_IRUGO);1 M: I% H9 x4 K* a
  84. module_param(ccnt, int, S_IRUGO);
复制代码

! e+ }7 w1 b8 Z. c, G0 q
: e3 x" q! Y/ N! q) I$ e, ]8 i      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 W  A+ ~# ^5 r# D
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。4 L& B1 j7 [8 p1 y2 n
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
7 P# l8 }( u5 k) e  E  E" K, ?
/ P: R- |) ~) r0 Y) U3 I5 D  F! I9 Y6 k: O0 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-15 21:30 , Processed in 0.036909 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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