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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 : t7 o5 O6 O, w6 v9 W) D! f6 V9 |
  1. [code]EDMA sample test application  r) q9 B: T0 e1 H' e; l  J+ H' ]
  2. /*$ {& N' N5 V9 e4 Q
  3. * edma_test.c7 X5 y+ ~& t7 @, C8 N
  4. *3 b# M7 N6 \" n, G
  5. * brief  EDMA3 Test Application
    % r! R* k0 Z4 z- m. m8 o$ w( v
  6. *
    ' D8 L: M+ B+ Q( e
  7. *   This file contains EDMA3 Test code.
    % p; m, q+ m0 a+ f
  8. *2 H. P# X& e6 s5 V
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    5 z) g6 J  U0 J4 H6 s
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT# Q! Y+ u5 l. d" R
  11. *         TO CHANGE.( m5 @6 E' n) @' R
  12. *- y& A. y; _% o& o  d! `! t
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 w- U4 o6 j6 }$ y
  14. *
    2 d, P( R3 g) W. r6 q
  15. * This program is free software; you can redistribute it and/or
    . n+ {% n: I8 `9 @# s
  16. * modify it under the terms of the GNU General Public License as/ u9 \6 o4 V; P& S! w. f( R
  17. * published by the Free Software Foundation version 2.& p7 Q; p( w7 \' C$ b# z# c) r
  18. *
    1 F; }& o% a9 K4 O) b. K% k& L0 s2 v
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    8 h0 j7 J' @+ C) c+ e
  20. * kind, whether express or implied; without even the implied warranty/ x5 H7 Q4 Q, B
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the3 o3 g8 j1 ?9 V
  22. * GNU General Public License for more details.
    " T- J! E9 C4 ~% R
  23. *// ?& x% y4 x7 O3 O! u) `& L* m9 r

  24. $ Z8 U7 X. }/ _3 S7 ~5 X
  25. #include <linux/module.h>
    3 i: _. `% n0 w$ P2 m6 n( y
  26. #include <linux/init.h>- M; f4 q5 x- i  T* X; Y
  27. #include <linux/errno.h>7 d9 `$ a! D/ b( ^5 g) E/ h8 [! r- s
  28. #include <linux/types.h>
    ( Y7 ]1 C  ]7 r- V, I4 P+ Q
  29. #include <linux/interrupt.h>
    ; e& r/ |* _* [# V5 }: X4 }6 j4 b
  30. #include <asm/io.h>
      d' i" f! j* b; r+ U
  31. #include <linux/moduleparam.h>; h/ i* B+ R( G8 z) p! ~
  32. #include <linux/sysctl.h>& t$ x+ z/ g. G4 e4 |
  33. #include <linux/mm.h># G6 V. P5 a" @4 m- Z7 ]
  34. #include <linux/dma-mapping.h>& f  d( r8 O: G& I. r/ }

  35. 6 Z$ n( ^4 F& `1 i
  36. #include <mach/memory.h>4 o# `; R: S8 m* ?
  37. #include <mach/hardware.h>! u& q. W# m1 O( w* ~
  38. #include <mach/irqs.h>; R6 u- }& P: R
  39. #include <asm/hardware/edma.h>
    9 j, y$ _) t! r# t- E6 s
  40. 5 t3 v- H+ x7 h, Q- p6 w
  41. #undef EDMA3_DEBUG
    ' U. K; F3 o5 k( W( g
  42. /*#define EDMA3_DEBUG*/0 d& N. @' |0 j% E6 a4 B# E

  43. % ?9 q, m4 z2 w4 e. k. I
  44. #ifdef EDMA3_DEBUG
    8 |9 S6 E1 f6 M5 ]" I
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 A) L0 P9 t9 ?2 P
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ' H8 Y/ A& O2 l6 z
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__). h; t3 ]* d# |# _" a2 _; Y: s! ^
  48. #else* |. s1 y1 E9 Y8 R1 U
  49. #define DMA_PRINTK( x... )
    ! E3 ]; G! K( g
  50. #define DMA_FN_IN
    ! m9 t$ \" o( }
  51. #define DMA_FN_OUT8 t2 @$ ^* E! {$ T- \5 u6 [4 v" u1 G& b) a
  52. #endif" g4 t- x- d. F+ N5 Z* I% d" {$ s8 m

  53. 4 P: R% s3 B4 P( @( h
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 z" n$ D0 z9 P5 W* M3 E, g
  55. #define STATIC_SHIFT                3
    " @, p- `3 q  i+ a4 }. g1 H! C
  56. #define TCINTEN_SHIFT               20
    1 q, Q" u" P$ F3 Z# c
  57. #define ITCINTEN_SHIFT              21
    9 _4 y- h# H' k$ ~7 ^8 o$ n9 c1 ?
  58. #define TCCHEN_SHIFT                22
    9 R2 n& b) x, J& B; ]
  59. #define ITCCHEN_SHIFT               23# F0 g% \3 [  `6 s4 R" [: ~9 ^
  60. ! p+ }- n. x. u: L& ?
  61. static volatile int irqraised1 = 0;! p! b& j1 t$ c1 X3 K1 I
  62. static volatile int irqraised2 = 0;. a1 Z1 P$ w4 {3 Y9 u0 R

  63. , q/ c5 r+ F5 k! v8 h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);# C* d. E! N' l8 G/ X1 a& C
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; c* r5 o+ i9 v9 `. U1 v
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ J! Y* O8 R4 B+ u/ U; j& K
  67. 5 C$ b5 c3 r( R& E( K# c
  68. dma_addr_t dmaphyssrc1 = 0;
    5 d+ q9 d5 M  S! g+ _) m+ S* M
  69. dma_addr_t dmaphyssrc2 = 0;% {8 R' \+ b8 N2 _$ H: C
  70. dma_addr_t dmaphysdest1 = 0;
    7 E& u  \2 d1 }, X) O$ h6 [* Q/ K
  71. dma_addr_t dmaphysdest2 = 0;6 D% w# ~: n+ |( ~" Z0 ?& Z

  72. ( g/ ^6 ?: n: {5 [/ y0 B( Z
  73. char *dmabufsrc1 = NULL;/ k( u( S; Y7 P/ D( w9 C/ h9 k
  74. char *dmabufsrc2 = NULL;
    ! H$ t  i" y+ J8 t3 n3 d
  75. char *dmabufdest1 = NULL;9 h! [4 Y6 B' N8 S6 f: m9 M
  76. char *dmabufdest2 = NULL;
    " ~8 \; M/ D* Y* q- C* X9 i
  77. ; R' O# P6 c1 B4 K' R3 [$ W/ d
  78. static int acnt = 512;/ Z- E3 P4 }! w3 H, i! o
  79. static int bcnt = 8;
    0 B- ^$ J, L7 A/ l) q3 k
  80. static int ccnt = 8;0 W% m1 E0 l* E
  81. ' Y& D1 j. u8 F5 h  R
  82. module_param(acnt, int, S_IRUGO);8 |/ i% L8 v# ]9 }. B7 f
  83. module_param(bcnt, int, S_IRUGO);
      M6 R1 c6 y0 y+ U
  84. module_param(ccnt, int, S_IRUGO);
复制代码
% p4 I0 @* Z' \" p* I$ U% w4 m0 M' U

: c4 J  C. ~' X1 m8 t' ~' ~- ]" o      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" d6 k. r5 ]+ ]# U6 h& X+ @2 Earm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。3 c5 h" z/ k. E8 j& R2 `( N
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
5 N, N8 V; h3 ]9 b1 U9 d  o, M, m; U- p  E% i2 z
8 i4 ~3 I3 Q3 A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-1 20:07 , Processed in 0.037982 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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