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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑   I5 }, l+ ~$ L3 H0 t: R  u
  1. [code]EDMA sample test application
    0 H( q( j* [" V7 }& Z& y
  2. /*
    ( h  K" a9 P, B9 p) W$ F
  3. * edma_test.c5 V8 G, K2 I) |
  4. *
    * u# d0 Y1 X) u( o
  5. * brief  EDMA3 Test Application
    . K& s6 u7 R( H& D0 j6 C! H& V, ?
  6. *
    0 Y0 O- v0 K: A/ l* ?. f
  7. *   This file contains EDMA3 Test code.
    + O0 ^# k1 h5 \! s+ o
  8. *
    ; w7 V/ l2 _# F" ^# P
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    $ p- ^2 c/ c; i! m2 I
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    8 X* U3 D1 P+ K/ ?# A
  11. *         TO CHANGE.
    ! l9 c( i, i" M2 a
  12. *8 {1 \) ]% ?: O/ ]) o1 q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    8 _) z' |! ~3 a6 J
  14. *
    + n5 B3 v' R. T" ~2 q2 s$ m
  15. * This program is free software; you can redistribute it and/or
    & G0 K0 O+ |/ M3 a) Y
  16. * modify it under the terms of the GNU General Public License as
    % U9 n, O# O, c* O
  17. * published by the Free Software Foundation version 2.; F) ]! w$ Y* g0 }; M+ E( }, t
  18. *
    ' Q- D+ b) Q% s; `+ r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ; o8 J' i$ |, S% Z
  20. * kind, whether express or implied; without even the implied warranty# C3 c) `6 h% A+ {
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the7 ~" y7 Y+ o7 J0 U1 f
  22. * GNU General Public License for more details.
    " O2 u; N0 r9 c; t4 u
  23. */0 T( w3 ^  {5 z& e
  24. 1 w4 [& K$ g: V1 q7 n
  25. #include <linux/module.h>
    2 M" n9 S* L. ?5 x% }: e
  26. #include <linux/init.h>
    6 X& a% {) d5 \  ]
  27. #include <linux/errno.h># T; Z' M$ y# q4 f5 N& H( X
  28. #include <linux/types.h>
    + i7 u2 I& }+ c0 [( P* B) N
  29. #include <linux/interrupt.h>
    3 P! C: `" J; o& X$ D7 s- R
  30. #include <asm/io.h>
    7 l/ P6 `) {5 O1 r! a+ k, o& C' X# V
  31. #include <linux/moduleparam.h># m& s$ X1 t8 Y6 I9 P" t5 o
  32. #include <linux/sysctl.h>
    ; X$ S/ `& q1 t4 d
  33. #include <linux/mm.h>
    : p. R) P7 t4 u. J3 c+ A% N
  34. #include <linux/dma-mapping.h>. d) g' X+ y! i3 a/ P1 v0 u
  35. $ P. }+ Q! K. S- I( v( x
  36. #include <mach/memory.h>
    : Z* C9 \' }$ z2 y- O
  37. #include <mach/hardware.h>  H( K" I$ X! T6 M: t+ k, `  H& N
  38. #include <mach/irqs.h>7 q# K, n3 z! H7 j2 z
  39. #include <asm/hardware/edma.h>
    " P& J( ^! I$ d% e+ D
  40. 1 C9 t) O" P. S( A3 C& ^
  41. #undef EDMA3_DEBUG2 L* c( p9 F; p
  42. /*#define EDMA3_DEBUG*/3 ~. U* D: q) x. d

  43. ! _% A" {, D4 \6 m' n3 U. G8 y' G
  44. #ifdef EDMA3_DEBUG  ]8 z$ T4 g3 a  E4 ^
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)# j7 y5 `5 a. E6 [5 ]' I! i
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    / @7 g; g+ `* K* J# t7 N
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 k! s+ g, v/ ^
  48. #else
    / S  g' F9 A/ q+ _
  49. #define DMA_PRINTK( x... )
    , o3 k' G3 E1 c( f( y
  50. #define DMA_FN_IN
    - f5 U5 D0 y( h) A
  51. #define DMA_FN_OUT8 I" e( ?' @9 N. U9 @1 h2 T1 S6 Q
  52. #endif; F2 M! [3 [8 W4 m; t$ K* b" E
  53. 7 q  O. s" e/ p! \8 p6 N
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    6 J! e4 T4 C5 D5 w
  55. #define STATIC_SHIFT                3# Y9 s8 N4 @+ ^: K
  56. #define TCINTEN_SHIFT               20/ f( L. u3 Q7 |6 ^$ o) T' p2 _' v
  57. #define ITCINTEN_SHIFT              21
    , W6 I4 s: A. |7 N, l- @- m
  58. #define TCCHEN_SHIFT                223 S$ W4 ^: b" u- B! m- ?: a
  59. #define ITCCHEN_SHIFT               23% ~+ j! ^& B  u. Z4 b+ ^9 S

  60. 6 a9 I4 b6 S! `1 T
  61. static volatile int irqraised1 = 0;
    + O/ J* G- I5 |! h5 Y( z% n" U; D$ o
  62. static volatile int irqraised2 = 0;& m. n/ T; |* J) l( o

  63. 3 ^1 k; Q6 y. g  |* A! a
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 W" H1 \( g# d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 w% m- z) {! w
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; N' v& j0 S# o- A

  67. ( P+ z' P* f+ b. r5 a: s
  68. dma_addr_t dmaphyssrc1 = 0;+ R6 e7 H( U2 {- c
  69. dma_addr_t dmaphyssrc2 = 0;1 \* h* ?) Z4 j. F
  70. dma_addr_t dmaphysdest1 = 0;
    ) }4 m$ z: r4 R7 Q$ [+ ~4 [: v: b" ^2 r
  71. dma_addr_t dmaphysdest2 = 0;2 p- W8 v  m- x8 e% A

  72. + r8 u! r* s9 D5 ^
  73. char *dmabufsrc1 = NULL;7 p6 ~: m  J1 s+ L
  74. char *dmabufsrc2 = NULL;- J5 A" V$ i, W7 l9 O- C
  75. char *dmabufdest1 = NULL;
    * u! _0 d# F1 C8 C, ~: D% }8 B  [$ z
  76. char *dmabufdest2 = NULL;
    / Q  s. T6 ?9 Y0 J1 E
  77. 1 m/ H6 W$ H0 P  u, T8 ~# ?$ u7 T
  78. static int acnt = 512;7 O( J0 a& D# d: \
  79. static int bcnt = 8;* B* K3 a' a  E9 C/ g$ l
  80. static int ccnt = 8;: K: N" m# [& {  e

  81. 4 a% M7 k! D5 `: x2 G: D$ {
  82. module_param(acnt, int, S_IRUGO);
    " b/ O. o  i6 E; I# m6 [3 D
  83. module_param(bcnt, int, S_IRUGO);% y4 A, x: e9 C/ ]& O9 l3 h4 b  A
  84. module_param(ccnt, int, S_IRUGO);
复制代码

1 d! T* Z* m* D' M6 o4 r3 f  L- {+ I4 x( c- B' x( v. @
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
% Z4 S4 E( t3 o. K. Xarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。) f9 E1 R2 b/ |, r
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。. }' i+ A: q. E- s
/ y( D& O* ~0 `5 i" j% M

/ Y; u* |$ m; h2 G+ I" e
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-13 22:44 , Processed in 0.039579 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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