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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ) S" }) @( \5 y! `1 B
  1. [code]EDMA sample test application! m; x% Y/ U0 d- ~+ j
  2. /*0 _1 j, o( z1 a% v; H* e
  3. * edma_test.c0 \8 d+ I5 U2 a0 j7 l  m' N- P
  4. *" |3 u' u+ M* s6 a3 v. l! |' M
  5. * brief  EDMA3 Test Application
    ! I% y; _! h! a$ |
  6. *6 x0 T3 @5 e/ m
  7. *   This file contains EDMA3 Test code.
    , {" _/ V# g$ q5 b& w) \+ a
  8. *, F6 e, e; O' U2 s, p3 c# c
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: W; a, y# ?7 h3 t; e3 x2 ?
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    : k5 O: w! i5 ^! k; M
  11. *         TO CHANGE." Q( O" P2 }1 R) E, [9 j: m
  12. *2 [. a7 _; F; q- `
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 m3 F- M8 m( r2 U# l9 R( _! ?
  14. *
    0 k% z* O8 T# C$ d0 [3 i
  15. * This program is free software; you can redistribute it and/or
    $ T7 C; C2 z; F# f: ]" e) d$ W
  16. * modify it under the terms of the GNU General Public License as
    7 z' A" g* u4 ^+ k
  17. * published by the Free Software Foundation version 2.! P, m* p8 ^8 K
  18. *
    2 S& m# I8 j' U2 h
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    + Q+ x+ J; S& Y$ _! ~
  20. * kind, whether express or implied; without even the implied warranty7 y# P5 a- i( c' {" |. u% y
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* {" J9 J% f: c2 J. |5 ]
  22. * GNU General Public License for more details.8 ]2 B; p( m. o9 \: E
  23. */3 }% q  h4 x% m$ `7 H4 P% _7 I/ u
  24. / k: ^# F% j1 k+ `' R( T; w4 Y8 y+ `
  25. #include <linux/module.h>6 B, a# \0 ]% S  N( m
  26. #include <linux/init.h>
    ' V% v- L" W9 o( B) O- O5 q
  27. #include <linux/errno.h>. ?1 n$ H7 l) \) s2 b  j: o$ w4 s
  28. #include <linux/types.h>
    / v( W# Z" |' J$ x# B
  29. #include <linux/interrupt.h>6 u# z& ]/ d1 {+ l0 j9 h) P( y3 ?+ C
  30. #include <asm/io.h>/ l+ C5 [" x+ ~& [( ?
  31. #include <linux/moduleparam.h>
    ( N. Y. W% F5 e8 t. l
  32. #include <linux/sysctl.h>) {0 }7 i* M0 @; ?9 p4 P
  33. #include <linux/mm.h>) v8 D: U$ k2 Q2 _( y- B% A6 t7 s
  34. #include <linux/dma-mapping.h>: x5 M4 Y! ?6 O3 u# ?$ M
  35. , V- e2 o6 u, v3 j! [, m
  36. #include <mach/memory.h>. O2 w  e- Y2 \" M
  37. #include <mach/hardware.h>1 L/ P) _: c6 n, N  ^" h
  38. #include <mach/irqs.h>/ |  v+ H' W$ Z8 R
  39. #include <asm/hardware/edma.h>
    ! Q, R. [8 P4 g

  40. ) Y9 `+ [3 ?8 T. t9 s5 \6 q# F
  41. #undef EDMA3_DEBUG
    , w: R* L; p7 e* e" `
  42. /*#define EDMA3_DEBUG*/
    2 \+ |: _0 O' s$ ^# O

  43. / \2 p( r  ^0 p9 M
  44. #ifdef EDMA3_DEBUG
    8 A% W$ W" n, L( i( H4 p4 ?6 G
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    * Y, k9 v. L9 a# F
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    7 V$ _! y0 g# g7 D/ J2 U) n; }( N7 q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    5 B% G/ Q. V9 j9 U1 E
  48. #else( o& n+ [- g2 s8 N+ y
  49. #define DMA_PRINTK( x... )# }. M5 k. ?) k, y  {7 L! q! A
  50. #define DMA_FN_IN
    5 N1 m0 u4 ]: O; m; O3 w
  51. #define DMA_FN_OUT
    2 n. u, l+ Z  e, T( E
  52. #endif+ w* |" Y5 f& j7 \, D6 i  ]

  53. # Z1 C% b/ K# D" X' T
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    8 i1 @+ P8 J$ h' q  Z
  55. #define STATIC_SHIFT                3
    ! F9 B. i3 v8 ?5 m
  56. #define TCINTEN_SHIFT               20
    8 P- A4 @. [2 f; i9 U$ |, I) X
  57. #define ITCINTEN_SHIFT              21
    ) k5 R: H7 w$ x* N! p* n3 y5 ?
  58. #define TCCHEN_SHIFT                220 f6 ]" _5 a2 d1 K; s
  59. #define ITCCHEN_SHIFT               23
    2 R' n7 `4 b7 C5 r! B; {0 {' ~
  60. $ S  X7 E2 Z5 \+ X4 k+ T7 A
  61. static volatile int irqraised1 = 0;
    0 F# I" E7 s2 c0 {+ e$ l
  62. static volatile int irqraised2 = 0;% H6 m  n/ u/ D' D8 X

  63. * f" D% f. c6 ?( s# o$ @, }; W6 h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ) x7 N* v; b6 I7 e( S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : M+ E' d$ g( p4 ]- h. _
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    9 v' V9 J6 C+ q* p3 M

  67.   R$ n$ C# q* p  }9 O1 @  G+ f
  68. dma_addr_t dmaphyssrc1 = 0;% u  X- e: O8 ]
  69. dma_addr_t dmaphyssrc2 = 0;! n; r! [, R4 S- x% B. ~3 d% ]
  70. dma_addr_t dmaphysdest1 = 0;. x' k" V. [6 S3 L
  71. dma_addr_t dmaphysdest2 = 0;
    & B9 m, W: I1 C1 @. T- x
  72. % l. m" D  |* T2 V! F% h
  73. char *dmabufsrc1 = NULL;
    ' B$ T$ d7 u$ @# N
  74. char *dmabufsrc2 = NULL;& V! i- c0 R- w% t
  75. char *dmabufdest1 = NULL;5 w* D" H3 S) M+ h' H( P# ^% X: H
  76. char *dmabufdest2 = NULL;
    8 F: V$ ?/ {7 |! }

  77. 4 D! ^8 a) d( `6 ~5 a" }$ s
  78. static int acnt = 512;
    & n8 f' T# ?) ^: \1 I
  79. static int bcnt = 8;
    3 \& f' X! _  C% q5 Z0 _& S
  80. static int ccnt = 8;
    , f0 S$ N/ _! p. _8 ~
  81. / a9 A3 M- q9 v  j
  82. module_param(acnt, int, S_IRUGO);
    ) L, U: @9 Y# r# N$ l6 D0 J
  83. module_param(bcnt, int, S_IRUGO);
    4 i9 |' s' b& r. \" Z
  84. module_param(ccnt, int, S_IRUGO);
复制代码
. [: _+ [+ _' C. y* C# f4 p

" o  n3 i9 R0 T/ u4 M      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用3 q- A/ f. }3 r- _" H5 @
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。4 }. e* n: L2 T* e
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
0 _+ L) x! [0 {
' p1 U& N  @5 b* a8 ^
' s# b* d# P# [8 T! u5 \. X
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-20 13:08 , Processed in 0.042869 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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