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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 K: c: i" M1 m: N" e
  1. [code]EDMA sample test application
    " }' a( N2 z5 y1 p8 d
  2. /*
    % x1 @9 U/ G! u0 B* f; ~& O
  3. * edma_test.c
    / `4 |1 j" S" c) p+ q- L( F
  4. *
    , A9 R4 F" I) g1 c
  5. * brief  EDMA3 Test Application
      c7 ^, T; J8 W0 g$ x4 I
  6. *
    6 k1 V8 n+ ~  b9 {5 C
  7. *   This file contains EDMA3 Test code.$ U/ L6 U5 F6 ~
  8. *
    5 T9 G+ y& M1 C% k, f
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: }7 Q2 q( Y% [. G2 m" g
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT, A  Q. G9 \, E$ i/ d$ R
  11. *         TO CHANGE.
    3 o) a# |. Q7 c* A1 Y4 ~# v& ?
  12. *
    - W4 X3 w6 ]7 n' e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/2 K+ `' [7 M& u( a1 l* O/ z7 Q' }
  14. *. `6 y& z0 f* y& t! u4 W
  15. * This program is free software; you can redistribute it and/or
    5 I9 i5 B& C1 z" O2 y
  16. * modify it under the terms of the GNU General Public License as# L+ \  K/ q1 a7 }; F0 v
  17. * published by the Free Software Foundation version 2.
    6 ~2 I$ X" |, j' S! s! n* F
  18. *9 H' y" `2 O* R4 u7 k7 C
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    3 [: ?9 T+ g$ _8 ~$ S: Y! m- S
  20. * kind, whether express or implied; without even the implied warranty5 N. s7 O7 j9 j2 ~  \" h4 ?5 y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ A* s- [6 |, G. l5 X+ a4 r, M
  22. * GNU General Public License for more details.
    $ [1 X; q0 \2 L0 _- b
  23. */, Y9 {$ @: v/ B
  24. 7 v. C: [' t# r6 ~: J. K
  25. #include <linux/module.h>- v+ z& |8 U) p* d- q1 v& F
  26. #include <linux/init.h>9 t! J5 C4 e. W# T) t
  27. #include <linux/errno.h>& [3 x: W& D1 j% P
  28. #include <linux/types.h>$ Y1 F! O7 G  Q% z* F& |/ W
  29. #include <linux/interrupt.h>. U. d0 D5 w2 M" ]! {% e) i/ P7 J
  30. #include <asm/io.h>
    3 T/ S" S( v( ?. F( L! c7 H4 ]
  31. #include <linux/moduleparam.h>* m; A3 u! m) e7 G. x/ h# N# q
  32. #include <linux/sysctl.h>) \$ S! J) _. k' X
  33. #include <linux/mm.h>
    : G8 G9 R0 I+ I; E  H
  34. #include <linux/dma-mapping.h>1 {6 e1 n0 ?9 V+ u- o% H3 `  o
  35. 2 R# b) x, [* q
  36. #include <mach/memory.h>5 W( x, ]1 R& _5 Z& a8 s
  37. #include <mach/hardware.h>
    : Z1 Z3 ~) v1 T! C* i* @
  38. #include <mach/irqs.h>/ \' Q* v/ P- W- c5 L0 E  \2 O
  39. #include <asm/hardware/edma.h>
    - g4 G: ?1 z- B  Z4 W
  40. 4 `+ t" Z1 o% L5 Q  b$ z
  41. #undef EDMA3_DEBUG
    5 ]" [8 x2 Q" W$ T2 Y
  42. /*#define EDMA3_DEBUG*/- U* e4 h) }) O1 h/ X. v% G9 U& t- A

  43. 4 H  h/ u! B# N$ {
  44. #ifdef EDMA3_DEBUG+ f3 p" M& R' g# ?' |: e) v% p
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)* n( F( m4 |4 Y! [* G, n* o
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ; [8 @% j7 r3 c7 }  O3 t% H
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    # Z+ ]0 h# M( z
  48. #else
    . J, ^! E7 i: k% g1 u* a) y
  49. #define DMA_PRINTK( x... ), q5 h$ \, S6 l+ ]0 [! O* ^7 x
  50. #define DMA_FN_IN0 F! Z7 R% d' O3 b/ S
  51. #define DMA_FN_OUT
    , |  [" V  Z4 h! ^! v: C6 C
  52. #endif( ]9 R, V3 m! ]4 S- ]; L7 [& P
  53. 7 H. z. Z) _- u  e: O: ?& N$ J  ^6 }
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)1 G2 ]) w6 C- g- U0 i
  55. #define STATIC_SHIFT                36 v1 x- r; {& b
  56. #define TCINTEN_SHIFT               20, i, T! O2 N: _+ U0 n/ _( T7 B  R
  57. #define ITCINTEN_SHIFT              21
    2 z' \- Q& T) W) [# @
  58. #define TCCHEN_SHIFT                22
    4 p3 U2 b  `$ T% M! O
  59. #define ITCCHEN_SHIFT               23
    1 z# r9 C' |# d: T# ^/ s) |
  60. % C6 y5 V1 Q' B" e
  61. static volatile int irqraised1 = 0;
    4 B% a  l6 K8 o; X1 X$ R
  62. static volatile int irqraised2 = 0;  B6 V- g# M: O3 S- N, ]

  63. % M- v% x+ h4 W' S7 q
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);1 L% K# V; E$ a* X% h; I
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 h) g9 d, E: ?/ ?/ J3 ^
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);: x4 _; S0 V9 \: b

  67. ' C' Z0 V3 M1 @8 P7 n5 m
  68. dma_addr_t dmaphyssrc1 = 0;+ l5 U* o& \$ I6 q% X( c! w+ |6 W
  69. dma_addr_t dmaphyssrc2 = 0;
    $ R6 S9 H& n: l
  70. dma_addr_t dmaphysdest1 = 0;
    2 D' n' F7 F- A. ?- e% H7 E
  71. dma_addr_t dmaphysdest2 = 0;
    1 V' F: i+ e: M9 {3 x; e/ E

  72. 5 K7 s- O3 F; }. M6 F5 z% ]( e- ?
  73. char *dmabufsrc1 = NULL;! @0 p) D5 [: i5 [: h
  74. char *dmabufsrc2 = NULL;
    6 o. D$ _) A, C: n  E
  75. char *dmabufdest1 = NULL;
    , Z- E/ v6 O' o
  76. char *dmabufdest2 = NULL;
      b# E. U! a7 e

  77. 3 e, W# w( ^( a7 l" v  g8 |+ t% A
  78. static int acnt = 512;/ r% q& b  M2 _/ B" m
  79. static int bcnt = 8;: m. Z- _  E, v& p% u
  80. static int ccnt = 8;- b9 R, V% `* n# f" m/ X& b
  81. 9 I( g* P2 m4 s, Z# h
  82. module_param(acnt, int, S_IRUGO);7 \$ C  W3 H; S- ?
  83. module_param(bcnt, int, S_IRUGO);
    ( M5 L5 P7 W' O- h/ y5 c
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- ~: g# {/ D) T" ?$ |# W8 l8 V* a/ W% Q: h! `
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用9 E2 A' \6 Z" |* x1 E9 V* ?8 O4 s
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
$ u% J, [/ R2 R     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% G  ~3 n* I( v! h4 c! R  V
( ^/ e8 G# I2 b, v0 F9 u
0 s3 Q; _2 h* t/ a4 y1 d
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-22 06:41 , Processed in 1.346232 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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