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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
5 ^7 p# G3 q1 f7 q+ c& y
  1. [code]EDMA sample test application
    . x& e! G  x) h' f* e# `! h& T# R
  2. /*
    7 ]1 ]& V/ N2 W, q
  3. * edma_test.c
    ) x7 `  e/ Z1 h+ n8 l( O: p# K
  4. *3 h% i$ h! H. _' H' u. B, O
  5. * brief  EDMA3 Test Application$ N2 I/ _, y$ z
  6. *7 p5 s0 a3 C" D5 O, @& M( J
  7. *   This file contains EDMA3 Test code.
    * a2 k7 s  o7 W: b
  8. *
    : n4 _9 G+ A9 r; n. N: `6 ]
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    6 t, j$ n9 k' m3 C; o" M4 Q
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT% Q3 C7 N+ H/ p9 G2 A. x
  11. *         TO CHANGE.
    . s' [+ [  N( }' [: g+ v; y; W+ @; S
  12. *2 h) \  O1 n) A3 N% @
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    2 a1 l4 E- E0 `& z: c
  14. *3 D& J, V# O! {/ o+ G; k# H
  15. * This program is free software; you can redistribute it and/or
    " O  o3 E' f8 A! e( u
  16. * modify it under the terms of the GNU General Public License as
    ' e- p: M! G! C( p5 u2 z' Y; ]
  17. * published by the Free Software Foundation version 2.
    0 K, s( m9 r2 K6 E, a
  18. *
    9 s: s3 I/ R; G9 @; j, J$ e( @" O
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + L* \& i" u, Y5 p4 e  Q% Q
  20. * kind, whether express or implied; without even the implied warranty
      ~, M/ Q8 E) l& G8 W) T8 k6 t
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the/ D1 |4 H2 k- l9 s- M
  22. * GNU General Public License for more details.0 P% X8 O' k+ p! T1 M; Q4 F
  23. */
    ) P6 Q* d4 x# Q

  24. ' \1 L+ T: ]4 q* t
  25. #include <linux/module.h>) `* z$ f6 z* D% g- P4 P. f" W
  26. #include <linux/init.h>
    0 I: Z6 ?$ R7 E- @( S, u# q
  27. #include <linux/errno.h>
    0 |- M: m% h6 A" M+ g+ _$ n
  28. #include <linux/types.h>
    4 m: M) E, _& N! F7 I0 t8 P. {
  29. #include <linux/interrupt.h>
    " `& R, w& v. y+ L! g1 D9 ?3 K
  30. #include <asm/io.h>
    , N# \+ K& h$ N# a' X/ a
  31. #include <linux/moduleparam.h>- n8 ?. }, P9 d7 ~; h
  32. #include <linux/sysctl.h>! e6 S- ^8 c" l
  33. #include <linux/mm.h>1 ^, M0 D4 t2 E% g5 m& l! i/ R
  34. #include <linux/dma-mapping.h>
    9 C7 ^$ [# s3 g6 B! o$ U6 ^
  35. 3 S* v$ t1 ^) k, D
  36. #include <mach/memory.h>
    : ]' O; N! Q$ G
  37. #include <mach/hardware.h>
    ) S0 i# _  J4 @, c6 ?& X  F
  38. #include <mach/irqs.h>+ c, w4 J- i* ^; N
  39. #include <asm/hardware/edma.h>( t4 Z7 z2 s3 z& I5 h  T

  40. 3 R3 Q: H0 j  g' Z
  41. #undef EDMA3_DEBUG
    ( N1 B; n% }% v' M# f
  42. /*#define EDMA3_DEBUG*/* x8 ~5 N* k. }+ J8 a' E

  43. * i4 B( R# U# w1 @& U( z
  44. #ifdef EDMA3_DEBUG
    : _8 w- b9 K8 q" e6 ~8 [7 h
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)$ }% e% z5 U3 @$ N
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)" m7 I5 m8 y3 c( C# J  R. V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    1 F- I+ K  K# w+ y8 P
  48. #else2 s6 j" W% _5 ?
  49. #define DMA_PRINTK( x... )/ D; B, G: _( D" k
  50. #define DMA_FN_IN
    " E& o- Y5 C( I
  51. #define DMA_FN_OUT
    - t% X. F) D; d0 s( Y
  52. #endif
    : i$ n! b# u' |9 p- t" h9 Y' d

  53. + l8 w9 `. `9 B- ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768); D5 y% }8 {1 I" F: k! S- V
  55. #define STATIC_SHIFT                3- B" _4 ]" V  w% C6 T
  56. #define TCINTEN_SHIFT               202 Q# A* |0 l8 ]/ D+ G1 j
  57. #define ITCINTEN_SHIFT              21. R* V, Z: F& A
  58. #define TCCHEN_SHIFT                228 z. m. ]# t1 }1 `/ m4 k
  59. #define ITCCHEN_SHIFT               23" f. g! r$ [* V; w, J5 b
  60. 8 M! w* s' J% a0 I% h: n
  61. static volatile int irqraised1 = 0;
    1 W# P; r2 q) P: G: }; Z3 y
  62. static volatile int irqraised2 = 0;% L" {; C2 o3 W

  63. - I2 p1 X. X! ]' L; T5 |- ^! V
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    1 m/ K; ^; E- n) W# N; h
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " C3 N2 {' c8 M' z0 z" j) ^$ l
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    3 u& ~6 J! W2 J! ?7 l

  67. 1 r4 [) i& ]2 {$ s* H( O4 g
  68. dma_addr_t dmaphyssrc1 = 0;) q' J" ~; o, l
  69. dma_addr_t dmaphyssrc2 = 0;
    % I! V' F0 u# z+ P. ~5 y# i
  70. dma_addr_t dmaphysdest1 = 0;# S0 h! o4 `# u2 ~; ^
  71. dma_addr_t dmaphysdest2 = 0;
    8 A" v) |* h' \! }2 P# t# b- Y6 j

  72. & h" f  ]- d/ |7 ]! U$ w
  73. char *dmabufsrc1 = NULL;
    ' s6 |6 B% \" K
  74. char *dmabufsrc2 = NULL;) [9 m* o3 V" G$ }' r% E, u$ S
  75. char *dmabufdest1 = NULL;3 B6 h  J; a. n% {. I6 a
  76. char *dmabufdest2 = NULL;7 A3 \) |# v" l" k& ^( p+ G, ]3 \
  77. 3 \2 ]5 I/ J3 x& U
  78. static int acnt = 512;
    ! M8 p% c! g/ }' ]
  79. static int bcnt = 8;
    4 B: @4 U/ X5 w; V
  80. static int ccnt = 8;9 B! ^% G1 F' S0 Y( q

  81. ) v5 x, `/ F" k4 Y$ j) F
  82. module_param(acnt, int, S_IRUGO);
    ) e; J7 k9 T; S" o% g% |6 X
  83. module_param(bcnt, int, S_IRUGO);
    , N# X: r/ ]1 ~! F1 `
  84. module_param(ccnt, int, S_IRUGO);
复制代码
0 o/ ]% w( i" R/ J+ o
% U5 h% S: p3 y. s4 }' _! P' {% R
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用, G  z3 f4 k/ T' t8 c5 m( b
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。3 C3 y. T8 `/ h2 H
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。% g: P' [8 g9 p8 z+ B

" S' }4 W# I* Q) [- h; T- _3 z+ x& j
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-26 13:24 , Processed in 0.039701 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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