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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 - X9 Z7 d2 i, H6 R; Q' Z1 J
  1. [code]EDMA sample test application
    . H/ Y" N. `+ S4 ^
  2. /*
    5 @& V$ l  B  |+ S- D# E
  3. * edma_test.c# q$ d$ }3 M, o4 m) W% M; ?
  4. *$ K- K* J  ?* E+ Y* A5 S4 f
  5. * brief  EDMA3 Test Application2 G! w) Y: B- I
  6. *
    $ x! [/ U( D* t$ j& E7 p* v( N1 O
  7. *   This file contains EDMA3 Test code.
    9 R/ [' z$ o* v' v6 b+ Y
  8. *( u; s/ l- J! y9 u5 ~4 {
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    " `, X5 B& J( ]" A" H( G4 i! W
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    * ?. u, z6 d* b( B* G* p
  11. *         TO CHANGE.
    9 @( c1 n, s% Z2 [$ `9 @
  12. *( S+ r7 X/ V9 v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    - k9 b0 F  D2 T% S$ }) A7 O
  14. *
    5 m- y; V: l7 D( e
  15. * This program is free software; you can redistribute it and/or
    $ T. S4 N' j# h
  16. * modify it under the terms of the GNU General Public License as
    - U9 z7 f; ~8 U6 e. [; U) D
  17. * published by the Free Software Foundation version 2.
    , e  U. Q* N2 ]
  18. *
    " Z+ R- V& I- x  q/ ~
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any- h5 {! Y& S/ T. s
  20. * kind, whether express or implied; without even the implied warranty7 w6 R0 c  l- O6 P8 ~  I" e
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    / s, u6 t! T# U' V' j; k
  22. * GNU General Public License for more details.* y$ x  N$ p: k$ u  l& i
  23. */
    + q' F( A) W( G! r8 U; `/ H

  24. 3 j# D4 b  Z2 G5 t6 |$ Y0 q7 C
  25. #include <linux/module.h>: n  {) a7 N- q5 E  j3 w" F
  26. #include <linux/init.h>2 ?+ N% A$ L$ z" U) {- h; t- ?" t
  27. #include <linux/errno.h>
    8 Q8 j4 e, h8 j# @% C/ `: U
  28. #include <linux/types.h>
    / e; k! d! y" H* E! N
  29. #include <linux/interrupt.h>7 N  V2 X3 F# n) A; j- ^
  30. #include <asm/io.h>
    , n- x- X$ U" G/ @/ O
  31. #include <linux/moduleparam.h>. ^* x$ t! ?' T! I0 M. a5 J
  32. #include <linux/sysctl.h># ^2 y& v# N2 b& f$ N- T: ~
  33. #include <linux/mm.h>
    5 F! O: Q7 v* k/ g4 s2 A( s
  34. #include <linux/dma-mapping.h>
    % Q5 ]. v* p5 T2 ~2 L$ K) Q+ _' o
  35. $ T' [  x* q. K$ h. A4 W
  36. #include <mach/memory.h>
    & ?# n. ]* U) q6 m! B
  37. #include <mach/hardware.h>; c& l6 q1 F1 J5 h5 C
  38. #include <mach/irqs.h>
    $ R4 `9 a, b- {, g' |5 T
  39. #include <asm/hardware/edma.h>+ N9 ~7 y$ P! L7 p$ X

  40. - z8 S. I+ Z! m2 ?$ X" i
  41. #undef EDMA3_DEBUG
    5 c  Y; K+ T2 T6 W5 j9 Y$ ]; [
  42. /*#define EDMA3_DEBUG*/
    ( _- b. l2 @! V0 {5 Y6 ]: ~
  43. 9 y" c( Z0 F* f. k; ?
  44. #ifdef EDMA3_DEBUG
    + Q% o" s9 T7 G+ j* N6 ?
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    5 p1 B1 D$ T2 C% M, [
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)0 `, q7 O* V# k* B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)+ ^9 x8 a/ t+ Q# b* q
  48. #else
    ; `& V+ i5 ~+ K; m7 C& E# V
  49. #define DMA_PRINTK( x... )
    # u' _  b. Y" ]  G7 {- a% Q& N
  50. #define DMA_FN_IN
    $ t# M6 D# Z1 v
  51. #define DMA_FN_OUT9 {% K( e* `& U! R1 G2 _& E
  52. #endif
    / P3 @4 r3 u) d+ P2 b) \

  53. " i& v, C- ~! V0 S
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)/ {4 `3 m$ p% Q& q
  55. #define STATIC_SHIFT                3# }( P6 d/ ^7 S7 ^& X/ z. _, R
  56. #define TCINTEN_SHIFT               20
    + K2 ^" I+ Q; z  a
  57. #define ITCINTEN_SHIFT              21& E. @1 g- m2 E6 j& W
  58. #define TCCHEN_SHIFT                22
    ) V- _8 |. e. d! o$ ^" C
  59. #define ITCCHEN_SHIFT               23
    8 i. r, r" j5 [  M  Q- N! I. \

  60. ; Y5 g  A. J0 J3 G, V/ O  ]+ ~
  61. static volatile int irqraised1 = 0;; c8 b( k) E) k
  62. static volatile int irqraised2 = 0;
    ' t" g; }* Z( C7 Z( p" u+ O( Z
  63. 8 W: d6 D2 i+ b
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);( u  t1 `/ ^8 N7 ~9 I8 b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; s* l" t/ B' L' b: @8 V5 ]- F9 [; P
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 n; B6 f4 H. G

  67. 3 r+ \& K+ [; ^6 C) ^- m
  68. dma_addr_t dmaphyssrc1 = 0;1 f+ j! e: A% g& \7 F  e
  69. dma_addr_t dmaphyssrc2 = 0;6 k$ M1 C6 M3 \! J
  70. dma_addr_t dmaphysdest1 = 0;' c7 e+ i8 o3 D+ M
  71. dma_addr_t dmaphysdest2 = 0;
    ; \' T/ V+ d% O7 Q. W

  72. " v5 G5 D  y" k$ b
  73. char *dmabufsrc1 = NULL;2 X  D! C9 {& Y0 S
  74. char *dmabufsrc2 = NULL;4 ~( {) R/ _; Y; N( C
  75. char *dmabufdest1 = NULL;) C- J; C. n6 w4 q. j. S+ s
  76. char *dmabufdest2 = NULL;  i" e4 r# y) i* J' |/ c# V- ^
  77. 3 g1 I& L3 M9 }8 R+ F* r
  78. static int acnt = 512;9 N  c) c) y' d/ C' _
  79. static int bcnt = 8;
    ' |! t9 J$ w: y# @* W
  80. static int ccnt = 8;7 u: o! s$ J( {  b2 P; k# y  D
  81. 5 n. q. E' A) }& _
  82. module_param(acnt, int, S_IRUGO);
    # z7 a! k9 u8 i/ G6 Y$ k  U( M
  83. module_param(bcnt, int, S_IRUGO);- l3 R7 W- r; c2 u5 a. @* j. J8 N
  84. module_param(ccnt, int, S_IRUGO);
复制代码
" t& v% ^3 p+ c7 v: l$ ^! {3 U2 H5 ?
, e9 S) \4 v% {5 j  i1 `3 b& y+ u
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用. _7 e1 t" k8 d! Q. [0 A6 C7 n0 C
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
, V& P7 x" E; I+ Y! M, d2 W     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
( o' G& K! Z2 r  R5 X3 y
& w- G; h) e! o  N  x
1 D" |; C4 i7 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-11 23:06 , Processed in 0.042061 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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