OMAPL138如何在Linux下使用EDMA3驱动 - OMAP-L138 - 嵌入式开发者社区 - 51ele.net
设为首页收藏本站

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 : j# g% E% E' w- Q8 Y! v! |: v3 Q
  1. [code]EDMA sample test application
    % j4 d9 b) V& ], U
  2. /*
    8 X" D3 M7 J0 G! a2 L* e
  3. * edma_test.c
    1 ?2 {: q% ^& ]- L8 t. V$ ~
  4. *- k6 e' _7 }5 c! E
  5. * brief  EDMA3 Test Application% b2 |/ g3 M% y- e4 K7 E. s& W
  6. *
    7 V9 a, @5 T) g; m3 e
  7. *   This file contains EDMA3 Test code.* t: n0 e# g1 |( Q
  8. *" _3 [8 O7 J, n: y
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE+ f  U- m1 L6 O
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    3 k; @' b) Q8 d3 \. j
  11. *         TO CHANGE.
    1 q' t- v; k1 m7 x  j7 ]
  12. *
    6 e9 ~$ z( F- c3 Y/ z* H
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. `+ O* E" [9 K3 ?7 _
  14. *& p/ I. k; Y2 j6 p$ [
  15. * This program is free software; you can redistribute it and/or( u5 [1 x- o' v8 {. X5 h
  16. * modify it under the terms of the GNU General Public License as6 E/ A: @, G% R: ~& }/ ]* P! L
  17. * published by the Free Software Foundation version 2.  h* x/ [) i8 L8 P6 j5 o9 F
  18. *7 u& R# o6 J% z+ F+ ^+ k/ A
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    " r' v# Z- M2 N; X4 k$ x  F) D
  20. * kind, whether express or implied; without even the implied warranty
    * @" H# e6 i0 ~
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, {0 W7 [/ Y) a, j  E1 N
  22. * GNU General Public License for more details.9 i  Q1 d$ A& h) e2 H% M: v. t3 R
  23. */
    $ G3 g8 P6 [9 I! P7 N3 n' S' O

  24. 6 t. \; k* z( ^
  25. #include <linux/module.h>
    3 M7 y7 {. ?! b# N6 s
  26. #include <linux/init.h>
    ( \) k. a9 c: r7 I, F5 S% D+ i
  27. #include <linux/errno.h>
    : z5 N: d/ y0 b; }
  28. #include <linux/types.h>% N, |- E4 ~2 v# _4 i9 U! N
  29. #include <linux/interrupt.h>
    + A, h! r6 p/ T/ ^/ Q6 j
  30. #include <asm/io.h>% l. k  Y6 m9 q) W
  31. #include <linux/moduleparam.h>- n7 N+ p+ k- V( c. I9 C! T3 j  v
  32. #include <linux/sysctl.h>
    3 ]6 n6 F! }- R1 a8 p! E( D
  33. #include <linux/mm.h>8 R! x, r" k+ D% ^1 J  V
  34. #include <linux/dma-mapping.h>
    6 V) i& r. G2 X7 w6 A

  35. 7 U; }( P6 E& R& Z. Y
  36. #include <mach/memory.h>
    ( g* \( U+ p9 \3 u$ v4 v( U, x
  37. #include <mach/hardware.h>
    ) \4 Q$ u$ ]3 i7 q8 U4 T9 T
  38. #include <mach/irqs.h>) J" j2 {5 ~) t" y8 R! c3 |/ B
  39. #include <asm/hardware/edma.h>
    ) ~: P7 `9 r; L/ O7 ]. W1 ~/ X- v

  40. : q) y9 X; W* u& I- a  }
  41. #undef EDMA3_DEBUG
    3 P4 h6 j3 |: _4 [' q: f. J
  42. /*#define EDMA3_DEBUG*/7 z3 A* @# W8 N% C

  43. + V& L8 x) H! e0 P! p0 A( U
  44. #ifdef EDMA3_DEBUG. X# X+ Q& N$ x( I+ o; ^
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)$ `6 U  X+ ]6 f- y) }
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    2 U" B! {; O/ B6 k, T
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)% R- a7 j% A9 b5 |: H4 i+ F
  48. #else  N$ c1 B6 q, p0 o2 x/ f
  49. #define DMA_PRINTK( x... )3 l' ~5 L  I4 m6 U3 G
  50. #define DMA_FN_IN
    5 |& p( F* A8 Q: f5 k  |
  51. #define DMA_FN_OUT
    * c& ^7 d, u: k0 \4 Y0 ^, z& G
  52. #endif* E, i" k& r  Z% C3 J5 r: B

  53. * s2 f9 F  L8 T- P, E- h+ j) {! m
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    1 A" E8 P$ ~' Q$ @6 w/ Y8 ?
  55. #define STATIC_SHIFT                3
    2 B" X) f" q" ^
  56. #define TCINTEN_SHIFT               20
    $ A' {8 x" @7 ?: ^! }
  57. #define ITCINTEN_SHIFT              21- P" |& v2 ]9 ]- D
  58. #define TCCHEN_SHIFT                22: R. `$ k6 Y; h: o
  59. #define ITCCHEN_SHIFT               23; U# @/ n8 {. O* Y( o" y; F8 K$ v

  60. 9 j: L( u* K8 B& }% g+ \
  61. static volatile int irqraised1 = 0;
    4 b. M2 K$ \9 j9 D0 h
  62. static volatile int irqraised2 = 0;
    2 M# b: b/ K  Y% M! F  J
  63. 5 D9 A9 h" U# a! `4 z2 `
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 s0 P/ q3 U/ L: c
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 Y8 a4 S" D" r% m5 K
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( X% [2 L4 ]# h; \8 r

  67. ( a* d3 E+ F0 `- N
  68. dma_addr_t dmaphyssrc1 = 0;" L! P" g! `4 @' H
  69. dma_addr_t dmaphyssrc2 = 0;2 S8 Z* s. e0 D+ u7 F. l7 u
  70. dma_addr_t dmaphysdest1 = 0;' V" J1 t5 R+ I- U' N, k  d
  71. dma_addr_t dmaphysdest2 = 0;" ^' j: P% `" w% e% ]1 _3 ^7 U

  72. 0 F$ S7 S/ j. P
  73. char *dmabufsrc1 = NULL;
    / ~$ W4 K% Q* Q/ A1 x
  74. char *dmabufsrc2 = NULL;7 p$ x2 B' ^( [2 ?
  75. char *dmabufdest1 = NULL;+ y. x, v% t! |# K* X& n
  76. char *dmabufdest2 = NULL;
    ( o# {+ j# z$ u' `4 Z' P, L# Z
  77. & o% `' N6 q0 z, d" d
  78. static int acnt = 512;+ C2 ^0 F0 q6 s6 O
  79. static int bcnt = 8;
    $ Z& L0 {1 O  f' a, _2 {
  80. static int ccnt = 8;( `2 l8 W" u- J' d% l

  81. : t* C  @! w4 C+ t
  82. module_param(acnt, int, S_IRUGO);
      S& @9 a! W4 D4 U$ H9 W
  83. module_param(bcnt, int, S_IRUGO);/ E8 m. ~. Y, i6 O
  84. module_param(ccnt, int, S_IRUGO);
复制代码
& o' q) u9 Y) a6 N5 v5 B3 R

3 S& q2 a0 W. K7 l' B      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用+ k* K" N$ U  ?2 T4 O8 i4 t/ @3 k
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。& C" X9 z3 l' X' z  a
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
; S% G: p& \8 Z( K3 t' z8 }4 J3 ?; q. t* O
" b# K  I9 t9 C
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-30 21:08 , Processed in 0.039214 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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