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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 - [4 w( `7 F+ W6 e
  1. [code]EDMA sample test application
    3 X" t" y& y3 ^3 D! s" W" t
  2. /*$ b) W5 B- l& E
  3. * edma_test.c
    - G6 j  X8 Y5 }* u
  4. *
    5 y1 K3 X" ~" P2 h3 A* d9 d) M
  5. * brief  EDMA3 Test Application
    - e% h( H* s# ?3 g1 ^
  6. *! d& ?% f0 K2 V9 [
  7. *   This file contains EDMA3 Test code.4 v, y$ W" o- C2 c1 I
  8. ** I4 V- f  ]+ O6 `0 [$ H
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    7 O1 z3 E5 N5 \, u3 V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    # A' ]0 F% ~: P9 T8 ?8 b" [
  11. *         TO CHANGE.
    0 e) C% Z8 i9 |6 m0 p/ M( [
  12. *
      Y8 E2 I4 i$ y7 Z4 J; L8 h
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/( u1 ?" N8 e; |: ?* p2 ~
  14. *, j5 U: h9 h' [1 e& u0 ]
  15. * This program is free software; you can redistribute it and/or
      j7 o  W* }+ p
  16. * modify it under the terms of the GNU General Public License as
    / J) _- Z1 F9 e7 ~
  17. * published by the Free Software Foundation version 2.
    2 H1 ^4 l  g" r1 U
  18. *
    0 k. B7 w  _% n) O3 d
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any6 ~/ q! E8 i2 }3 d& B
  20. * kind, whether express or implied; without even the implied warranty  M  M! e! ^4 S7 T- r9 F
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the& E: P$ B& h# V) q; P) l/ W4 B& a
  22. * GNU General Public License for more details.% k5 @# Y& H) ?" G1 h; r) P. L
  23. */
    " W! P7 A% @0 L- c
  24. 3 ^2 P( p1 b3 p+ Y* k8 Z+ m( ]
  25. #include <linux/module.h>) ^: G0 \- u* Z) p6 r" v. ^( E" `
  26. #include <linux/init.h>8 g0 a; ]- O! u5 m+ f& N
  27. #include <linux/errno.h>, \1 U  Z. p0 H* C* {
  28. #include <linux/types.h>7 z0 e0 z4 G1 ~  J
  29. #include <linux/interrupt.h>
    . d; f0 i+ X& t6 C( r  _
  30. #include <asm/io.h>
    : N9 Q! C- J! |$ \4 h3 W
  31. #include <linux/moduleparam.h>
    + h6 v  s& K/ i1 x$ }
  32. #include <linux/sysctl.h>% N5 x' C' ~6 O0 r* W/ f/ I
  33. #include <linux/mm.h>7 m8 e0 y' f2 M" |8 ^1 z7 S
  34. #include <linux/dma-mapping.h>7 G  `% Q) y/ f5 {4 c, U

  35. " h! K! C1 T$ ^3 v1 T: ^
  36. #include <mach/memory.h>
    0 K7 @+ b  a6 b7 n
  37. #include <mach/hardware.h>
    ! o  m9 _* q1 u' F' i& L
  38. #include <mach/irqs.h>& A' o' u, w* P
  39. #include <asm/hardware/edma.h>6 p+ M4 B' Q  A+ `7 K

  40. * l6 ]) d# t4 f# ~3 e
  41. #undef EDMA3_DEBUG* Q+ R3 t5 x8 D
  42. /*#define EDMA3_DEBUG*/$ q5 q) q) ^( y- }5 o1 [0 x- F" ?
  43. 4 A/ c5 ]+ M) Y" m- h$ s, H" j7 Q
  44. #ifdef EDMA3_DEBUG
    . i! l/ X) g" _$ G9 g0 S2 T" x
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( P  o$ P6 \. ?& D' w
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)* Q# @$ o( m& B6 g) z  {
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)/ Z  w9 K. U, k% u) }
  48. #else
    : \* E3 x* t* y% g9 k
  49. #define DMA_PRINTK( x... )
    ) x" c. S8 Y1 L0 ?: w
  50. #define DMA_FN_IN0 `. E* \9 j9 ~4 J
  51. #define DMA_FN_OUT6 P  I5 p. x4 g- q* b) X0 x! d/ K
  52. #endif
    ) v' g+ h7 L, ~

  53. ! U, G! n) S; H" o8 X
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    4 z: B- _; Z8 W5 I
  55. #define STATIC_SHIFT                3
    7 ^# n6 x" U2 v$ O! S% \
  56. #define TCINTEN_SHIFT               20, e6 {0 l- ?1 g- O; [3 d1 L
  57. #define ITCINTEN_SHIFT              21* l, f8 G$ D9 f5 L
  58. #define TCCHEN_SHIFT                22
    3 b( d! B& L- D" e- X! ?
  59. #define ITCCHEN_SHIFT               23
      p4 ?$ I+ |" p$ ^6 M- X' v9 }9 z
  60. / l+ X% t+ _# Z% L
  61. static volatile int irqraised1 = 0;) H9 K8 ~8 I2 @9 n& x+ V
  62. static volatile int irqraised2 = 0;
    . ^1 z5 {' |9 c0 y0 ]

  63. / a5 S' k/ W2 R% E- M: H( T8 J
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 I. H# ~; A  y) M
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);+ \7 I6 R) T& z: }- t% @& E
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 L7 y: I; g8 r/ H
  67. . z8 C6 Y/ y3 q, d
  68. dma_addr_t dmaphyssrc1 = 0;
    8 [+ b9 m) }! |% y+ w0 s& L& c
  69. dma_addr_t dmaphyssrc2 = 0;7 d4 P2 x3 R  Y0 F( p
  70. dma_addr_t dmaphysdest1 = 0;
    0 F2 ?! y7 e  i
  71. dma_addr_t dmaphysdest2 = 0;
    / p  ~6 C, r2 t
  72. + X8 D. n1 r( O" {
  73. char *dmabufsrc1 = NULL;
    & @2 y, a5 I4 t$ V/ l9 {* P
  74. char *dmabufsrc2 = NULL;
    ' R/ g9 G6 [/ @6 k! W
  75. char *dmabufdest1 = NULL;
    7 J1 q9 y$ p. H# q; y0 o# X2 U
  76. char *dmabufdest2 = NULL;5 m2 }4 P3 l: f4 `: w4 j
  77.   R) u" W! v3 q6 v2 b! Y! C8 G
  78. static int acnt = 512;: ^: Q" R9 ~0 S. b: B* Z7 v- z
  79. static int bcnt = 8;& y1 Z& Z/ g) l6 B3 F
  80. static int ccnt = 8;7 k% N; r. V- @2 S

  81. % _1 S* Y. E, x5 p+ v  ~
  82. module_param(acnt, int, S_IRUGO);% o; K/ x5 ^- m) z& O  {  V
  83. module_param(bcnt, int, S_IRUGO);; L! K/ ^, J2 X7 D  k
  84. module_param(ccnt, int, S_IRUGO);
复制代码
5 q  G2 Z! K' x
4 h  s! K3 v$ h+ _4 @4 ~5 J# j( _
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用8 D/ |# n: w, y* q0 ~' m
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。- j' Q: o0 x8 G
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ v( }4 d' {3 h5 Y+ r- Q5 S4 G) Q! ?3 o! t. G
/ {; j, R) d" t; `  V8 W0 i. q! V
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-7-23 21:38 , Processed in 0.039214 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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