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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 0 g0 g, U  {3 p- Y  F- l' g
  1. [code]EDMA sample test application
    , F8 [/ [% o6 V+ k( w, l
  2. /*0 V% U9 ?' }- P1 d+ Z
  3. * edma_test.c2 ^# `; ~8 y* C
  4. *% b# C' d0 {  f( f) G- W
  5. * brief  EDMA3 Test Application
    / C6 V5 i' v- ~' a/ A
  6. *9 F  Z2 h( ?- W( w1 I, n( q
  7. *   This file contains EDMA3 Test code.& c) `" w+ m2 B5 ^$ E) b: K9 R' d
  8. *& v5 _* B1 @8 c5 E6 t4 y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE! Z; V! U, Q7 {) `4 A* G1 V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    2 N+ I5 q$ H) f8 O6 O( _8 ?$ k
  11. *         TO CHANGE.
    2 f) @2 V: b! @4 |8 E
  12. */ @3 e+ C. A+ p& U
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/2 M9 e' _2 t  O% R. ?
  14. *7 k- L! G; W& r9 M* R8 e" m! {
  15. * This program is free software; you can redistribute it and/or' e/ R( n( u* K4 \
  16. * modify it under the terms of the GNU General Public License as* f6 r; r3 q$ k/ T$ {5 o
  17. * published by the Free Software Foundation version 2.
    0 c% q2 M5 _6 ?+ w2 I" P+ f
  18. *8 L% t+ a) c& E/ m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    : C' G  E* P% u7 R( B
  20. * kind, whether express or implied; without even the implied warranty
    $ M' t8 e! o$ E( H" T8 F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    / d) Q) ~$ b" [0 m7 F! z* @8 P
  22. * GNU General Public License for more details.4 p3 T2 X9 `& ^" ~1 u
  23. */+ }/ H  l6 f6 J: `9 o# R- d3 z

  24. 6 P$ H$ e# a! f5 R2 W2 h( I
  25. #include <linux/module.h>1 p% r% r6 u6 b  k" Q
  26. #include <linux/init.h>; J$ E0 z: k. G) N3 e6 ]
  27. #include <linux/errno.h>
    8 W8 l  j0 `1 T. i
  28. #include <linux/types.h>
    ( ~  {% c4 C7 I& e
  29. #include <linux/interrupt.h>$ l/ t' L1 X* P* Q2 i) T6 y1 J4 u+ p
  30. #include <asm/io.h>
    7 Q+ Z" B# @& e7 v/ p
  31. #include <linux/moduleparam.h>
    3 l  [& F2 {4 s/ P0 a' B' }* h+ b& h
  32. #include <linux/sysctl.h>
      P& X0 D- l( U- A1 R5 E8 \$ o
  33. #include <linux/mm.h>
    # m  ?; l  n; p8 V5 o1 F7 i
  34. #include <linux/dma-mapping.h>
    7 y9 R2 I% N/ x* Q: h9 `# z7 v

  35. ( I1 Y2 i- a# G$ D- c
  36. #include <mach/memory.h>" n1 @6 y  r9 o: Z
  37. #include <mach/hardware.h>* R$ S  S8 b; U
  38. #include <mach/irqs.h>
    - ~4 p( |/ `: p$ A- j
  39. #include <asm/hardware/edma.h>( q$ C7 h/ A9 @5 y

  40. ) \' Q+ J( Q$ }$ W+ g
  41. #undef EDMA3_DEBUG& Z8 V) W; w4 ^- L9 _9 S0 ^
  42. /*#define EDMA3_DEBUG*/- e  W6 f' Q! r- E0 ^; l# h& d
  43. , [1 e9 V. ?0 b4 h2 o
  44. #ifdef EDMA3_DEBUG
    / X+ Y, Y8 d: E0 b. x, |$ [
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    : i7 p) Z  i$ i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)! K5 A9 P+ I5 W# C" I9 h
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
      n! s+ z  Z# ]9 h
  48. #else* M* K" S/ p1 b) t% i/ v
  49. #define DMA_PRINTK( x... )4 Y* D3 c5 I  w
  50. #define DMA_FN_IN
    - S! R" F# _5 `
  51. #define DMA_FN_OUT% B( {0 E7 F; ]% }
  52. #endif, z% Y  u8 [8 b6 e9 H: @

  53. + z" ]! N, W$ [& F) H& H
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)6 s% r3 `3 d  Q/ P# U
  55. #define STATIC_SHIFT                3
    0 R7 f$ o& \: B! M
  56. #define TCINTEN_SHIFT               20
    0 f1 s7 ^0 F& o! j1 r; b
  57. #define ITCINTEN_SHIFT              21; o: K' w) R& A- p
  58. #define TCCHEN_SHIFT                22( }& t% `2 R' k# V1 }& B: d& e" ^
  59. #define ITCCHEN_SHIFT               23
    4 P8 \$ M9 C# w, |& ~

  60.   \$ j+ ?9 O( j+ Z( t- d4 X7 Y
  61. static volatile int irqraised1 = 0;
    # u4 r# V" I) O# e% U) U
  62. static volatile int irqraised2 = 0;
    5 u% k; R0 Q  g

  63. 0 c0 b0 Q$ k- b/ \1 I
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; N! [) B( `3 V% d. Q+ X& W
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* X, w+ e6 T/ |9 T
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 W) p! {) `. m( k( `' V0 ?- H
  67. # j" ?* u$ x7 B
  68. dma_addr_t dmaphyssrc1 = 0;
    2 A9 n/ s# A/ c5 i0 i9 L' f, i% I
  69. dma_addr_t dmaphyssrc2 = 0;, N8 g- S% Y, W, G& F6 [
  70. dma_addr_t dmaphysdest1 = 0;  \0 K/ O) s/ `' u: O, I
  71. dma_addr_t dmaphysdest2 = 0;2 }* m6 T, n7 {' z) c
  72. 6 C. y" D0 M8 ]9 ]
  73. char *dmabufsrc1 = NULL;/ m" P& }4 U! x3 i1 m8 D3 U
  74. char *dmabufsrc2 = NULL;9 d# B  U( P) ~% U; x. c3 t3 h
  75. char *dmabufdest1 = NULL;
    ! Q' u& k; t+ f
  76. char *dmabufdest2 = NULL;4 ^9 P; |4 T% N) U2 M6 o
  77. % I! Z. V9 _( t5 y# Z' T
  78. static int acnt = 512;2 o' d$ c8 c8 H7 d5 ~5 g5 n
  79. static int bcnt = 8;
    . a+ g9 E* Z  t$ k8 ^$ m
  80. static int ccnt = 8;
    $ R3 n/ |& u+ `- t2 G$ f: T8 C+ ]

  81. 2 H2 X/ n. p! N$ N& z8 }* v0 ]9 i
  82. module_param(acnt, int, S_IRUGO);
    2 I% A2 X' O3 j
  83. module_param(bcnt, int, S_IRUGO);
    4 j/ h! ~) Y! W% v
  84. module_param(ccnt, int, S_IRUGO);
复制代码
: ^, i  N" g+ X5 P

  ~* j' h% g- k  @* n0 j' F" W      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 s) v% k# e3 x; q% Marm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。7 E3 x9 m6 y& u3 }. d% m7 @" @
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。) `8 [9 H: |, q
' J% X4 g/ d4 d. B2 H* I

) E* w2 o& g7 c) E
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-7 00:00 , Processed in 0.039042 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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