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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
$ @$ c1 d3 B+ [1 K( l5 x
  1. [code]EDMA sample test application
    & P) ^# v5 m" r4 M
  2. /*
    ' Y# F( _( W& h
  3. * edma_test.c
    6 |, u2 }0 c. Z7 }  x% e7 R! S
  4. *
    9 K: h' J$ m! `7 ?) A, M
  5. * brief  EDMA3 Test Application5 I# A; ]/ |- P
  6. *
    & w+ G4 D0 l) W7 w8 m* }' G
  7. *   This file contains EDMA3 Test code.; Q9 }/ i/ }! t/ v. l) q+ J5 r: I! X
  8. *. }* {. \. g/ ]: L
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' d* d% B2 @) `+ v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    % A7 ]- b7 N# m; C* N
  11. *         TO CHANGE.% \7 |. e( X  [/ A5 e) ~# W! J1 y
  12. *
    # }) m" v0 D, u
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/  x' E. t, b' F  b, I
  14. *- A4 H) J. r0 T2 o( J
  15. * This program is free software; you can redistribute it and/or+ m: O- k) R: }8 J) O$ U
  16. * modify it under the terms of the GNU General Public License as5 V' N: S) W, G' s6 ~, V
  17. * published by the Free Software Foundation version 2., d, N1 |% ]) g$ c' A6 A: X6 S
  18. *0 M4 C6 v# P4 a8 p6 E  m
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    , d. x  k" c( I2 ~/ q! I
  20. * kind, whether express or implied; without even the implied warranty/ ]; R$ C& `4 {6 t' Z' j" i
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the0 j) y+ t. l9 ]7 v: P9 p, `$ B
  22. * GNU General Public License for more details.
    , o# o6 n( b5 G
  23. */8 x7 o# k3 l9 t

  24. 1 E$ i  P( H0 O% [0 h
  25. #include <linux/module.h>
    ' O; M6 M% f! p) [  _
  26. #include <linux/init.h>
    ' \# ^) y5 {, P8 v
  27. #include <linux/errno.h>
    * y6 A3 M7 w; T) ?6 B3 Q
  28. #include <linux/types.h>
    8 O- S6 T% `5 k
  29. #include <linux/interrupt.h>
    6 o( S/ v  J9 L7 s
  30. #include <asm/io.h>
    $ w* I+ K; i! {. B, d
  31. #include <linux/moduleparam.h>, z% \) A! H- v" E
  32. #include <linux/sysctl.h>
    2 Q; ?3 [6 J- e4 m$ z5 e  m+ m8 g( U
  33. #include <linux/mm.h>* X3 `# T4 a7 @: C1 ~( Z
  34. #include <linux/dma-mapping.h>
    9 y; ^: t  Z1 y- N) n7 Q

  35. 4 \. C* H8 X% e4 Y% e) l; q
  36. #include <mach/memory.h>
    0 a+ C$ F% Q1 s2 A/ c
  37. #include <mach/hardware.h>( F3 Q, v# G1 \9 ^0 W
  38. #include <mach/irqs.h>
    + [8 u; D2 q+ j3 v& }# P
  39. #include <asm/hardware/edma.h>
    . H* r) x( x' t7 u$ I

  40. - n; O4 {( S9 O0 S, N( X- x- _
  41. #undef EDMA3_DEBUG1 ?" Z) B5 v, q0 N& v) F  ~
  42. /*#define EDMA3_DEBUG*/. ?# R; V2 A5 b8 ~( V

  43. - x9 _: f8 z& X# n- v+ F" }9 ]4 u
  44. #ifdef EDMA3_DEBUG, x5 @' n& G: R3 S/ {. s
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)5 C9 `8 J( f1 l. G9 g9 P& a
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    6 V' ^0 P% W: H. [* q' Z4 C& q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  b7 O' R  i0 ]/ d0 M8 G  l
  48. #else0 O  N) r) E  f9 |( t! U3 k8 k0 u
  49. #define DMA_PRINTK( x... )
    $ {, Q; o4 j5 k1 A
  50. #define DMA_FN_IN% v. V# `: T/ X1 D) F: ~
  51. #define DMA_FN_OUT% T" z' e. w0 s1 i' m4 U& K: l1 a5 ^
  52. #endif
    3 y$ E# Y2 G5 e* P' b+ @% G

  53. 4 m+ {9 ]4 M; C$ w+ [7 }% t* I- O
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    $ w+ v: j8 z0 v: Q
  55. #define STATIC_SHIFT                3* v+ {9 J  N& X$ \  N
  56. #define TCINTEN_SHIFT               20  O4 t8 z6 ~- ]1 W/ u* r3 W  M
  57. #define ITCINTEN_SHIFT              21
    . j8 F1 u: u; `. g  N1 Q6 L
  58. #define TCCHEN_SHIFT                22; E, n6 ~. r0 _/ }
  59. #define ITCCHEN_SHIFT               23' ~: ]& g- A" ?' V0 n1 l

  60. , L9 d& Z% v& J2 v+ _
  61. static volatile int irqraised1 = 0;
    , p; N1 g( K& p7 U" `) _) A& @
  62. static volatile int irqraised2 = 0;
    ' b2 S0 t0 X  n5 G5 g5 p

  63.   E4 Y6 P& `) \4 A1 Z: G" Q/ H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    8 Q* F9 K( N0 g" ]* `
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / ^8 ~1 G0 x. t* @" e
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    * m. ?2 z$ L. o+ u' I

  67. , {0 K7 o8 V6 x5 P1 i8 E: t
  68. dma_addr_t dmaphyssrc1 = 0;) b1 Z+ d; ]; H
  69. dma_addr_t dmaphyssrc2 = 0;* F* [$ U9 k, s9 G4 U) g% J4 K
  70. dma_addr_t dmaphysdest1 = 0;
    ) d/ Y4 |" x2 f( o' J( X1 Y
  71. dma_addr_t dmaphysdest2 = 0;+ B  A' b3 g+ R' [. E3 e
  72. ' |9 R& X9 m! N: w, n% V
  73. char *dmabufsrc1 = NULL;9 N4 V; q6 g7 S1 K5 G
  74. char *dmabufsrc2 = NULL;
    7 C) M) r. C1 e
  75. char *dmabufdest1 = NULL;2 w/ n/ @8 x. j. c
  76. char *dmabufdest2 = NULL;
    & B! k- x3 P* C) x6 x
  77. - D. w8 n  n, W3 k" \
  78. static int acnt = 512;
    " t5 l1 p0 B: ?* D& O2 A
  79. static int bcnt = 8;$ P% h3 p" s( v
  80. static int ccnt = 8;4 w8 J) _% `' ]* \
  81. * a+ N9 i5 k$ m# q. d* v
  82. module_param(acnt, int, S_IRUGO);
    " X0 y8 W7 U* M- o
  83. module_param(bcnt, int, S_IRUGO);* a5 M* ^8 r' x4 I* c" u0 q5 e1 E
  84. module_param(ccnt, int, S_IRUGO);
复制代码

# u6 `5 c; V% M0 t9 A! P7 l1 z" z
( r$ Z5 ~3 D2 {      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用3 b& A! C2 J+ A* R2 r+ {3 V  N
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
* s( r& Q2 e% k! f+ o     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。* E! T/ }+ }0 ?; |
1 L1 Z$ v& i% U- I
" W1 f( \; o* E' x- |+ p( K& `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-8 02:50 , Processed in 0.047946 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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