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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
7 _1 v9 N2 h0 W# c$ G
  1. [code]EDMA sample test application# y5 [6 k$ X2 O; [" ^
  2. /** N: A' E* F( Y2 Y
  3. * edma_test.c* y4 [; d1 T; h
  4. *$ `# M/ e3 T  G9 n* G
  5. * brief  EDMA3 Test Application
    0 `, p2 z( [6 j4 S& R: p1 P% V& {
  6. *! I- v7 B& B" i( I& s
  7. *   This file contains EDMA3 Test code.* s3 z  m, Y+ `7 O2 ]8 L+ ]
  8. *
    - t; Y( v- @, r1 r( H
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE$ q0 G( t! a5 w: @- G7 S4 V% }
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    9 \* [$ b- X2 ^' o; v% w) ~
  11. *         TO CHANGE.
    ' ?$ R/ o( A2 @0 I3 s7 b- u
  12. *
    / z! Y* L1 o( P9 L9 [
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    8 h& ]- b5 \( c( C/ l
  14. *
    1 j& H5 R/ U7 p; N
  15. * This program is free software; you can redistribute it and/or5 g& w* l6 n; c  w' q( N) u
  16. * modify it under the terms of the GNU General Public License as" S! [% M1 @5 p# T
  17. * published by the Free Software Foundation version 2.0 {; Q9 O8 N) M3 {2 j5 p
  18. *) E7 [/ c: o4 l- c5 g/ F
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any% x1 {/ s, r, h( t
  20. * kind, whether express or implied; without even the implied warranty# V6 f: v: g+ h1 B6 O4 z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the+ e$ W  k( k8 e& a* Q
  22. * GNU General Public License for more details.
      E/ o5 ~; t, h. Z. z
  23. */+ s7 ^' W- ~* c# ^, S* C$ x

  24. 9 }' ?7 J  w3 P: X
  25. #include <linux/module.h>5 y- Q: j4 @1 b- L" a
  26. #include <linux/init.h>
    5 G5 q/ j4 h: f( d- x9 {
  27. #include <linux/errno.h>" Z, P5 D, W5 b
  28. #include <linux/types.h>
    $ z  t8 g  R% X( `$ c6 q
  29. #include <linux/interrupt.h>7 N" ]2 V) h' Y0 R
  30. #include <asm/io.h>
    , y( K! s1 N% S0 q& y, k8 U
  31. #include <linux/moduleparam.h>1 c( d& }! k; f. O4 t3 M! X
  32. #include <linux/sysctl.h>
    4 a  {& n" n' q$ |' I& C! L6 a$ r
  33. #include <linux/mm.h>: r- j' X5 b/ g7 h1 ?/ y2 z4 U: O
  34. #include <linux/dma-mapping.h>. \  A+ P# S1 t+ {) ~

  35. # V: P; v$ |4 T3 G/ E7 p6 w9 J
  36. #include <mach/memory.h>5 i# T9 V$ r) k) y( n6 Q$ r
  37. #include <mach/hardware.h>6 R& h# c- C; E2 @$ E( g6 |2 w" s0 G
  38. #include <mach/irqs.h>
    ( D# K% F, |- F
  39. #include <asm/hardware/edma.h>6 j0 M/ m8 ~% Y2 v4 K
  40. ' m( x  H) k* E- z
  41. #undef EDMA3_DEBUG
    $ U2 G5 c1 w# r
  42. /*#define EDMA3_DEBUG*/" O+ P; ^# X: u# J2 e# Q$ E
  43. 8 e6 [' Y" b5 x
  44. #ifdef EDMA3_DEBUG
    - |: J% L# W, E$ K& x' U1 H" Q
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ' x2 ^, c0 \9 B
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ' y% L, P5 _; S& K0 ?* k
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)0 O; D7 `. x* t+ O  D$ w
  48. #else
    + Z3 x+ F" ?2 q  A) E: ]  V) i
  49. #define DMA_PRINTK( x... )
    - o1 b( R7 X4 E: q6 T- F8 Z& q
  50. #define DMA_FN_IN2 P% E, W/ \4 p6 \
  51. #define DMA_FN_OUT
    ) T. `5 |# H9 L4 s
  52. #endif4 [$ O/ e0 J/ Q

  53. 1 |$ G5 B8 {0 D2 M1 _8 Y
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ( P' C, `  e  t" U) O
  55. #define STATIC_SHIFT                3
    ' C; J7 Y$ y5 o0 O, P% j* P
  56. #define TCINTEN_SHIFT               20/ y8 t' p, \: I2 R, W" p  R9 a
  57. #define ITCINTEN_SHIFT              218 s5 g+ P$ D. \
  58. #define TCCHEN_SHIFT                22
    " C3 g) p+ i' [! m% ]& T: y
  59. #define ITCCHEN_SHIFT               233 v" d0 C, p8 s  c' X6 v; Q
  60. ( A, X* }6 `* G7 p8 \
  61. static volatile int irqraised1 = 0;7 W  A8 q; C6 N) n1 C; e
  62. static volatile int irqraised2 = 0;
    * U& a4 n2 H1 }4 U' |, P

  63. / q) R7 G2 A4 U- E9 l
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);  D/ J& U1 W6 ^7 }+ X
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    $ `& P- A) e7 u# i& j
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 h8 T2 p3 m, ]

  67. 3 S7 h5 P  t, m& j6 B6 W
  68. dma_addr_t dmaphyssrc1 = 0;
    6 K& ^) ]6 @5 `: R- X" ~6 O, A
  69. dma_addr_t dmaphyssrc2 = 0;( j0 w- A+ Q5 P
  70. dma_addr_t dmaphysdest1 = 0;
    & C1 h1 E! O$ p. o
  71. dma_addr_t dmaphysdest2 = 0;
    9 X! k/ f2 E: v. \# y

  72. 8 K! m/ F, }* W; u
  73. char *dmabufsrc1 = NULL;
    + R/ w9 _1 w+ i% w7 ?
  74. char *dmabufsrc2 = NULL;
    4 g4 ]0 h( P7 ^6 R$ B
  75. char *dmabufdest1 = NULL;* M, y1 k6 F3 y9 R6 b
  76. char *dmabufdest2 = NULL;+ m: J8 a. o5 X) ?# L

  77. 8 [0 ]& I' L% E3 ?  ?4 L
  78. static int acnt = 512;
    ( z, L3 ~: u4 [5 K' q
  79. static int bcnt = 8;$ \2 G6 s6 f) C# e+ O
  80. static int ccnt = 8;' b- ~" G6 ]% v. M- p9 p

  81. 9 C7 y+ @8 M( f  Y. T3 J6 A/ t3 Z
  82. module_param(acnt, int, S_IRUGO);% b1 L: {; G2 K  N5 k
  83. module_param(bcnt, int, S_IRUGO);
    " i* ^2 s7 z4 R) A8 u$ C
  84. module_param(ccnt, int, S_IRUGO);
复制代码

" M2 h6 U' j- y5 [2 G( t
* t1 i% r5 |; c$ i; o      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
4 J$ r6 A8 M( S& g  Q: v$ aarm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。7 S. H3 _! L8 H) g2 X
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
# R9 Z6 a) \: d1 A
" {/ ^/ p' r$ v- a& B4 B3 s' h. _  G  S4 v
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-11 01:07 , Processed in 0.048485 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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