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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
  A9 z& \' x  Q- f' I- W, [
  1. [code]EDMA sample test application; Z6 I3 m' N' k; `+ l5 E! Z  a
  2. /*
    $ T' k& ]) b& e6 y4 z4 D7 l
  3. * edma_test.c
      f3 a1 Z/ H6 J4 k* \5 R: N' K7 N
  4. *
    ! _$ u/ D% O, w, t) s7 {
  5. * brief  EDMA3 Test Application
    3 j4 K. L; Y+ X0 L) r
  6. *( Z# P$ d8 l  b1 v4 t) f
  7. *   This file contains EDMA3 Test code.
    8 u1 G, C& F6 h
  8. *
    ; y+ d- q, T$ `6 f1 N4 ~
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE4 O3 I9 p+ B; v7 [
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT2 G1 x, Q% J8 U$ J  R
  11. *         TO CHANGE.
    $ z0 {- _0 W: \( h* O0 C
  12. *
    1 W7 O! C$ \% m& S: z: S' B; t
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/( C8 L. u# K$ A$ [/ m2 r' x
  14. *
    4 t( n* `/ ^1 x3 ]4 ~
  15. * This program is free software; you can redistribute it and/or- p) k+ ]/ l, {. V) m& R
  16. * modify it under the terms of the GNU General Public License as7 i+ [% l' ?* o( i% Q6 t, n& u
  17. * published by the Free Software Foundation version 2.# s. C9 P8 b( M/ h0 S$ N2 H! y
  18. *6 ~6 [5 i& M2 O% f. ]* U# P
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any0 \% c' I( o8 K' M+ N: U0 {
  20. * kind, whether express or implied; without even the implied warranty4 X* Z1 ^. ^+ X9 a. w* |
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    , m+ X& ^* Z4 _% v
  22. * GNU General Public License for more details.4 P# Z" c$ _5 D8 V
  23. */
    - w; g* s* U! j/ \+ u

  24. . [9 f% H$ S4 d( i
  25. #include <linux/module.h>
      P+ a1 J  V# R& ~
  26. #include <linux/init.h>
    : F/ Q5 M/ ?( E+ v$ P/ F& P
  27. #include <linux/errno.h>
    8 Y( R+ ^- K% h' U2 j7 b
  28. #include <linux/types.h>2 Z* N! E) _* F
  29. #include <linux/interrupt.h>
    3 c: r5 w' e0 |8 o
  30. #include <asm/io.h>
    2 j7 b" y8 Z- r/ h* D  Q. y
  31. #include <linux/moduleparam.h>+ r0 l5 T9 ]' M+ A; N' P
  32. #include <linux/sysctl.h>3 M! [$ _2 M0 Z. g& [
  33. #include <linux/mm.h>
    + L4 j0 K% h2 n# S% t; B8 _
  34. #include <linux/dma-mapping.h>) ^. X; u$ O3 q! ^
  35.   ~! P; ^% \0 L) l! @
  36. #include <mach/memory.h>/ x& ]4 P( Y# \7 C* }$ a8 J
  37. #include <mach/hardware.h>6 g' E0 m/ l, N4 h8 u
  38. #include <mach/irqs.h>- a# U5 v/ Y9 V
  39. #include <asm/hardware/edma.h>2 ?+ ^, l! ?9 Y4 ?! ?. O

  40. - q: X/ \6 F3 B6 q. X! P
  41. #undef EDMA3_DEBUG6 J/ {5 ]0 h7 m
  42. /*#define EDMA3_DEBUG*/
    ) N0 {# L8 _' ~  n
  43. + Z9 y* O; ]% J
  44. #ifdef EDMA3_DEBUG; q: W* E1 p$ W. t  @9 G
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    . e, ]# J3 y3 A, D; s
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - H) Q' |7 ]# r6 j! F
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    . m& h" W9 c' [4 B
  48. #else
    2 ?; T# l- [- g" Y* `' ~# |' ?
  49. #define DMA_PRINTK( x... )- p2 s3 U, ~  r; G
  50. #define DMA_FN_IN
    7 W# e2 j6 v1 w/ O+ b! v3 q# W
  51. #define DMA_FN_OUT
    * ?0 q7 h* l2 q
  52. #endif& Q; y- `+ U$ w  @5 A
  53. 2 L7 }, a4 A" m  I* j
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    8 ]' ?5 p- ]5 h: s
  55. #define STATIC_SHIFT                3" H  D% R" u' u2 y. y
  56. #define TCINTEN_SHIFT               20
    9 ^# b. T8 t8 v
  57. #define ITCINTEN_SHIFT              212 Q# |- i" {  l. H$ \' i7 n1 C7 f( E
  58. #define TCCHEN_SHIFT                22: R* i  O( ~' F
  59. #define ITCCHEN_SHIFT               23
    . A/ M; O/ H# y3 E+ _$ m5 ~

  60. ( U5 J( x- F) @8 g; r7 r0 t
  61. static volatile int irqraised1 = 0;
    5 O/ i3 o, z6 v% @1 [. t1 `0 _( f( C
  62. static volatile int irqraised2 = 0;
    ! N$ m! N- u3 _/ N/ p9 D

  63. . G' ?" {9 H  i3 E$ u5 R0 Z* x
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    6 l6 M& }% Q. i$ p8 G% {
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);* p9 G& t( G  }3 R) A3 [
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; J: c; h  X: c+ k* g! l. _

  67. 8 b; e) L' z5 A" y% y8 ^5 u7 d
  68. dma_addr_t dmaphyssrc1 = 0;
    2 |0 G1 R* L0 t* ?5 z7 n
  69. dma_addr_t dmaphyssrc2 = 0;/ j0 }3 N1 C. x4 A" C' S& I
  70. dma_addr_t dmaphysdest1 = 0;$ R8 G% R) K) ~! M2 e1 q
  71. dma_addr_t dmaphysdest2 = 0;
    5 [4 A$ O. Q- {2 Y3 P

  72. . }" t2 e- L2 O, V9 U& C
  73. char *dmabufsrc1 = NULL;
    ( v% L# D) Q9 z- w1 e& v
  74. char *dmabufsrc2 = NULL;, @. S3 j! L+ q7 S3 T
  75. char *dmabufdest1 = NULL;
    " N7 {$ I( A' ?
  76. char *dmabufdest2 = NULL;# l' t, s# W/ [8 W! z' k

  77. 0 I% x/ R( t8 I  G! ]
  78. static int acnt = 512;- N5 M! w$ n" ~( i0 \& |. ~; {
  79. static int bcnt = 8;$ q1 s( r$ j- s5 {3 D
  80. static int ccnt = 8;
    ' ?: ^2 v! Y4 U3 T1 J, W
  81. # m; R( j" _0 O( F4 S) ^
  82. module_param(acnt, int, S_IRUGO);
    . J" r1 a. H: C* w
  83. module_param(bcnt, int, S_IRUGO);: V' S% ]1 R1 R( {: W& `
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- A* {  o' Q7 M, m
3 W0 N1 l) ^( Y2 V      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用- N0 D! z2 b# a, l. Z" ]3 F
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。8 h7 V' \0 ]$ @8 z3 ?$ X! }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
) {. e# H4 @7 X- K0 G# s2 O
3 R' ~  j7 Z/ ]7 [: V: S
5 `) e, l. ]" h6 z. |# h, ?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-6 00:03 , Processed in 0.043963 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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