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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. ?; h1 T3 `3 {0 e  L
  1. [code]EDMA sample test application
    * \! E' A2 B1 E
  2. /*
    . x# p6 S/ L* \9 K8 V
  3. * edma_test.c
    + v* U1 m% J( Y; t2 V- P) l3 k
  4. *
    ) \1 W5 b+ O8 k5 M; R
  5. * brief  EDMA3 Test Application" {' r1 W1 ]& F9 O( Q2 W( z0 T. m
  6. *; O- @: W) Y8 R# {7 T5 z
  7. *   This file contains EDMA3 Test code.: \: ^6 c0 C3 s
  8. *
    ; s0 z! m' z) n, p& |1 ?% ^4 Z% x
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE; l8 ^5 U% y3 G  g6 N/ t6 m
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
      A7 q! y! o- S) f$ L6 L
  11. *         TO CHANGE.
    , {) R; t9 [; k6 t- \
  12. *) D1 D* a' j$ k( `
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 o8 A' B5 ?5 W! b
  14. *8 @6 H3 o. V8 A( F% z
  15. * This program is free software; you can redistribute it and/or. m6 J0 R! K  A7 M
  16. * modify it under the terms of the GNU General Public License as
    6 O; Q7 @4 Y7 j/ o& [
  17. * published by the Free Software Foundation version 2.
    + x4 B! b  v5 \7 T/ {) c$ ?
  18. *
    ! u0 z6 b' K: h7 U4 u+ t
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ( l) i( u! m  B: @4 F) k$ C
  20. * kind, whether express or implied; without even the implied warranty1 ^$ P& @1 K7 G9 \$ Y; g; w
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    0 n& C" J( i3 g& r! c# q' k
  22. * GNU General Public License for more details.
    8 X( i  z5 G5 q0 a
  23. */! E: l9 u$ }2 {# l+ A

  24.   \, H' r$ B+ `% Y
  25. #include <linux/module.h>8 x: z3 Z! p# ~/ c( v: W
  26. #include <linux/init.h>
    7 E4 [' j. c8 X, d+ q# v
  27. #include <linux/errno.h>* c- L* F  }+ b9 V
  28. #include <linux/types.h>2 k3 B( J+ `) ~0 D) k7 ?- S  P$ X( [
  29. #include <linux/interrupt.h>
    8 i/ |3 d. `" S
  30. #include <asm/io.h>
    8 j5 e% j5 V$ F; `
  31. #include <linux/moduleparam.h>0 o; a" k9 q. {. t  c' h% c
  32. #include <linux/sysctl.h>
    $ j7 K% K2 a9 `: w! J# F( Z
  33. #include <linux/mm.h>. o6 h4 y  E7 U7 F9 R) c/ d
  34. #include <linux/dma-mapping.h>
    * ~6 W) o) z6 V8 H0 B9 e
  35. 6 b) Q8 B, ^" a7 A* T/ y
  36. #include <mach/memory.h>+ Y0 X8 R' a; ^* ^3 w! e
  37. #include <mach/hardware.h>: q5 B7 R; h5 V
  38. #include <mach/irqs.h>
    ; U# x" X+ k: P! H7 r5 W* c
  39. #include <asm/hardware/edma.h>0 {  [; S# F0 S% H9 d

  40. ! L) x; d) i/ u" J: N
  41. #undef EDMA3_DEBUG
    ( x1 i& |2 v$ q/ Z# p4 v9 d
  42. /*#define EDMA3_DEBUG*/
    + e6 X% l, r( p  z+ O, r6 ~2 k

  43.   k: S: i- b3 w/ t+ }, ?
  44. #ifdef EDMA3_DEBUG- ^# c, h* H9 E8 q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    1 D! r3 v6 I' z2 B# a4 v
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( s! J; V9 h: @
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  W$ g6 H; V& ?$ O
  48. #else3 s8 V  S! s4 V2 `0 Y
  49. #define DMA_PRINTK( x... ): b  e6 [2 l4 Z& Z- _
  50. #define DMA_FN_IN5 e% F- Y. G- U$ k: Y& i  M; |# D
  51. #define DMA_FN_OUT5 k: L3 p9 T: M' z" z+ a; g
  52. #endif( z  o4 L1 z+ C* E+ Y3 \
  53. " D; j' ?) C+ J) b2 D
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)- _5 q5 a) b6 V' h
  55. #define STATIC_SHIFT                3
    9 N3 k7 w) F/ Z" E
  56. #define TCINTEN_SHIFT               20. J8 H3 y! ?  H) ^5 ~
  57. #define ITCINTEN_SHIFT              21
    + {1 Y! @) @; f) T7 X$ {
  58. #define TCCHEN_SHIFT                22
    $ }: m* D5 i5 E8 X* O  K3 Y/ q( {* d
  59. #define ITCCHEN_SHIFT               237 E0 V- v# y5 o4 t$ p) o

  60. 4 ^- S  C5 ^% q$ T0 n
  61. static volatile int irqraised1 = 0;7 A6 I! K* R6 S# v0 s4 z
  62. static volatile int irqraised2 = 0;
    1 {. A/ [8 p+ d7 a% _7 ^# X

  63. * ?: q, \6 b" p* x& m' _, \
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% ?. D9 k# S1 y& ]
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% m; r9 ?# r& G5 c, g7 [: W
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( D7 u' g% |+ s1 p8 r" \' F

  67. 5 ~0 B6 C; h6 z: b# e) \% Y
  68. dma_addr_t dmaphyssrc1 = 0;
    6 p, t9 K% ~. t) n
  69. dma_addr_t dmaphyssrc2 = 0;
    ) S, Z" t, g8 w# W
  70. dma_addr_t dmaphysdest1 = 0;
    . b# y" X3 k8 Q! t# A
  71. dma_addr_t dmaphysdest2 = 0;4 _, o8 y/ J4 w+ @' a

  72. 5 i, q8 I: _' p' b( ~1 T  k( w. R) V# v  z
  73. char *dmabufsrc1 = NULL;
    7 V; `+ Q6 e5 a7 e1 t
  74. char *dmabufsrc2 = NULL;3 q0 Q! o- X- x9 }9 Z$ l
  75. char *dmabufdest1 = NULL;
    # n* e9 i1 _' }) U: n
  76. char *dmabufdest2 = NULL;& Q0 b& P" }, j4 N* `: q

  77. + v" \/ Q6 a: K+ O
  78. static int acnt = 512;$ _* a+ e$ J, T, I$ f% T
  79. static int bcnt = 8;/ s# u! g, y5 x; A
  80. static int ccnt = 8;
    % i! w2 h$ b) X
  81. 0 D+ A# k2 X2 I8 G
  82. module_param(acnt, int, S_IRUGO);3 j# i& D) u, J0 d4 j5 A
  83. module_param(bcnt, int, S_IRUGO);
    9 C: n: i# [! S, ]) s& d( n
  84. module_param(ccnt, int, S_IRUGO);
复制代码

$ \/ o, Z0 p* `8 b# U* \! k
& u8 W( l6 r  A; O0 c9 N8 ?      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
' P. K6 |9 b' ^1 ~& B: @1 zarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。' u) _6 {5 Q  J4 G: }
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。5 H- b3 D; f* W$ |$ m& o* N' M

, Y3 h+ |1 N/ L$ J3 l. J9 j
) x9 }4 E* b9 Y- b1 f( Q
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-5 21:25 , Processed in 0.039101 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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