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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ' r! C+ D4 a! @: Z- y3 J$ [
  1. [code]EDMA sample test application
    + G) X2 j" N; u8 |" D% ^0 E
  2. /*
    + c0 ^) `8 b7 C* b7 e
  3. * edma_test.c
    + }6 Y5 _" ?* Q+ Q. x$ _
  4. *$ k1 A" O7 Z. C) c7 |6 Q. D. T
  5. * brief  EDMA3 Test Application
    0 _' m  d6 i! T4 g* H9 X
  6. *
    1 r1 z  q3 g/ O$ s; C
  7. *   This file contains EDMA3 Test code.
    ( C0 ?/ u" h$ D: P7 u4 ~& A* D
  8. *4 F' B) F% T5 t' P
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    1 T1 v% o" m% g+ N! x/ g1 L# c3 k
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT$ S4 e7 P' n. R% ~# s
  11. *         TO CHANGE.; N; R1 l+ D" l0 ^% `- e
  12. *7 t6 t4 A& }' I# E
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    " E/ F. E6 C8 @3 \( u8 p' F
  14. *3 H) j' `, F6 J( i) {$ [
  15. * This program is free software; you can redistribute it and/or
    0 J% V# J, F8 ~3 V) y9 N# m
  16. * modify it under the terms of the GNU General Public License as
    , }4 N$ j8 }. B7 Z' s& |
  17. * published by the Free Software Foundation version 2.& M) T& v, E! g! t3 L) f$ P
  18. *
    ( j6 R& x6 Q3 W- C- x( D
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any$ T' s1 \/ y& ?' s
  20. * kind, whether express or implied; without even the implied warranty
    ' q8 T% q8 z2 A2 x
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the- T" e8 j/ d) R7 z7 I  U
  22. * GNU General Public License for more details.6 x& E& a( ?8 x
  23. */- i0 I( R  R( L# V8 P) w9 H
  24. * M2 [$ c& Z8 Q
  25. #include <linux/module.h>
    / T1 |% L  O$ X$ Y0 I; J# J
  26. #include <linux/init.h>
    / Y8 [/ K7 Q6 Z  X) u1 S2 @( W
  27. #include <linux/errno.h>$ ~, ?4 T$ T& p0 S
  28. #include <linux/types.h>
    5 X  u/ h2 P: R$ m* |: J- A
  29. #include <linux/interrupt.h>+ x. e+ r9 `. N
  30. #include <asm/io.h>* O5 B3 g6 A$ n, f' S
  31. #include <linux/moduleparam.h>2 A) @9 u+ b3 q" [2 D0 H9 `; l$ }( W
  32. #include <linux/sysctl.h>
    : ~4 w- h7 A  @' @. u% W
  33. #include <linux/mm.h>4 z3 z. o% c1 {0 N' R( U1 t7 [
  34. #include <linux/dma-mapping.h>  A" J! N/ c: n; Q
  35. 1 W1 m' {6 _' c7 W' j  u5 G( u
  36. #include <mach/memory.h>3 J* N0 P  U+ e' F4 y$ y* B
  37. #include <mach/hardware.h>
      ]; R' h6 C) x' H- ^, I
  38. #include <mach/irqs.h>
    & M8 ]% k- @% }
  39. #include <asm/hardware/edma.h>
    0 K7 Z3 V3 k% C" \8 L2 v

  40. : H5 h: u& K: C  i6 ?4 \6 U) f
  41. #undef EDMA3_DEBUG% h1 |! j* f! |: {7 z1 m
  42. /*#define EDMA3_DEBUG*/
    " t5 P3 y" j( |3 ~- K

  43. - J' @0 @3 b( y- B, D# _
  44. #ifdef EDMA3_DEBUG7 c. `* G/ E9 n+ `7 O) _
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS): Y7 T: j4 A8 N  j
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)2 \5 y/ b8 ~- [- C+ R
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)& t( S, e- O# `
  48. #else
    6 J+ `7 \+ @6 ~
  49. #define DMA_PRINTK( x... )) L- x( O  r& P7 k- S
  50. #define DMA_FN_IN% }* d6 A# L$ |. m& _
  51. #define DMA_FN_OUT
    * S6 {- Z5 t1 U9 C$ r
  52. #endif5 ]9 O1 M/ h, D) `% `- B

  53. ! s6 P2 d7 I$ L/ o
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* B( h- s/ g; v  p) O- J; [5 Z# o
  55. #define STATIC_SHIFT                3( x+ k) g# W1 }- p/ a5 _# U
  56. #define TCINTEN_SHIFT               20
    ( \: H- c; Z. F
  57. #define ITCINTEN_SHIFT              21
    . @/ ]: E* |2 g# ^
  58. #define TCCHEN_SHIFT                22& ~, t8 L6 h1 K1 N
  59. #define ITCCHEN_SHIFT               23
    $ S# d+ }( p1 N  [# z& N, m: h
  60. + w% K( c) w# v/ G+ U" _: r$ R
  61. static volatile int irqraised1 = 0;! t* ]7 @# K0 ~* c0 K/ n
  62. static volatile int irqraised2 = 0;
    7 T  Y+ G$ w! {3 f- W4 n

  63. ; W+ A  U/ ~0 f# x
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 J2 a( E2 \- M( q- t  r! s" t
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . Q, o( T; U* c: o7 i& F
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% z8 T+ g- E; u- v8 }

  67. 3 j$ B" L! d. F" u- S+ g: N
  68. dma_addr_t dmaphyssrc1 = 0;
    2 B2 r5 ~5 `0 J  L
  69. dma_addr_t dmaphyssrc2 = 0;
    3 s& a4 x. G% {0 Z
  70. dma_addr_t dmaphysdest1 = 0;
    7 S% i1 F0 e( `. j5 {
  71. dma_addr_t dmaphysdest2 = 0;
    ( I! s0 N! x; j# A8 Y9 _! @
  72. # ]9 {$ E: o4 `
  73. char *dmabufsrc1 = NULL;
      [) }! o) b. D/ _, F, `3 ]* n" g
  74. char *dmabufsrc2 = NULL;6 l- [, r) K. D! S! _1 b( o& C
  75. char *dmabufdest1 = NULL;6 h& m) s/ H% `) _3 {6 X& H, V
  76. char *dmabufdest2 = NULL;
    ! y. Z$ t  q2 J; S" g
  77. * Z* g0 O; W9 x# p, {0 W
  78. static int acnt = 512;! _$ Q9 o( j+ L! u. n( x% D2 c& o
  79. static int bcnt = 8;
    % m5 N* c' o5 P
  80. static int ccnt = 8;, [: @7 a+ X. A% j' l: J$ `+ a8 i
  81. : {$ `) O3 e- K2 M8 Z
  82. module_param(acnt, int, S_IRUGO);
      S: C: {& g( V; ?
  83. module_param(bcnt, int, S_IRUGO);
    . B0 A- o$ y( B3 @& b
  84. module_param(ccnt, int, S_IRUGO);
复制代码
1 A1 ~0 F' @$ T. u: |/ i

+ R; y6 P! J' E; H      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
7 J  N% }6 H0 }% @( B4 warm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。- k8 z0 L$ ^" l: ~" |' q
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
1 t& {+ J1 a' t
* q: i4 a* L0 F% B, e# u6 R% l8 a! R' z, ]
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-6-28 02:50 , Processed in 0.046411 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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