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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑   \* f( b! c1 s5 t) S
  1. [code]EDMA sample test application, R( U  i/ [5 d8 }; ]4 |$ I
  2. /*
    1 v" @2 ~% i% d0 l& C9 q! a. Q
  3. * edma_test.c
    ) o3 l9 f4 i9 I9 o* V5 C
  4. *- b+ m0 E$ W+ a; {- P
  5. * brief  EDMA3 Test Application
    8 L2 x" k! M* Q- x9 p
  6. *
    4 m: g$ Z7 w! z( q; Y
  7. *   This file contains EDMA3 Test code.
    ( ^# i. T7 P: {; F  W$ ]! o
  8. *
    . J& ]$ K, Y' _$ h! \
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    0 o- k; `! _" j  K
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    # L  a+ _6 R' Y  T8 `
  11. *         TO CHANGE.0 R4 K" _* J7 V
  12. *
    % N2 I' u4 f- [# ]/ v- K& U/ Z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    : \8 T1 T8 D3 c& I
  14. *
    " Q7 j( O9 n4 m
  15. * This program is free software; you can redistribute it and/or: O! L2 v/ ?# f& ]
  16. * modify it under the terms of the GNU General Public License as5 F1 |/ ?( c2 r! ^1 S8 d8 p
  17. * published by the Free Software Foundation version 2./ E. N/ k* q; e. j% G$ x4 d; |
  18. *
    + y$ O* k$ v9 ]" s
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any5 _' ^: [9 T+ r( ~% ~2 ?/ ]
  20. * kind, whether express or implied; without even the implied warranty* {% h% o% k' P9 Z% f
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the9 U8 g4 A. E2 a7 k: T) D0 D
  22. * GNU General Public License for more details.% F  K0 y/ y( T! e1 S
  23. */0 X0 s7 ~" d( [3 F6 c; a$ L0 |0 M" [

  24. . F& h! z8 ?: _+ `! t
  25. #include <linux/module.h>  Y' v# i$ ]7 I( b
  26. #include <linux/init.h>  @+ \3 k  \# v  A9 D' {; m4 Z
  27. #include <linux/errno.h>1 V+ ^! a, @5 X7 i
  28. #include <linux/types.h>
    ( X2 h# T6 Q7 p' d) ^' [4 _- o) B
  29. #include <linux/interrupt.h>
    ) d2 k( s2 C8 ^9 z1 `! f# n6 G" P
  30. #include <asm/io.h>
    9 p' \$ A  l+ y
  31. #include <linux/moduleparam.h>$ u9 T4 ?6 l! C, U/ t3 P0 ~
  32. #include <linux/sysctl.h># D. T# T; A! X4 n
  33. #include <linux/mm.h>  k& v% d9 K* H# b4 E( S
  34. #include <linux/dma-mapping.h>3 t1 h7 \7 F2 P% c* X4 \' n
  35. ( A' w! O, v9 j% o+ o
  36. #include <mach/memory.h>/ f$ ^1 o+ s3 j
  37. #include <mach/hardware.h>
    % F/ [, c+ K3 N  W8 ^  @
  38. #include <mach/irqs.h>
    / }2 W* K& i9 P5 t' x9 L
  39. #include <asm/hardware/edma.h>2 v% r1 g- Y+ h6 D  z3 M# P: b
  40. & K1 C- e! e: d- @9 P$ m1 e: z
  41. #undef EDMA3_DEBUG, a! {( q$ z/ `
  42. /*#define EDMA3_DEBUG*/
    7 {8 j/ W5 J4 z( u8 w9 r  B. z

  43. 8 a! ]2 i0 _* ~9 B8 ^& o
  44. #ifdef EDMA3_DEBUG, d/ H* f- N1 X. k2 I0 o
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
      j1 A1 M% L5 ~: B/ R
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    * ?9 `4 ^  D2 k8 m8 `0 J2 E$ |$ f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    * T0 ^! ?8 J4 e
  48. #else6 I! x4 h% E' ^) l" x* G, ~4 c! l8 B3 {
  49. #define DMA_PRINTK( x... )) |' Q( t3 {6 s! u2 K
  50. #define DMA_FN_IN" e. G5 `' \; P8 v9 F+ y! a) w9 U
  51. #define DMA_FN_OUT
    3 c! F' }: d- A- V
  52. #endif
      `8 O1 F+ X  {- o5 P' ]; b) N

  53. - N2 K& O2 E& K  y# l. g. {5 V
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    . \" K- Y) ]' Y" n
  55. #define STATIC_SHIFT                3+ a! w: r, h) M' ?( `
  56. #define TCINTEN_SHIFT               209 Q3 n% L2 S1 l3 f: J3 z, X- N
  57. #define ITCINTEN_SHIFT              21  ^( h7 z0 r& E% H7 T6 U8 T
  58. #define TCCHEN_SHIFT                22
    9 j3 }1 u# |/ ^8 R0 B3 D7 @
  59. #define ITCCHEN_SHIFT               23
    2 W' d8 A) T$ [, v: \
  60. , C% F# _8 P' ^. Y. L
  61. static volatile int irqraised1 = 0;5 a  o! ^8 O! D* ?# n
  62. static volatile int irqraised2 = 0;1 J: ^$ \+ O5 Y/ ~" v

  63. ) [' v: T2 |/ f  q; h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    0 X; x! p& }2 _
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    # I$ G8 z. }* A& M* X2 q- ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);) U3 H! e  m4 q; C* C% U
  67. ) ~0 W( i, j4 W! j
  68. dma_addr_t dmaphyssrc1 = 0;9 N% L4 s& ?6 e# W  L
  69. dma_addr_t dmaphyssrc2 = 0;
    2 A! J2 D! F1 i- l4 W+ s6 F; S& m, \
  70. dma_addr_t dmaphysdest1 = 0;
    + \4 x* H7 z' W" h! t: W
  71. dma_addr_t dmaphysdest2 = 0;+ J$ Y8 I  u  H1 L

  72. 6 |, A# C- a, U# Q
  73. char *dmabufsrc1 = NULL;& _* Q+ n+ @$ m+ b. j2 ^( ~
  74. char *dmabufsrc2 = NULL;
    3 g$ `; [7 {- ~0 H( p
  75. char *dmabufdest1 = NULL;9 E# w; S5 c! Q' @3 d! G
  76. char *dmabufdest2 = NULL;
    6 E5 p. l9 e3 q8 N( q' U3 z
  77. 5 R7 f! H1 \% G; m6 C& l% m* D6 q6 t
  78. static int acnt = 512;
    % d2 E. U7 J! r
  79. static int bcnt = 8;$ f3 S  R+ g9 Y+ i2 H" o7 v
  80. static int ccnt = 8;% w1 f$ ?- v6 n5 r/ r

  81. . `+ g: X. J9 M! ~. a% O
  82. module_param(acnt, int, S_IRUGO);
    ) n5 A4 j- E. |: L
  83. module_param(bcnt, int, S_IRUGO);4 N! l- ]8 B8 L/ Z/ B- Y& s" D
  84. module_param(ccnt, int, S_IRUGO);
复制代码
9 {& p: B- l. ?& l! V

6 o) u4 K* k& N; e/ Z6 J      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用6 `6 I3 U6 g& ?8 P
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
, x6 o' h  J1 \8 `: Z6 c1 n/ d  }     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 \7 X$ V: B* U) d3 {1 n

3 K; G1 _3 f. d8 P6 Q1 l* K7 B% r# k! a* ~1 }' a( n2 j  j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-21 05:06 , Processed in 0.038324 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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