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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
' L* H6 ]- t6 O% R6 o( P( ]3 W5 e
  1. [code]EDMA sample test application
    + ]8 c: g3 p+ Q' d+ E0 q% i' ~
  2. /*$ {2 }' Y: n; @0 G
  3. * edma_test.c4 V$ w# h# [5 q4 f. n4 v* K! A
  4. *- E# N. R1 ^% B: C. o, ?
  5. * brief  EDMA3 Test Application
    # L' f! z: P) M, g+ l1 P$ M
  6. *
    5 Y+ {+ |+ W) T1 v% g0 p, z
  7. *   This file contains EDMA3 Test code.
    % k% ^+ A5 g; W- }3 j/ E
  8. *
    ; S/ Q* a3 t! T! ]- ^
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    9 [8 M  I3 s. `0 G7 d/ h# g4 t9 w
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT. i' H: q' W, C4 G% Q3 N, Z
  11. *         TO CHANGE.
    6 \/ s7 k# f  u, u# k" g
  12. *! u( }& ]  y- I1 z' G' p2 y
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/8 q4 k: T: Q) B& f3 Y
  14. *% A) n" C% C* F
  15. * This program is free software; you can redistribute it and/or, V# h. Q% K+ T, u, M
  16. * modify it under the terms of the GNU General Public License as
    & s) t* A2 @; P5 i0 l/ x
  17. * published by the Free Software Foundation version 2.) D7 \4 P5 V# V% ^
  18. *
    3 S; J( c0 \  n% z- K
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    * ?( d$ a2 P, [. m( w' D# u7 d
  20. * kind, whether express or implied; without even the implied warranty
    - _# P4 f3 t! h6 n
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    . y+ t" l" W% J# a( h
  22. * GNU General Public License for more details.
    1 q8 X4 Z# c! ~7 h1 L; A/ g. b$ K
  23. */- F6 d( M9 n; |5 k' a5 I

  24. 6 E, B5 ~, t+ W) @% U% h' u' j
  25. #include <linux/module.h>0 ^8 e9 X/ U* A0 t, b' d/ b' l
  26. #include <linux/init.h>
    % N# w6 q; a' S3 L. C; b
  27. #include <linux/errno.h>0 g" v7 H; |* S& Z
  28. #include <linux/types.h>
    / T% X( Z( J$ y( l
  29. #include <linux/interrupt.h>
    # _' }0 @# n4 O1 c3 q
  30. #include <asm/io.h>: J% F6 G5 m, W+ A0 o
  31. #include <linux/moduleparam.h>, b) M1 @# h! d
  32. #include <linux/sysctl.h>) W( m: h7 O; y
  33. #include <linux/mm.h>* F& g+ Z' d! q( S& R; `
  34. #include <linux/dma-mapping.h>7 F& k* t8 n) a3 t7 \

  35. , ~# j5 A, t8 A) {7 h# s  ?
  36. #include <mach/memory.h>
    * {6 e$ c1 Q4 V0 B4 s& m+ k, j
  37. #include <mach/hardware.h>2 y- A" [  `: l/ e/ F# i
  38. #include <mach/irqs.h>
    ' H$ O' |6 u4 F/ R
  39. #include <asm/hardware/edma.h>
    * l- o  ^! }; A6 I1 R* I) w
  40. 7 ~3 X8 B2 Q! q2 m" G
  41. #undef EDMA3_DEBUG
    1 F" W, U% H3 j$ d
  42. /*#define EDMA3_DEBUG*/
    5 V" R! n0 L( F  C8 q: C  N% l
  43. ) W; _8 X( G% c; ?' l
  44. #ifdef EDMA3_DEBUG
    * ?  h7 E& j& b; ]
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)1 `, D* E. b$ s0 Z! h
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)0 N# `: k1 y$ B" f
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 @4 h& ~' q' p+ m
  48. #else
    . L' P6 h3 m5 W! n2 i& k8 x! P
  49. #define DMA_PRINTK( x... ): V: R$ ?3 T  a; n4 o- f9 {
  50. #define DMA_FN_IN% x& ^4 E6 K! s3 [# F% \
  51. #define DMA_FN_OUT; z6 U% w- K2 Q$ `0 @0 B
  52. #endif
    5 S% N" O1 k9 S: e

  53. # t% r( c0 s  `8 a! b" q  _  J- R
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). b, E- J, K0 u
  55. #define STATIC_SHIFT                3- q8 d% v0 d6 l6 J
  56. #define TCINTEN_SHIFT               204 m" Z' ~5 W( {1 P! i5 U
  57. #define ITCINTEN_SHIFT              21
    . T7 V+ d! s' Y3 `0 n9 P# M! B
  58. #define TCCHEN_SHIFT                222 Q9 S0 G$ x, K
  59. #define ITCCHEN_SHIFT               23
    & q1 \4 Z7 K  F1 _: I
  60. * ~% \+ Z, m# v) H
  61. static volatile int irqraised1 = 0;" u8 |0 t* C9 b: @! p' c3 V
  62. static volatile int irqraised2 = 0;
    ; q% y2 y! m4 J

  63. ! B/ ~) ^9 z: h4 Q' ~7 M% p
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 l( r* n; o5 F, ]. ~
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 i" N  E$ u# J4 T% B
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 v2 _5 X  Z- ?& A7 G7 o+ \% q
  67. $ B! }  n2 M% C5 F% q
  68. dma_addr_t dmaphyssrc1 = 0;
    $ r0 {! A! Z0 q' L6 `1 L) l9 U
  69. dma_addr_t dmaphyssrc2 = 0;4 W8 u; T7 R  R0 }5 B
  70. dma_addr_t dmaphysdest1 = 0;
    " ~+ T$ B  `2 _  {
  71. dma_addr_t dmaphysdest2 = 0;
    ) O8 T( H$ ~- Q" z) P
  72. ' L2 K* o" l+ B7 k; V. j
  73. char *dmabufsrc1 = NULL;! G+ U( ^* q7 l! R! t& O% c
  74. char *dmabufsrc2 = NULL;
    ; t- O/ l! y3 x' O- E) U" A* s- w
  75. char *dmabufdest1 = NULL;
    - E+ m! Y: Y) _# A1 C5 W# `: \
  76. char *dmabufdest2 = NULL;
    & b$ m+ j) I, R* D! G; |/ A

  77. $ d4 T$ Y, F/ y) o
  78. static int acnt = 512;" j+ `' I' a* W3 B( ]! L: }4 \
  79. static int bcnt = 8;0 |, C5 \( ]- {& V& D
  80. static int ccnt = 8;
      [4 Q1 {- H5 r2 o/ v* W

  81. ; K4 ]2 B' d! u
  82. module_param(acnt, int, S_IRUGO);& B% _9 b( q( Q" [$ _$ ]
  83. module_param(bcnt, int, S_IRUGO);# E, f! }5 |+ Z* l8 b8 F0 G
  84. module_param(ccnt, int, S_IRUGO);
复制代码
8 x. N# P# [! q: p+ |) w7 O

' O' N9 c& R+ }& n7 H      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用+ v. {$ t% N' M
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 e$ i' I9 s; g6 z. j     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
0 U* h7 i8 H3 T: [; {5 H
0 J& ?0 o* Y4 J. l) ?# s: t* Q6 {
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-26 14:02 , Processed in 0.036875 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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