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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
9 d9 j: o+ f4 V6 J# A2 C, P
  1. [code]EDMA sample test application4 s, Z' w/ F. U" a8 M. G, R
  2. /*
    ( \; [  E9 |5 i0 J8 G; N  n
  3. * edma_test.c
    * ]; R1 Z6 B! C. M
  4. *+ R$ m. S9 n5 G( ?8 m" J$ L) \- k
  5. * brief  EDMA3 Test Application
    ' o5 a$ H0 V' G+ \
  6. *
    ; E! B# J3 r! v! T7 p" Y
  7. *   This file contains EDMA3 Test code.; G0 M' M+ j# D( d# o
  8. *
    , N$ }$ B4 D# v3 t8 h
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    5 ?7 X# I0 Z* D! v& Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT. R" @' n5 L, f! q8 T/ d
  11. *         TO CHANGE.# ~0 |8 ?* L4 p9 r
  12. *
    3 R9 W# r6 k( [, S, S
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    : F, P; |2 Q" q1 q: _
  14. *
    ; G' R! W) q! X8 p% ~/ j9 x
  15. * This program is free software; you can redistribute it and/or
    ; q/ w- V: V% `2 E3 u; J" d7 I
  16. * modify it under the terms of the GNU General Public License as% O$ x7 q& M1 p) d% o' L
  17. * published by the Free Software Foundation version 2.
    & i' `/ |8 {: J  {6 |
  18. *! s0 t6 I; T/ L3 ]/ u
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    : @8 n8 W5 @7 Y7 e5 @
  20. * kind, whether express or implied; without even the implied warranty
    2 n- z$ K0 g2 ~/ ]  O. D! y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the' o# N: [1 T7 u
  22. * GNU General Public License for more details.
    2 S, I( V% P( A, Q
  23. */
    " _( [) o4 O* I& ~

  24. $ |$ C2 A& R! V' Z! Y: L
  25. #include <linux/module.h>
    ' W: l$ p4 A% J0 k) g! [
  26. #include <linux/init.h>
    0 r" G. L: F: b8 x$ i
  27. #include <linux/errno.h>
      M0 m) \- ~- h
  28. #include <linux/types.h>8 ?$ w0 L, M) F; I8 v4 D) X
  29. #include <linux/interrupt.h>' N# J" @' ^$ m7 B$ C; p. G  [
  30. #include <asm/io.h>
    % m  u- j0 r8 A9 ]& ~" C
  31. #include <linux/moduleparam.h>
    & s. V, }5 Z- \% @4 y
  32. #include <linux/sysctl.h>5 q6 C! x8 p: m, }4 {/ L* N
  33. #include <linux/mm.h>
    ; @( t) ~9 [7 }' z" ?' A4 r8 i
  34. #include <linux/dma-mapping.h># a& T8 R5 i4 P$ H) [, S9 ^

  35. * p+ B: l$ j7 d1 U& O( I9 s
  36. #include <mach/memory.h>, E) y: n# [0 E, ~+ t/ i/ I
  37. #include <mach/hardware.h>
    . H1 a0 ?% M; }% C
  38. #include <mach/irqs.h>
    6 @8 q9 x. ~( ^. x9 W
  39. #include <asm/hardware/edma.h>
    0 K! ^% X6 Z. c1 M
  40. 1 d  F  U' U4 i7 P% F& [/ A
  41. #undef EDMA3_DEBUG8 g  Y! P9 b% z4 i: R
  42. /*#define EDMA3_DEBUG*/
    7 ^  }( b% X0 V' _8 O
  43. . m* P- j2 J: Q, G) M
  44. #ifdef EDMA3_DEBUG: A8 D" ^! P# j; C! R2 }1 i  |2 a
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    0 G" o( N2 d, ?% E' f
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    $ C# g+ C: q2 h( g
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    # ?1 N& }9 L& @. A- n7 t- K" ?
  48. #else
    & ]. [9 y0 u+ q0 O( m# z& o* X
  49. #define DMA_PRINTK( x... )! w7 E' p' q, b" A# O/ j
  50. #define DMA_FN_IN
    ' p! a8 U- {( L0 a, r5 v
  51. #define DMA_FN_OUT2 _. L& T" s3 R' ?# n# M
  52. #endif5 t! e5 T+ Z# g  U3 y+ t- j' v, J
  53. 5 t  `( |! F2 g1 W$ _
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)  ?4 [7 l+ ?% w
  55. #define STATIC_SHIFT                3+ t+ \/ j8 d4 P2 c  Y  ^
  56. #define TCINTEN_SHIFT               20
    ; O' I- C8 B$ g0 }5 ^4 [
  57. #define ITCINTEN_SHIFT              219 G2 w/ ^9 R. w) P( E& i
  58. #define TCCHEN_SHIFT                226 P$ k# Y; a$ D: F  `
  59. #define ITCCHEN_SHIFT               23) r" _" E; k8 e% W: k5 n5 Q7 s

  60. 7 b! R: l8 w; R7 {4 a2 Q# n
  61. static volatile int irqraised1 = 0;
    1 q' u% o3 ?  z2 O: c  U
  62. static volatile int irqraised2 = 0;6 }& ?- Y- K/ ~! ?
  63. 6 D( b  \0 C4 _9 b* F4 F
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( U$ e  ^$ s5 ]8 ^, \$ i1 {
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);. O& Y/ S/ p8 T3 T4 n
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 f- [  S! m  x3 \. s( D. P

  67. 9 Q) w8 D, l7 E7 n; f" M. B- Q
  68. dma_addr_t dmaphyssrc1 = 0;
    - W  c- R. ^$ U" Q
  69. dma_addr_t dmaphyssrc2 = 0;
    : Q+ _1 ^, @! f) y9 B' }$ `
  70. dma_addr_t dmaphysdest1 = 0;
    * |7 i1 y- A8 w! y2 p6 A
  71. dma_addr_t dmaphysdest2 = 0;! G1 h2 c% H" \) s
  72. # F3 T. B* b; P$ L
  73. char *dmabufsrc1 = NULL;
    , p. D/ N5 L) M) D! V, D
  74. char *dmabufsrc2 = NULL;
    $ E3 a! _/ N! i) [: T5 x9 M5 Z
  75. char *dmabufdest1 = NULL;
    : A$ T% w* F3 F- P
  76. char *dmabufdest2 = NULL;  O, K. ^1 n7 |" [

  77. , v  U3 i1 w! `  s- a* X3 K' [
  78. static int acnt = 512;
    $ |- L! T+ {' d0 C0 x
  79. static int bcnt = 8;6 [5 H0 c* L4 j4 I6 h0 V5 O; n
  80. static int ccnt = 8;$ N9 w* G3 z+ S
  81. % ~" j0 Z0 Z! d
  82. module_param(acnt, int, S_IRUGO);
    ' A& |$ P; e% [3 g2 B( q
  83. module_param(bcnt, int, S_IRUGO);8 ^: E. P% O$ \8 M; c. s0 [! f
  84. module_param(ccnt, int, S_IRUGO);
复制代码
( I* ^) R& ]# V" y, R* W8 u* k

* d( Z- g9 Y" @9 I      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用* D) _# ^4 x% W
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 \4 E2 F$ y% o' G  T$ c
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
; K) ]: T  {0 ^/ C2 Z) w8 W! L. P5 A' n3 @

; R* ]& E- L* }9 O
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 23:11 , Processed in 0.040011 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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