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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
: Z+ X3 R( d' y$ w) d/ B
  1. [code]EDMA sample test application
    ) B" w+ T5 `6 r, x0 |( n
  2. /*  _( u8 H5 b" j! s
  3. * edma_test.c
    1 b9 S" r; q8 d( K% s8 x/ X* I' o
  4. *
    $ I% r( e% q2 h5 x4 _
  5. * brief  EDMA3 Test Application
    / [% N0 h9 ~. K( n' x* z
  6. *1 \# [' j, j- B6 Q1 s
  7. *   This file contains EDMA3 Test code./ n6 k* l1 {1 c) ^, w6 S
  8. *7 N! O3 ~0 Y/ q0 o' K% q
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE; S$ u/ q/ h' b# p9 p8 P
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    $ |4 w* l  V2 F/ b0 Q
  11. *         TO CHANGE.7 ~- s) Q" A/ F: K- B. ~
  12. *
    + y- a5 S; p6 e5 ?( ?
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/& Z4 G0 G* J7 _# v4 |6 d# A! D
  14. *& e+ A, {, w  m/ z" o3 g
  15. * This program is free software; you can redistribute it and/or
    1 P* n7 F# p# q9 v! t1 V
  16. * modify it under the terms of the GNU General Public License as. L" ]7 z) O( ~
  17. * published by the Free Software Foundation version 2.1 j; G  k9 _' V7 J) X5 b2 q& [
  18. *
    ' ]: u' y/ [) W! @$ y6 j
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any4 y5 y! r- W) B; @- A1 y; a1 r) B; u
  20. * kind, whether express or implied; without even the implied warranty
    * I) g& |' ~! Q5 E  l$ l: k
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    8 j( Q" ]6 s- u
  22. * GNU General Public License for more details.
    ( v0 D" N7 E7 g* y# e
  23. */; ~9 [: h% N% h) R) N* y3 U

  24. 8 m  q! ^) {9 M' K( F. P# R9 ~
  25. #include <linux/module.h>7 l. g4 L' E7 E. N/ R
  26. #include <linux/init.h>
    / U2 Z6 ?) A$ m8 A' ]5 C
  27. #include <linux/errno.h>" g: z8 F, h0 ?
  28. #include <linux/types.h>+ ?/ \, c5 x3 G) V
  29. #include <linux/interrupt.h>
      Q/ G. w+ Z/ ~9 [. i2 f9 P7 U. |
  30. #include <asm/io.h>- ~8 ^" I0 N- o6 s" K  X: P5 p
  31. #include <linux/moduleparam.h>
    ( N' m- c& p1 t. I$ E! ~1 n
  32. #include <linux/sysctl.h>
    : i* n; z; F& `& [6 m& H
  33. #include <linux/mm.h>
    % E' L& X* C, w9 U% C, ?5 H4 O' @
  34. #include <linux/dma-mapping.h>, s" Y3 c0 d7 j- H0 O9 W# q; q( X
  35. 2 T0 d0 R& _' k$ `  {& m, ~/ d
  36. #include <mach/memory.h>
    ! `1 ?- d( {! G5 I. ~
  37. #include <mach/hardware.h>
    ! z4 B" o: l/ x  a2 `
  38. #include <mach/irqs.h>, l% `* P' F' D+ D( l' N
  39. #include <asm/hardware/edma.h>% v1 O0 L! ^: ?' I. d, r
  40. 0 [' r% I/ w) z. o; y8 L
  41. #undef EDMA3_DEBUG) ?3 h4 F. P( B( ^/ u  ?
  42. /*#define EDMA3_DEBUG*/$ s6 X8 l0 Q8 V$ j7 x* B5 ?3 }0 b, c
  43. % l; d$ T. ]5 b, e8 k
  44. #ifdef EDMA3_DEBUG
    / ~2 I/ _! n# v4 I! o2 ]3 P
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ) ]% E- m; Q: r/ C7 h/ q
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - C8 N) k0 ~1 O2 U0 Y. v- i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    : z# p4 `9 c( j  E4 P" U
  48. #else
    # A3 c! i) ?8 E) t6 ]0 M
  49. #define DMA_PRINTK( x... )
    , U/ k; X& _1 A
  50. #define DMA_FN_IN) R9 @2 T, z, `5 W" _6 c
  51. #define DMA_FN_OUT) a% y( o/ c' N3 f! m; r
  52. #endif  }6 K) k/ J0 ]. |5 E6 t
  53. 6 `# f5 M3 g5 e7 N* i
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    0 w% G1 p! B+ ~8 J  k
  55. #define STATIC_SHIFT                3. J$ \4 a5 S* @# P$ b: p
  56. #define TCINTEN_SHIFT               20
    * p+ W+ n' T' f, S
  57. #define ITCINTEN_SHIFT              21( E2 n9 M& m4 v3 E4 C0 ?4 t
  58. #define TCCHEN_SHIFT                22
    # b) m* j, L4 l. ~3 H5 [
  59. #define ITCCHEN_SHIFT               23
    2 P. E6 w# V) P" A
  60. 1 [* W+ v) v$ }$ L) ]/ N4 S/ W
  61. static volatile int irqraised1 = 0;
    - x5 m' {' O4 p: O; Q$ r
  62. static volatile int irqraised2 = 0;
    ! U5 w: c* u! Y) p$ X: v# X

  63. - @+ l9 j% o2 I# `: O: m
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 |2 ?/ ?1 v' \* r; h, _1 D
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ i& s/ m4 F; E0 w
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 O( E# u7 I' x: F
  67. / G2 F0 T" G/ Z$ Y) y  ~% e
  68. dma_addr_t dmaphyssrc1 = 0;
    1 _# x$ Q. ]% D' C2 ]- X
  69. dma_addr_t dmaphyssrc2 = 0;6 r; {/ r. i, W. r0 s
  70. dma_addr_t dmaphysdest1 = 0;; j3 T8 Y  {5 F7 Q. G) b. N, v" @6 @
  71. dma_addr_t dmaphysdest2 = 0;
    ( z$ r4 E2 n$ U7 |5 z# n* |$ f6 Z

  72. 5 e9 n- [& x. {' N
  73. char *dmabufsrc1 = NULL;: T$ J7 r0 z- h! H% C4 ]% n
  74. char *dmabufsrc2 = NULL;
    5 i) j4 j0 P: L9 L1 E! }5 z
  75. char *dmabufdest1 = NULL;
    4 i! x( ^2 L8 R2 ?
  76. char *dmabufdest2 = NULL;1 c/ B. S! c1 x
  77. ! r+ ?$ H3 m; P) E, g- u
  78. static int acnt = 512;
    7 b. V2 Q8 g* X$ X3 X" ~
  79. static int bcnt = 8;" c, A: v) I% W2 N/ R5 y( j
  80. static int ccnt = 8;# ]8 g, i8 G8 q' @7 e) c
  81. 0 h  {/ Q$ q+ y
  82. module_param(acnt, int, S_IRUGO);
      {# W* ]( u2 N0 f) m+ X3 ?( u* Z
  83. module_param(bcnt, int, S_IRUGO);
    4 X9 j/ Q0 w' ^, M7 A
  84. module_param(ccnt, int, S_IRUGO);
复制代码
5 y  z' v) `, x

! B+ F! K9 e1 r) j. B      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用; A- P) E. v- e- Y6 U$ i3 O
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
" X+ L0 `6 a; H# ^; A7 ]     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  \+ ]$ K0 y3 B, s0 o8 Q

7 s; m% K* y# Y$ s. V& j) g. q  I- k6 z7 T- \- d  x; s
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-22 02:09 , Processed in 0.151208 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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