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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 # w  b6 [) [* c- f
  1. [code]EDMA sample test application
    : W* \' T- y: H
  2. /*
    : x9 \/ M3 v$ v5 n
  3. * edma_test.c
      i6 R9 n# J4 v- q( ^" j+ n* C8 F( k
  4. *8 k4 v$ N  i9 Y8 y/ t& z/ d2 a* T
  5. * brief  EDMA3 Test Application+ p" Y" B8 H& h1 f
  6. *
    " @8 E; w' A, T+ g8 ?) n, N
  7. *   This file contains EDMA3 Test code.6 {8 l6 n- W* r0 @+ q' l- x/ G9 G
  8. *- f, g+ h: {* ^5 [. o& P
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    * W6 Q+ S2 E! o& A) `
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT. ~! A, C; ~3 x0 M& R" e3 F
  11. *         TO CHANGE.. |: i! A  n% v+ {& b& N
  12. *
    / z3 R6 c7 J' C- i5 y+ V
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    + P7 e+ y- W% |6 C6 n) ?1 H% l5 |
  14. *
    6 K1 Q3 }  Q% b% r! O
  15. * This program is free software; you can redistribute it and/or
    # h6 m; T# y/ s
  16. * modify it under the terms of the GNU General Public License as  x/ i) u( M6 O- e
  17. * published by the Free Software Foundation version 2.! H  n  J1 ?  U/ B
  18. *
    3 V# O8 ?7 W# v( t/ w
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    % T' B7 G6 @! P8 R
  20. * kind, whether express or implied; without even the implied warranty, a+ I; K1 e' h0 e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* i. R% r2 X; A% {* L: p( G
  22. * GNU General Public License for more details.
    6 q3 o" A) P* _5 w  z( ?4 k# o1 M
  23. */
    ' S# [  N) w8 q8 ~

  24. * F. \0 b- c: q8 Z. ^6 E4 R. e
  25. #include <linux/module.h>
      ?; j4 a& [( x! x9 j1 L4 M
  26. #include <linux/init.h>
    0 ~) _8 L- s4 u! S4 ]' z; V/ L& d8 R: Y9 R
  27. #include <linux/errno.h>7 h6 L7 g- e" n5 q9 r+ g  d
  28. #include <linux/types.h>
    9 ?1 J* z9 f) A: X; q) l
  29. #include <linux/interrupt.h># s( P$ n; Y  e+ O) {1 O0 u- p* F
  30. #include <asm/io.h>- ?2 y. h0 O9 V  j1 s
  31. #include <linux/moduleparam.h>: S1 x. b& h. J- f
  32. #include <linux/sysctl.h>: }$ U) D3 a% R! l9 l3 v
  33. #include <linux/mm.h>& R) H' g4 t4 @8 \4 r) c& y; B
  34. #include <linux/dma-mapping.h>4 N( n% q2 ^* l7 R; h; b

  35. ( |) R' C9 W5 D% y( R7 U; w# e& d
  36. #include <mach/memory.h>
    8 F* a0 t1 d; N2 H
  37. #include <mach/hardware.h>
    5 X1 n6 D7 q- i0 k9 F6 T6 y
  38. #include <mach/irqs.h>( k  n0 y% G- J
  39. #include <asm/hardware/edma.h>
    ! E) E6 [) a+ Z
  40. 1 Q% {2 T5 n- l% Q+ c6 Q' c! _' d
  41. #undef EDMA3_DEBUG# x" s  M5 _# t, t
  42. /*#define EDMA3_DEBUG*/2 ]* K* W" }  w
  43. 4 k/ }, \  Z6 u: B% |3 T5 d6 k
  44. #ifdef EDMA3_DEBUG) v5 y5 m, ?) A$ i3 j
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 _& b0 @. X% h- ~0 {9 Y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)4 f  i% a' f! t% t* T% }
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    9 y. S- v, y0 e& \
  48. #else
    5 X; m2 X+ u% ]; V5 I
  49. #define DMA_PRINTK( x... )
    " I+ O5 c# H/ Z: x( D8 {1 e: ]
  50. #define DMA_FN_IN; ]: k, h7 S5 G1 V6 E4 Z8 B) v
  51. #define DMA_FN_OUT
    , u" g0 h$ T3 w% z
  52. #endif3 U; C# t: o  k

  53. & ]# k, b( k% u  Y; @& G
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)/ y3 |% Z; [$ e% o" Q
  55. #define STATIC_SHIFT                3% ^( ?3 z! h3 V; k2 K3 T+ Y4 Z
  56. #define TCINTEN_SHIFT               20
    2 c1 Y0 A+ A+ t  u- B& ~8 y
  57. #define ITCINTEN_SHIFT              21
    1 f+ R0 B  k* c3 U, L0 l2 W; v
  58. #define TCCHEN_SHIFT                22
    # z2 U# R1 K# \- {
  59. #define ITCCHEN_SHIFT               23
    ! b% b! Y8 [7 y
  60. , D8 F3 }$ ^+ V, M
  61. static volatile int irqraised1 = 0;
    3 Y- x+ n& T2 y: E: d
  62. static volatile int irqraised2 = 0;+ u" ?' F6 b0 u/ Q
  63. * ~4 A: k- \7 d2 R1 W- y& o  y
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - P! Y9 u1 R8 \
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);/ U% k! ^; }1 J7 L5 H" E
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 A0 t3 H" k% f5 E+ M+ z7 L# `4 l

  67. $ I1 E  B8 ]" i2 r% |3 d
  68. dma_addr_t dmaphyssrc1 = 0;5 g% d& {: I2 P  n, h" r2 x' Z" H
  69. dma_addr_t dmaphyssrc2 = 0;
    2 K, c6 J4 L4 _8 M! R: J9 n& [
  70. dma_addr_t dmaphysdest1 = 0;/ j4 x; n3 s8 A( ^" O: K
  71. dma_addr_t dmaphysdest2 = 0;
    $ S' z; {& U4 _! z6 ^
  72. + n2 \+ m+ c0 t8 G
  73. char *dmabufsrc1 = NULL;
    6 ^% {0 x  Z3 b) s4 G" m, j
  74. char *dmabufsrc2 = NULL;3 M2 \. F; V& b2 V* i: z' C
  75. char *dmabufdest1 = NULL;" @! W: ?: |7 c2 p5 y. ]. z0 D
  76. char *dmabufdest2 = NULL;
    , {, b1 `+ l( z. k

  77. 5 P* Q& V3 j9 V
  78. static int acnt = 512;, m! E! K7 p4 [% A9 |
  79. static int bcnt = 8;; u3 u9 `: ]0 O/ H* E
  80. static int ccnt = 8;2 R+ l& i+ F9 q$ Z+ F5 M

  81. ) x+ [) ~6 W2 y- B- D! _
  82. module_param(acnt, int, S_IRUGO);7 u  t) a! Q& }9 B# p8 y9 e. x5 p. x
  83. module_param(bcnt, int, S_IRUGO);
    4 u7 l; F8 |! G! z( z4 {! g- d
  84. module_param(ccnt, int, S_IRUGO);
复制代码

  ?! X- G+ o3 m
1 k* N, f. ^1 [0 r6 {      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
% l1 s. n8 \: Jarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。% R# U& E) W9 e/ t* V
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% A- f6 E9 s' C8 o; ^& Z: ^

, w$ i  \& e) e3 v; @- G3 i4 S2 v2 P; Q9 W
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 13:11 , Processed in 0.045114 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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