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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 [, G$ V% E7 L$ T' X
  1. [code]EDMA sample test application, R4 @& Y* U9 z% X
  2. /*; b3 f7 |+ u4 X1 D2 g
  3. * edma_test.c* ?" Z9 G8 d5 {4 e
  4. *( x6 n' C. ~  w* S% C( G3 m
  5. * brief  EDMA3 Test Application
    - q* c4 Q0 f, p" P9 ~+ k8 v% z; ]& L
  6. *
    # D. d# I) A& W1 G2 I' ^
  7. *   This file contains EDMA3 Test code.
    # F4 U6 F5 v* x2 h1 u
  8. *
    # _2 Q" E3 M' d+ {
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    8 U: S0 L2 H, a& @) k+ [
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT! e+ M/ F) o0 S' v) Q5 ^) @
  11. *         TO CHANGE.
    # a) n& c/ P" b- y5 h& @
  12. *
    $ y4 x7 X, A! d
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 M1 c8 m* ^- v0 w, A
  14. *
    9 @# _/ p. m% p% L4 N$ v: J8 u
  15. * This program is free software; you can redistribute it and/or- ]3 C7 \& Y" y8 G+ c5 o6 ~
  16. * modify it under the terms of the GNU General Public License as
    0 g9 H7 c  S7 h! g
  17. * published by the Free Software Foundation version 2.
    / |4 }* e* r" u" J
  18. *8 S8 u1 D+ T- P+ f$ O; ^# v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any+ q$ X4 K# ?4 ~
  20. * kind, whether express or implied; without even the implied warranty9 N) }, ?+ \: \+ l% T8 G( j
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    : a2 |- j2 m, F* f% b4 e( O) a! Q
  22. * GNU General Public License for more details.% y! K9 l. x/ h) n+ N
  23. */
    . P+ X# q; l; L* m' r# _3 ?% L* v7 X, a
  24. 3 ~( M* Z5 ?: w2 v! u+ x) O
  25. #include <linux/module.h>
    " O( L5 `5 `2 @
  26. #include <linux/init.h>
    9 }: C4 q( T# v; D- u, r1 q. H. |
  27. #include <linux/errno.h>
    * N* T% r$ g- D  |, E
  28. #include <linux/types.h>, x8 v! t4 u5 v/ \5 e
  29. #include <linux/interrupt.h>
    0 G2 L3 O+ Q6 p( L
  30. #include <asm/io.h>$ v7 o( e2 M5 E3 o' }* G
  31. #include <linux/moduleparam.h>
    ! V6 M) e  {8 P) |  L
  32. #include <linux/sysctl.h>2 k: ]9 `  |% o. f# R6 E
  33. #include <linux/mm.h>
    , V! D/ p) }: p
  34. #include <linux/dma-mapping.h>: l* F6 g  {7 I# n

  35. ) X# P0 }& D2 m8 a
  36. #include <mach/memory.h>  z' ]! m5 Y, y5 x2 C. X
  37. #include <mach/hardware.h>8 ]7 e6 g  f4 g' l" m* O  `
  38. #include <mach/irqs.h>6 b9 |. W+ j+ t& E8 N
  39. #include <asm/hardware/edma.h>
    1 l& I5 ?8 ]0 I2 M

  40. / a9 O: K1 n6 g% b. }: B) w) X0 W
  41. #undef EDMA3_DEBUG. N+ M/ [( ^# H% V8 y% `9 e5 r
  42. /*#define EDMA3_DEBUG*/
    / r4 g) x% w5 W

  43. 8 T+ E0 q/ t+ J, {- v/ C* ]
  44. #ifdef EDMA3_DEBUG/ l# W. |. f4 ?% Y3 e; ]( e
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)9 @4 f" e+ J6 c* r
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    , C1 m; t5 h9 K2 |8 z; ^$ A
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& ]/ h8 b+ q' X5 `7 \( h
  48. #else2 I1 ]- t; M) [
  49. #define DMA_PRINTK( x... )
    , _( Y8 x/ M. k9 b8 n
  50. #define DMA_FN_IN
    5 v2 s# }2 e/ \2 U# K
  51. #define DMA_FN_OUT$ J& _' Z9 i' C# j9 m( l* J
  52. #endif$ \0 X, p" p0 O0 i5 |) _6 R6 C- [* ]

  53. ! f8 g9 x; b3 P0 O6 v) Z
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)/ f% f9 @9 K2 G
  55. #define STATIC_SHIFT                30 P3 ^3 s: `' X* X
  56. #define TCINTEN_SHIFT               20
    - k% z/ v2 J6 h- l
  57. #define ITCINTEN_SHIFT              21
    9 w4 c% W" W- _8 H8 f5 q* g
  58. #define TCCHEN_SHIFT                228 N, G( T3 t, a9 {" N: S* v
  59. #define ITCCHEN_SHIFT               234 @2 N" m1 O, D* ?4 W9 u; S
  60. " x7 `+ x3 a8 H% @5 k! j
  61. static volatile int irqraised1 = 0;
    % _- b$ z% T& t2 z" }/ G. F
  62. static volatile int irqraised2 = 0;6 y# o# z4 p5 B5 m) A7 M5 H- E! K
  63. 4 ^1 Q5 `0 {% ~1 j# Y- \
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);- u) f: d# I* P/ }( z- |
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . R1 ~2 g' D, l' [( ^/ ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: q3 G& x/ x8 J& p
  67. % R. U! W- X* p; M% W5 i
  68. dma_addr_t dmaphyssrc1 = 0;
    2 J6 f8 n& Q7 Q, _! W( E& f
  69. dma_addr_t dmaphyssrc2 = 0;7 i* W- N- M' Q% z- P. y% p
  70. dma_addr_t dmaphysdest1 = 0;1 Z( _# X4 d9 q6 W
  71. dma_addr_t dmaphysdest2 = 0;5 r2 i! h+ K& i, \! f
  72. / J! S( R' U3 V: @5 h
  73. char *dmabufsrc1 = NULL;* k5 q/ T, l* \# C1 y3 h9 B" p  [
  74. char *dmabufsrc2 = NULL;
    0 V' Q) O* l+ R& u9 h
  75. char *dmabufdest1 = NULL;
    . s& h; q# D+ D4 K1 G% H. ]2 y
  76. char *dmabufdest2 = NULL;
      {) ?: W$ R- m0 ]4 H

  77. - `/ a" x$ W" h) T; x
  78. static int acnt = 512;" s9 }! f2 H4 `; v/ x
  79. static int bcnt = 8;' G- N& r5 D" m0 D+ y8 m
  80. static int ccnt = 8;
    " ?; ^3 F! w8 n
  81. 7 g9 c3 ^; p9 E0 @9 x  n& {1 Z
  82. module_param(acnt, int, S_IRUGO);
    * V% m& x% l: V* h6 G5 h' X( O* V
  83. module_param(bcnt, int, S_IRUGO);( Z2 P( o9 d9 Z$ P5 l2 B% y
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ t- O' u1 q( K( V
; D2 H+ b; f2 N5 ~! ^3 S. R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用7 Q8 G& n7 G' ]+ c( I+ 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
! I. n6 t% l" Q. C& e$ e( l) w     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。, j& t& h3 \) B/ Z% l

) I& d+ d$ s1 ~$ L; b. _- R0 @, W: V( g
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-13 09:36 , Processed in 0.036998 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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