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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
/ @  F' ]$ \1 v6 `; e0 s5 _
  1. [code]EDMA sample test application
    4 j0 c: N9 f6 {# f0 V0 l+ _( E1 ?
  2. /*
    + A* M# X0 c8 R. f5 `+ I
  3. * edma_test.c# r8 M+ U0 z% A; h/ ?6 C  H
  4. *
    $ S$ S1 j- S2 A# T/ Q% W" u
  5. * brief  EDMA3 Test Application) N  g5 z7 Z! w! U
  6. *
    + v# `: k: ^% J/ I4 |7 {& Q
  7. *   This file contains EDMA3 Test code.
    4 B; T% v+ |: f
  8. *
    . b% G$ Q$ ~% p/ W
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    4 }( [! k5 ~' {' @9 k. b
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    ' W& |# p" a( ]& E# \
  11. *         TO CHANGE.
    ; E0 |! s' B9 i
  12. *9 d/ V0 z; J; d; x0 F9 Z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    3 w2 b; }* u- w" Y- R: ?) T$ F" J
  14. *
    7 X; u' d4 @7 e/ g% \  @
  15. * This program is free software; you can redistribute it and/or7 L/ ?2 o: N$ F* }( `! V
  16. * modify it under the terms of the GNU General Public License as$ X) g0 M; \( a5 i! x
  17. * published by the Free Software Foundation version 2.% `0 @! _- k% O7 g' M( K" Y
  18. *) y- }0 l9 I! u! R1 O
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    ) W# V2 U6 i. L9 Z1 \
  20. * kind, whether express or implied; without even the implied warranty
    0 K6 t4 I; ~4 \) v+ ^" J8 z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    / v& e- A: C' @; t$ w
  22. * GNU General Public License for more details.
    2 }) r! M8 n: Y$ ^
  23. */; I3 X5 X  H( n9 R. t4 V

  24. - W0 i3 g1 L9 z) g9 D+ r' ~
  25. #include <linux/module.h>
    $ {: s% `5 o7 v+ o+ Z- @
  26. #include <linux/init.h>
    - x3 i) {7 A( |+ }/ i: x% E, ?
  27. #include <linux/errno.h>; c; U9 A" k1 s. L( Q8 ]
  28. #include <linux/types.h>- y4 F+ e& N( x9 N1 w- |
  29. #include <linux/interrupt.h>: P$ B  Z# \' W/ l) _& a6 g/ i
  30. #include <asm/io.h>
    + |+ |/ T  _4 u; c; B: M
  31. #include <linux/moduleparam.h>
    : x. t7 |, G+ {5 a! s) A& j3 z
  32. #include <linux/sysctl.h>- `6 o2 p, `- z$ D. [
  33. #include <linux/mm.h>
    ( o; b, V; a# j' a+ ^0 Y
  34. #include <linux/dma-mapping.h>1 x) h6 W% [" k# ]' u1 P% M

  35. * P9 V% ~& r5 {* a, E2 K
  36. #include <mach/memory.h>
    2 ]7 \0 L) \! J2 ^' u
  37. #include <mach/hardware.h>
    ! C9 u# [# }+ J# O7 i( t$ m
  38. #include <mach/irqs.h>
      Y; y# c' B/ |- I' Y3 q9 p! s
  39. #include <asm/hardware/edma.h>
    3 t6 R! B  ~1 k8 n% C. @

  40. ) M) g6 K* o" {: r" M
  41. #undef EDMA3_DEBUG* [. e$ L7 T% t% M' H
  42. /*#define EDMA3_DEBUG*/  O" `( L' F/ h0 I/ k

  43. ( s1 d4 X- ~8 |  x/ o" v- c
  44. #ifdef EDMA3_DEBUG) o1 Y: T0 X$ Y, p8 [
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)- S( \# q" f0 i! S" p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    5 A  |; N1 e( z
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 V  V8 r/ _6 _* l
  48. #else( |4 r* X( m4 }8 G
  49. #define DMA_PRINTK( x... ); K) e  w* r9 p. [/ c; t. x; f
  50. #define DMA_FN_IN5 S, G( ^* j& E. u( S' U
  51. #define DMA_FN_OUT+ ^+ p* ^+ I0 V2 }
  52. #endif
    3 \: k2 ~4 u9 V# p' C- F2 Z. x
  53. ! E8 E% C5 R5 L
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    * E& _- Q$ p+ i: E3 r; m; ]$ N
  55. #define STATIC_SHIFT                37 @0 b8 H) O: R/ e
  56. #define TCINTEN_SHIFT               20
    . A+ @9 y6 m+ [3 q8 V
  57. #define ITCINTEN_SHIFT              21% \+ O2 n8 p  Y5 K! S) I
  58. #define TCCHEN_SHIFT                22
    ( Y$ j1 t" f3 ^  C9 w4 L  [
  59. #define ITCCHEN_SHIFT               23
    $ {, v, b6 X; H! A. C$ s; z

  60. 1 \1 T8 d/ a' e' o
  61. static volatile int irqraised1 = 0;2 U) W2 m- }0 U- N. q
  62. static volatile int irqraised2 = 0;
    ' I9 }2 N# n7 g- o" Z% P
  63. : Z# ]( @7 e4 r
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 R5 j2 @4 d0 S
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);; v3 \# {; M* e3 \) [% ~" J
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ( C8 i% c' a. R

  67. % K# E+ i! S! |- w- O3 u8 J
  68. dma_addr_t dmaphyssrc1 = 0;; g+ v6 z9 a5 q6 E) ^
  69. dma_addr_t dmaphyssrc2 = 0;7 s2 @* r0 }3 E3 \; i. x
  70. dma_addr_t dmaphysdest1 = 0;
    . ^2 O" I& ^) W% ~
  71. dma_addr_t dmaphysdest2 = 0;
    ( d7 w- B1 _0 H3 C

  72. " W8 }5 c# i+ o- `
  73. char *dmabufsrc1 = NULL;
    % P! }- G1 @6 t- U
  74. char *dmabufsrc2 = NULL;0 ^& k+ ?# z% k5 o
  75. char *dmabufdest1 = NULL;
    ) Q# w) L% l9 \8 K8 D: w
  76. char *dmabufdest2 = NULL;
    + Q# h# ?2 j, y6 a8 V* f
  77. # J+ h- w/ y3 n+ F0 S
  78. static int acnt = 512;
    : E. @% b) z3 p0 R% F6 v; |
  79. static int bcnt = 8;4 ?. |! i( i  x
  80. static int ccnt = 8;: t% c" r- O7 U4 c$ k) k6 v. o

  81. 7 \$ p8 o" U1 g# b, p3 D* ^% i
  82. module_param(acnt, int, S_IRUGO);
    9 h/ E$ k' u6 P9 I* Y) F% d
  83. module_param(bcnt, int, S_IRUGO);# _* f# V& ~8 d8 E8 N9 v
  84. module_param(ccnt, int, S_IRUGO);
复制代码
& F& B, l$ k8 z% J; N

/ t3 M# ?; k$ m: a. B: \      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 A1 V% s2 P8 G! X+ b
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
6 i! {  h. i) o' P. b/ e& [1 L     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# z0 V: l  s; I  y% D

- ]' ~2 v; f# N6 W  v  v' w# w
* A3 J/ X3 }6 U9 m9 N% W5 m  u; A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-24 18:50 , Processed in 0.057930 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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