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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
  K1 R4 w+ @: p9 |4 v
  1. [code]EDMA sample test application
    # u; R8 q; r+ Y1 R- @2 k
  2. /*
    7 D& y0 F3 ]6 K& _# |/ ^8 {
  3. * edma_test.c8 S2 H1 N" Z: S( k$ V
  4. *
    9 ]$ G: s1 X" ~, f1 v2 S
  5. * brief  EDMA3 Test Application* B8 W: U$ ~/ [, M/ @! Q$ |0 G
  6. *3 K5 c/ }- L3 O" n3 D! S5 [$ t
  7. *   This file contains EDMA3 Test code.! a; l8 D' q8 s. e+ N
  8. *+ L- g$ T+ F% C; ]' ~
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( i/ \- o4 A3 N' R: U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT5 K" h' j* K0 _9 G, H4 ?% _% R
  11. *         TO CHANGE.+ C: x% I$ Q* q
  12. *8 j5 s: _1 g' h0 o) v( ^
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    ; z$ l+ W- i- C8 O5 v# H, U
  14. *
    1 P' W1 c$ M/ P& {5 N7 p) \
  15. * This program is free software; you can redistribute it and/or. P$ C) l- X. K* O) D# N
  16. * modify it under the terms of the GNU General Public License as9 K5 t2 O8 ]+ L9 E
  17. * published by the Free Software Foundation version 2.
    1 M6 K: \; ~! R. Q, }2 K
  18. *
    % f" ?* D2 U7 C( T) s% h
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any8 `5 K2 Q/ i  X0 u* O, i; E
  20. * kind, whether express or implied; without even the implied warranty: Q" R2 ^- |: n' n- U8 D4 H5 }, z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    : q! ^, ], h& F- h* |
  22. * GNU General Public License for more details.5 c8 U9 m9 y- B. Y2 E
  23. */) ^5 }' ]  ^# ]7 `( ~1 h
  24. * z* X3 k' U/ m& v' y+ B9 ^; C! W
  25. #include <linux/module.h>
    0 \  d/ r- x; p
  26. #include <linux/init.h>$ T  ~/ y, M' u
  27. #include <linux/errno.h>
    - L; L8 r: _' T' Q
  28. #include <linux/types.h>
      V: M$ ]% k) R" F. i9 L7 \/ q
  29. #include <linux/interrupt.h>% c! n+ T% r+ o6 W  m
  30. #include <asm/io.h>  r1 O- U* l3 F/ d
  31. #include <linux/moduleparam.h>
    7 \& n! f+ h' k* i, B3 k
  32. #include <linux/sysctl.h>; g, }+ E& ~: E2 H
  33. #include <linux/mm.h># ]1 s5 [! _! [0 v3 x
  34. #include <linux/dma-mapping.h>
    9 Z1 p# _! \  Q1 K, P

  35. * C: d! {5 v' ]' e
  36. #include <mach/memory.h>
    6 m8 {* d$ a) D5 B/ r
  37. #include <mach/hardware.h># a' V. s& T' _0 ]8 Y! R
  38. #include <mach/irqs.h>/ e! J3 I3 S! f
  39. #include <asm/hardware/edma.h>
    ( R0 q2 Z  e) g6 u6 y
  40. 3 ?& e3 y2 m/ K- |
  41. #undef EDMA3_DEBUG# F+ L0 Y! h4 [' i' u% N) a/ r
  42. /*#define EDMA3_DEBUG*/% o' n% Y+ g" [2 H, R5 t" K
  43. / j; B0 H# x. _; o; r
  44. #ifdef EDMA3_DEBUG+ C) W- J# x: c( u
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    . j# O, d$ Q* [- n8 w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# K0 T. K& b6 Q! o$ q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    ; H4 F& s1 {' c
  48. #else
    1 f! k0 r& t- X3 e6 f: {
  49. #define DMA_PRINTK( x... )
    2 g1 ]2 I# |) k  Z# w; n
  50. #define DMA_FN_IN$ |) h# _9 ~! Q2 [. U& a0 x* q
  51. #define DMA_FN_OUT" U+ B" x. h& V. I) J( J6 m
  52. #endif' A8 z& E* T5 {

  53. : v/ q5 t% s& Z2 P
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)8 l" b% b4 e( G+ b" N9 M/ a2 w
  55. #define STATIC_SHIFT                3% L: @" @7 k2 ]( l) O0 Z. P
  56. #define TCINTEN_SHIFT               20
    - {# ~* b- `% ?4 j! k- p. u
  57. #define ITCINTEN_SHIFT              21
    3 G5 |6 q) y4 t* S/ U& Y, d9 K
  58. #define TCCHEN_SHIFT                225 o$ C# m8 k4 I7 o
  59. #define ITCCHEN_SHIFT               23
    # O1 [% a$ W4 f( f, K4 O5 F

  60. % E$ p. _) F$ t8 ?- d3 r* l
  61. static volatile int irqraised1 = 0;6 b2 w# J4 K0 m; E& }# I) w
  62. static volatile int irqraised2 = 0;
    - F8 w- @2 D/ v  w

  63. & m# @. T, u) K" [
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 S; j$ O3 ?% ?) Q
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    , k& ^* K! v2 a; n  i9 |
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# n$ B1 R. S1 {8 z+ N" X8 G
  67. - h) v! M7 J% l0 @' W
  68. dma_addr_t dmaphyssrc1 = 0;
    / j! t3 s# n* e" [
  69. dma_addr_t dmaphyssrc2 = 0;
      M4 E- N3 z7 _" t3 ?8 l
  70. dma_addr_t dmaphysdest1 = 0;
    4 P) E( P; u4 m5 M3 h
  71. dma_addr_t dmaphysdest2 = 0;1 e4 X1 T& V9 f( p: }
  72. ; J4 Z% {% I. i: r
  73. char *dmabufsrc1 = NULL;' R9 r3 [& d0 |0 P/ g7 D
  74. char *dmabufsrc2 = NULL;0 ~; B: v$ o: {2 W
  75. char *dmabufdest1 = NULL;' M9 S# h! _. M5 ^
  76. char *dmabufdest2 = NULL;* [7 J) g2 p% L6 [% u( Q, A2 T

  77.   @/ \9 E$ a. H* P  q& g$ t
  78. static int acnt = 512;2 N8 z' Y# _, ?3 D$ T+ }
  79. static int bcnt = 8;) e& O% V/ s/ v( o: s! I, @) d
  80. static int ccnt = 8;
      v/ x& \8 c1 J  [% I  X6 ?

  81. $ x6 r8 v$ m& F' R
  82. module_param(acnt, int, S_IRUGO);
    4 u: R, y9 L" A( t7 U9 [
  83. module_param(bcnt, int, S_IRUGO);
    * X9 |+ _! o9 d- u
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 [. J0 N. t) X* Z* r3 X$ k
, z' J$ i+ B, g5 P7 g. i5 A
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
! x' b3 `5 Y* @- _0 P0 k; Zarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。* O& N1 ~6 Y- [- T6 F: _9 o# }, x
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。$ O/ J0 w$ O, i. H1 L

7 [, @2 m4 H/ x# m( t7 |4 _4 K+ {3 p( L9 ?% e4 ]- F* K, w0 f. J
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-16 04:33 , Processed in 0.039875 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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