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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
& ]- C  [0 a9 \3 g2 G! U
  1. [code]EDMA sample test application
    4 G1 `- m7 |: r" m+ \
  2. /*
    9 b) }& ?) y! c/ ~
  3. * edma_test.c5 ~& k  I6 u" I' C
  4. *8 u; o* x/ g) P" m( _
  5. * brief  EDMA3 Test Application
    ( Y6 B7 S& T5 n! s" a* t  M
  6. *1 k; O. U  I7 Z3 c2 V' {* ~
  7. *   This file contains EDMA3 Test code.. A  P- O3 Z4 b/ N% {' }7 F  ?
  8. *
    7 m$ Y/ {, t6 W8 G7 z6 M( ~
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    9 J! s8 K% b9 O. ]
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT2 @" |3 u5 j5 Z( _2 ]
  11. *         TO CHANGE.- @! s4 }! b- b& s
  12. *
    4 j& r8 @$ }9 y" g/ ~! c
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    1 M  o8 g# Z- ]( h$ N" G1 g
  14. *' x9 {% X. \& Z+ o& }( m! U$ k
  15. * This program is free software; you can redistribute it and/or0 r! i; h) X0 m
  16. * modify it under the terms of the GNU General Public License as
    * R/ a+ R9 P! l1 s+ l; \: t
  17. * published by the Free Software Foundation version 2.; J  H9 X9 ~( H, t0 R
  18. *
    ( L( z( [; @7 N5 m9 I- V
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any! ?. m# M; q, \: D3 p8 O1 i
  20. * kind, whether express or implied; without even the implied warranty! [9 y! L  l# T5 W' \% h' C) @6 }
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the& o7 K% |3 V" u1 o5 `( U
  22. * GNU General Public License for more details.
    : y1 w) W6 b6 f0 L3 |% Z; k& \
  23. */
    / B0 q. ^5 V9 k: |
  24. $ n1 P5 W* V% D: l  b" ?& \( X
  25. #include <linux/module.h>/ B! r0 X9 P! ?/ B, v
  26. #include <linux/init.h>* p2 p+ F0 h1 n+ ^$ p6 f1 x
  27. #include <linux/errno.h>
    5 u! C9 O4 k. a' I
  28. #include <linux/types.h>
    : T: H/ ?8 _  I' |* t; v
  29. #include <linux/interrupt.h>9 m1 G1 E- I; t
  30. #include <asm/io.h>8 D9 S! o' i0 y( n: s
  31. #include <linux/moduleparam.h>* W# N9 s! k, R: Q
  32. #include <linux/sysctl.h>7 k! q6 q3 y# M* A7 O" b7 h
  33. #include <linux/mm.h>9 M- G# ~- w4 _" ^% h/ Z/ ]
  34. #include <linux/dma-mapping.h># `: u% @/ X. J: V3 ]( f
  35. - z5 g" g' q$ o1 L7 s
  36. #include <mach/memory.h>
    ; }: U# {8 G2 D) F
  37. #include <mach/hardware.h>& s- i& X4 X2 I1 t
  38. #include <mach/irqs.h>
    2 q" c6 A" r. ^4 W/ C) O  o2 V
  39. #include <asm/hardware/edma.h>4 O7 `; F9 F" `2 ?

  40. 9 c" R# Y& E+ l' k5 s8 h& b8 ?4 T' z
  41. #undef EDMA3_DEBUG
    3 c7 S+ b# F/ ]  H; `' W. }$ ?
  42. /*#define EDMA3_DEBUG*/; e) q5 X* v! x+ i( }
  43. + V# {, H" H% q7 I# ~+ H! L+ d, @8 ^
  44. #ifdef EDMA3_DEBUG
    & a8 H4 R) ]" `% o
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    ; x/ j, d# o; S8 z2 r# v0 ~% ~8 {
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    7 _9 i+ F% D5 f/ t
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)" E+ q$ A( \- a- {
  48. #else
    / E# V/ N! A, w0 b1 Y! W
  49. #define DMA_PRINTK( x... )
    1 K. T' ]/ d- p$ T- h3 _' o* n
  50. #define DMA_FN_IN# b/ L+ [! V" K" b
  51. #define DMA_FN_OUT# t3 }/ y4 ^# N$ Z/ v' ?
  52. #endif7 ]. y+ S% W3 j( l. M+ }

  53. ' f6 f6 Q) q( ?  \3 `& c( q9 j7 t
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ' I) a+ h0 S( S; ~! A' ]
  55. #define STATIC_SHIFT                37 p' @$ Y8 z+ V% i/ Z- K
  56. #define TCINTEN_SHIFT               20
    # ?6 O" y  P4 [
  57. #define ITCINTEN_SHIFT              219 t% {1 X3 j$ n+ }7 n
  58. #define TCCHEN_SHIFT                22
    2 a3 {% `+ \7 y' L& A$ D7 E! l( B
  59. #define ITCCHEN_SHIFT               23" m8 v  T/ L4 u+ p$ Y6 D

  60. ; {# \3 ?/ A: o! F# j
  61. static volatile int irqraised1 = 0;$ r1 j4 n5 f0 f, z
  62. static volatile int irqraised2 = 0;
    , w! W5 s3 [8 P
  63. ) D& }: m2 T$ J8 R& H4 n, ^- J! p
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' ^0 i. r4 B6 d3 I. p
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    5 |& m1 o" }0 P6 w% h
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 W$ L( v6 E8 [! V3 w; S( ~
  67. % P+ Y6 x( w* W
  68. dma_addr_t dmaphyssrc1 = 0;, C- k, p  u7 t. [; I. Z
  69. dma_addr_t dmaphyssrc2 = 0;
    % B) u/ K+ U2 {) Y
  70. dma_addr_t dmaphysdest1 = 0;
    + g. a; {2 G- Z/ z, N
  71. dma_addr_t dmaphysdest2 = 0;
    $ U2 U# t) x& k6 T, P/ H/ }

  72. 4 r- y7 c: u9 N/ J, Z8 X
  73. char *dmabufsrc1 = NULL;# G0 s" {# B/ j/ |
  74. char *dmabufsrc2 = NULL;( ~0 B$ {" j9 x
  75. char *dmabufdest1 = NULL;
    . I, t. Z+ g  m+ R- }9 Y# p# J
  76. char *dmabufdest2 = NULL;
    / T/ q* }5 ?; y8 j, C4 r7 {
  77. 6 f- z. ?. R3 ?$ G; }
  78. static int acnt = 512;
    , M6 W8 x+ \! T( P% i
  79. static int bcnt = 8;
    % P7 f1 M# p( v) c/ l% {8 D
  80. static int ccnt = 8;
    ) S: J+ u- r  t3 o4 O2 W) F: b
  81. 4 I% V- I+ n" }0 Z. V
  82. module_param(acnt, int, S_IRUGO);: z# e% f, O5 ~" L
  83. module_param(bcnt, int, S_IRUGO);2 E! t% O+ D% t: ^
  84. module_param(ccnt, int, S_IRUGO);
复制代码

% M: w4 v' e- H' N! G5 j
# T" `9 t9 p  P0 B) U/ U6 G1 V      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用8 }& C& i6 S5 }
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。  h5 t3 g8 o5 f! E; W
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
& p* C, u. B4 d5 e' x- y) v: Y# x1 u! ?/ Y3 x6 R8 u. p0 I

2 f$ D) g" R0 f3 I/ J" h
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-23 06:14 , Processed in 0.048897 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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