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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
. q& O8 ~9 H5 g! U1 ]. n
  1. [code]EDMA sample test application
    0 a2 r/ E' M; {( T' ^# R; l
  2. /*+ F8 W5 R1 ^% ?* B8 K
  3. * edma_test.c( \7 r2 z" O/ u8 W- T3 O
  4. *7 O9 q4 b4 ~, L; M. n: [
  5. * brief  EDMA3 Test Application6 F- k) f  `& N5 z' f0 ?$ m7 o  s
  6. *1 W8 J# g" F3 A( X6 J, e& _4 V
  7. *   This file contains EDMA3 Test code.8 j3 Y7 r* @1 F' o* F+ K
  8. *
    6 @  M5 A. m0 u3 @
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE3 T& \1 R0 v  L+ ]% L3 G* r
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    + n7 k/ e* ~9 M  j* b3 u/ r
  11. *         TO CHANGE.
    8 L, O, ]6 }: a5 r. P7 W
  12. *
    , d- ~5 @+ |1 P$ [" _, e
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com// C8 @, Y" Q# x1 K
  14. *. {# {9 X/ z( e2 L; e
  15. * This program is free software; you can redistribute it and/or1 {6 ~( I$ x* [4 |+ P0 ]  k
  16. * modify it under the terms of the GNU General Public License as
    9 G8 a3 I) B! e
  17. * published by the Free Software Foundation version 2." j6 i. _8 E* D1 l5 j/ Q, Z
  18. *, V5 C+ w$ |( o) a; B/ l
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    , k2 {% x4 _$ W& E
  20. * kind, whether express or implied; without even the implied warranty
    2 y5 Z  M6 I5 z6 S: X2 [5 j% q& ]
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the8 R" H5 @/ f1 D4 I
  22. * GNU General Public License for more details.
    ) r$ O9 i8 [" o+ A2 ]9 s
  23. */
    8 i, N1 ]8 D+ a7 n$ Y9 C
  24. . D; d  H7 Y, ^* z# t  y' u
  25. #include <linux/module.h>
    , {5 u6 {% T5 ~& m0 b
  26. #include <linux/init.h>
    ) Y7 \0 s$ l5 W. i3 }
  27. #include <linux/errno.h>" }1 w, N9 _- o& r! A' S+ C
  28. #include <linux/types.h>
    + J0 s) x; _9 \: ?* v
  29. #include <linux/interrupt.h>
    7 r; k' Q8 x% f7 M$ `
  30. #include <asm/io.h>
    ! b5 v: H. F8 T- d
  31. #include <linux/moduleparam.h>
    * z4 M4 }6 ^% G5 |
  32. #include <linux/sysctl.h>
    $ F  B9 M* C4 d" D$ P
  33. #include <linux/mm.h>- J5 \3 U; h0 s8 E% C( g# x$ v
  34. #include <linux/dma-mapping.h>* d3 E# w! I6 p' ^' M
  35. ( I! I2 N7 u& o
  36. #include <mach/memory.h>9 l4 {) z" h" I% `5 l
  37. #include <mach/hardware.h>
    $ ^7 {. t0 M* S6 h( L" Y
  38. #include <mach/irqs.h>
    3 q5 h) K* t2 K# {
  39. #include <asm/hardware/edma.h>( n) w' U8 Q0 L, C3 R+ q4 l2 F

  40. - N" e6 X- [" t" H/ P1 Z, U
  41. #undef EDMA3_DEBUG( L! c* N5 ^; t7 z: \& s
  42. /*#define EDMA3_DEBUG*/
    8 Q1 ~9 X7 ~1 \" }) t
  43. $ `" H8 O% Q/ ^& o  J: f. d
  44. #ifdef EDMA3_DEBUG" _6 t$ A+ Y5 B2 ~9 q& O6 d% V. r. A
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    7 g7 R$ R* V" Q# _
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    ! M7 I% h7 o( k, P3 ]  `
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)5 o3 P: Z* G, k* S
  48. #else
    1 t1 r$ y; v/ `$ ?% D
  49. #define DMA_PRINTK( x... )
    8 ~1 b! J. [- f5 \
  50. #define DMA_FN_IN
    * X# n6 B1 l. w+ G  w) Z
  51. #define DMA_FN_OUT
    3 }- {! v* I* w; ~# K% A7 [
  52. #endif5 A6 b- G& T" _4 X% Q
  53. / u, G& W2 q$ k: G4 Q8 x
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)! ^/ j1 ?+ |4 W: W' `- [+ S6 i6 r0 Q
  55. #define STATIC_SHIFT                3- C; }$ Q6 ?$ c& F. u  _
  56. #define TCINTEN_SHIFT               20$ n: z4 o4 k* E  j& i0 u9 A4 x8 y& q& X
  57. #define ITCINTEN_SHIFT              215 h1 ]$ F* a" F) ?' q& N# a
  58. #define TCCHEN_SHIFT                22
    " e4 `) Q& ^: C/ k3 i: ]1 R
  59. #define ITCCHEN_SHIFT               23$ w  r: O2 [5 f$ j% ~7 m5 e
  60. $ X" s" \, O! r9 T
  61. static volatile int irqraised1 = 0;
    1 J4 T/ |8 n) Q2 f  ~3 F: C
  62. static volatile int irqraised2 = 0;$ v; P/ b9 e$ E" B/ Q0 f9 L* [
  63. 1 z& d2 ?8 f" \' x$ t2 Y# l8 }' b# j
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);5 j7 g; D2 |1 ^  C
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 t$ u( {" W+ M. m, D% t" [
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & N  Y! V, w( k
  67. : v3 s* O1 n9 |
  68. dma_addr_t dmaphyssrc1 = 0;: s5 V$ o  G8 ?
  69. dma_addr_t dmaphyssrc2 = 0;# X: ]/ e2 m* `9 u
  70. dma_addr_t dmaphysdest1 = 0;1 D  p; v& L4 x8 E6 G3 c+ B
  71. dma_addr_t dmaphysdest2 = 0;
    : b! V' S% N- _4 ^
  72. 6 `: a+ l* K, H! I  g( ^3 @
  73. char *dmabufsrc1 = NULL;, y  A  d. u- |+ Q: S
  74. char *dmabufsrc2 = NULL;
    8 `% L* d7 ^0 B; c: l# V; e
  75. char *dmabufdest1 = NULL;
    : f8 ]$ i. i+ T5 ^; x" ?& N/ [/ U
  76. char *dmabufdest2 = NULL;
    % o; x4 c& O& I7 x+ v4 o& Q

  77.   A1 B  A7 y: h
  78. static int acnt = 512;0 [* Q) @' v4 L
  79. static int bcnt = 8;8 {' G7 y9 j' F8 }1 ]0 w
  80. static int ccnt = 8;$ e+ w, I/ E# r

  81. ; C& q, p# C8 W& k) z$ K
  82. module_param(acnt, int, S_IRUGO);9 }; N" `" N% Q6 c2 v
  83. module_param(bcnt, int, S_IRUGO);7 t) l$ H* J" B) E( b9 `% Y0 U8 X
  84. module_param(ccnt, int, S_IRUGO);
复制代码

. P) T5 u' E' W1 i% L# ^. I+ N
7 C6 z/ c' _2 q1 ]" M- G" k      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
1 W. w; K6 @* _5 y  s4 S) O- karm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& U+ X" k8 T/ E; W: D9 A9 O
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ `) ~" {4 P3 G0 ?
, L8 q8 r, s# _) b9 a6 @+ {3 q' q
8 a% N5 M3 D, e7 Q0 ]. j- D, i
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-28 03:40 , Processed in 0.038936 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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