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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
) b: L& }) o+ Z1 O2 j% Q
  1. [code]EDMA sample test application
    2 @& |! t: Q* g- O0 d
  2. /*
    ; h6 c2 B, X  I, L. F) T
  3. * edma_test.c
    ; t- \1 U4 ]+ Q- i/ z# l. U- K
  4. *
    , b' N) t  T2 z' G" t4 D, h* R- W
  5. * brief  EDMA3 Test Application
    : r1 U, N, f, Y5 w' g* [/ F( I
  6. *
    5 c7 w  C' ^9 i3 l0 |
  7. *   This file contains EDMA3 Test code.; \8 I9 K) R" @3 Y! ^
  8. *; n2 L, W6 z9 \4 g9 P4 \* b, f
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE3 o/ E6 V1 ]+ H" }9 }
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    . @6 |' n: M! z
  11. *         TO CHANGE.9 Y2 V! U6 \1 u6 `; p
  12. *
    - C. F3 l/ a" ?0 X- _! T: y7 l( d
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  b8 a+ ]3 A. \
  14. *
    4 g' L% d/ B" O4 P
  15. * This program is free software; you can redistribute it and/or- _/ ?; v$ P" u5 }6 y; g# S
  16. * modify it under the terms of the GNU General Public License as% K  M$ I& Z( Z1 N
  17. * published by the Free Software Foundation version 2.9 b) B$ t, d( |
  18. *
    : a  {: W- x/ _  z
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    # ^0 @4 n5 j( t6 F  w$ O' l9 e
  20. * kind, whether express or implied; without even the implied warranty
    " F8 ]) c9 U7 l; E
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the" Y/ ?' b( F% y3 h" l
  22. * GNU General Public License for more details.
    3 Y$ i0 R" \, N4 R
  23. */$ F8 R: Y" W/ D: [% s+ @! d9 `% Z

  24. 5 L$ i1 ~7 o6 @4 w
  25. #include <linux/module.h>, H) p8 F) m( R! m( w: ~+ M
  26. #include <linux/init.h>  k# q: i3 X$ B8 C" _, e
  27. #include <linux/errno.h>) `% A, D/ d+ v* v8 Q7 [
  28. #include <linux/types.h>% g3 }" z; w7 m+ }/ D3 N
  29. #include <linux/interrupt.h>  V4 g/ h, F" {$ S- Z; k
  30. #include <asm/io.h>
    + w4 N: S) j1 v) V( L. E
  31. #include <linux/moduleparam.h>0 b* [4 p5 J1 v6 s
  32. #include <linux/sysctl.h>0 M/ i" Q1 X% d# Y/ u+ k1 ?) F4 b8 C
  33. #include <linux/mm.h>
    . x9 \7 q9 b; @* \
  34. #include <linux/dma-mapping.h>/ M0 p: L5 K+ V+ d" X) f
  35. . K0 Y; x- O  I; Z
  36. #include <mach/memory.h>
    9 M5 I; d2 O( t0 r9 v5 K! y
  37. #include <mach/hardware.h>
    8 ?! |5 K# o& @% K
  38. #include <mach/irqs.h>% ?1 b; v- P  T$ j1 Y+ _' [7 T5 _
  39. #include <asm/hardware/edma.h>
    0 Y" C  a$ k+ x/ D
  40. " _0 ~* N8 I, w. O4 h
  41. #undef EDMA3_DEBUG; F& y  M$ `/ N+ P0 q
  42. /*#define EDMA3_DEBUG*/! t/ {0 m' j* y& D# }
  43. ! W* {6 e6 [' D0 _8 k# P1 `
  44. #ifdef EDMA3_DEBUG/ \1 X7 F- `; ]: N# ]
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)6 a; t, u; z$ n! u( Q" B, u9 s
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    0 Y3 k8 `/ w( t" i2 i4 e( j
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__). m2 J( ~5 v1 J1 u/ h3 |
  48. #else
    2 l3 [  F! X4 c$ c# C& K
  49. #define DMA_PRINTK( x... )7 Y8 x9 \6 k- |' |4 u
  50. #define DMA_FN_IN
    " I; ?& C  y7 B* ~6 O
  51. #define DMA_FN_OUT! r. M$ e7 a' C# r0 N2 u
  52. #endif
    " C  I3 r0 O& ]: e
  53. 9 S- Z6 |2 n6 k  y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)' I9 t" W& w2 u0 W; U: }- v
  55. #define STATIC_SHIFT                3
    9 {4 f. H) }) v: o7 e4 h
  56. #define TCINTEN_SHIFT               20
    , h" z; r7 H7 |! q) i
  57. #define ITCINTEN_SHIFT              21
    & {( \, M- M, @& `
  58. #define TCCHEN_SHIFT                22& B" x2 g# T' D- w' U# {5 V- c
  59. #define ITCCHEN_SHIFT               23& N: e$ V; f  c5 Y

  60. 2 P8 k% M6 j/ D; e" ?
  61. static volatile int irqraised1 = 0;( e* Q5 ?( C6 b% Z. v! A
  62. static volatile int irqraised2 = 0;
    $ p! T9 M- W9 c6 Z5 `" Y
  63. . j( ^. n( _% a: j
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ! \* K+ c# i8 L2 v
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' d0 t7 l9 e! N1 i
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ I5 h9 E. H' R- m# b; N1 K
  67. * i' Z& W0 ]/ W' V9 p
  68. dma_addr_t dmaphyssrc1 = 0;
    9 I$ h9 R+ `* R% K) l, P
  69. dma_addr_t dmaphyssrc2 = 0;
    ( _. \4 M: j" B) q" s
  70. dma_addr_t dmaphysdest1 = 0;! L7 z# Q9 ~; M; b2 B% }/ U: e
  71. dma_addr_t dmaphysdest2 = 0;
    9 W* C: o1 l3 M- X  S
  72. 7 H4 R4 r# z" ^3 [- K
  73. char *dmabufsrc1 = NULL;
    3 O( O4 ^5 P4 o  m  t
  74. char *dmabufsrc2 = NULL;
    * C1 O3 b+ o7 m6 P
  75. char *dmabufdest1 = NULL;
    0 ~+ e+ c* w( \6 Q
  76. char *dmabufdest2 = NULL;
    6 Z' m4 h. `. @
  77. 4 T0 I& z4 v; w7 E8 K
  78. static int acnt = 512;
    3 m+ h( Z0 Z. B( z* J
  79. static int bcnt = 8;" c% f/ K9 ~1 P/ y
  80. static int ccnt = 8;
    ) Z- i& R: ]! N: |5 f3 l- R. `
  81. 7 @5 ~8 I  l6 B; U. U
  82. module_param(acnt, int, S_IRUGO);! }7 a( g7 x7 m% C9 s
  83. module_param(bcnt, int, S_IRUGO);! [5 p/ A$ p; z
  84. module_param(ccnt, int, S_IRUGO);
复制代码

4 N& y( p; C, p  f' O
) \) G  ~& w9 h# D  B      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
( i$ R1 W  n3 f. U; Y8 Marm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
! }" v$ W4 B4 u( ^% s! T9 X# h1 E     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。+ r- T) s. o9 A$ ]  B  t+ t

$ {/ S4 r$ Y( K, @; s# p6 y7 p$ [. G
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-19 06:30 , Processed in 0.039219 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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