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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 ' L$ s' s- `0 T' `
  1. [code]EDMA sample test application
    % O# B5 F$ L- t9 b
  2. /*6 Y% n  c) j# r) B% H" m* x
  3. * edma_test.c1 M6 z1 I0 d) q$ q
  4. *
    # ~, h* u, ?+ w4 ~8 o
  5. * brief  EDMA3 Test Application, b/ I& @4 t8 M' A5 }5 D
  6. *& L2 |* m! ^9 B, ]
  7. *   This file contains EDMA3 Test code.
    1 o: f+ p$ U5 Q9 Q7 [* W
  8. *
    * O9 s0 j' G# q+ l8 \* W+ @: }2 @) Z
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE- `- \5 B( m; M1 v  Q) c
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT0 o6 X7 b5 _% O, u( I' z
  11. *         TO CHANGE.2 F* V5 Z! M9 g2 D* c1 k8 S5 _
  12. *# i5 K" o* c4 B0 w6 ^6 F: B/ L
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/4 }1 u& g; Y* ~6 [- r) n) G) e
  14. *! v" R. Z( |) ]3 p) }$ J" k
  15. * This program is free software; you can redistribute it and/or
    ! O3 ~9 A8 }  H1 U
  16. * modify it under the terms of the GNU General Public License as
    ( i2 u7 E6 q6 Q+ d4 O
  17. * published by the Free Software Foundation version 2.' g, f# b" v( e9 q) H" {' V
  18. *7 Q7 I( P/ F: g) Z+ s8 }, y: r
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any( m5 B& u, n5 x& E: p. C: E, Q6 l/ X+ l
  20. * kind, whether express or implied; without even the implied warranty( n% Z/ z9 z0 D, x8 c# M4 Z
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the, _' k* F5 b0 J
  22. * GNU General Public License for more details.
    ; j- f+ V1 A9 }; J
  23. */
    2 b+ V8 B% x8 k) @4 }3 F4 d

  24. 5 s5 m9 u; F7 N* S+ T6 z9 R4 B
  25. #include <linux/module.h>
    , j: S( F+ [# z# E" L+ P
  26. #include <linux/init.h>
      p" \" G8 k# L& ^  l
  27. #include <linux/errno.h>
    ; I) ?# q/ M9 Y4 O* J
  28. #include <linux/types.h>- [* M) T3 z# B8 S
  29. #include <linux/interrupt.h>
    % k8 A: V& \: A8 A: W, w# |, P  H
  30. #include <asm/io.h>
    ) z" `0 j9 \9 o
  31. #include <linux/moduleparam.h>
    * L+ x6 g) E) l4 U% }' s
  32. #include <linux/sysctl.h>0 K) v$ T& {% V7 ~/ a, Y2 k& ~
  33. #include <linux/mm.h>
    ( v  D2 D$ T& j2 A1 y; ~( W6 Y
  34. #include <linux/dma-mapping.h>4 P1 e& S8 ^: @2 q+ k' U

  35.   o3 x3 |6 J9 Q) J( i4 J
  36. #include <mach/memory.h>$ [- P0 N% C6 ]
  37. #include <mach/hardware.h>
    . q% l! `* j# e% k
  38. #include <mach/irqs.h>
    * @% k/ o9 ?/ {" E
  39. #include <asm/hardware/edma.h>. s8 s+ J: `' o# E

  40. 3 ]* y* z$ B% b
  41. #undef EDMA3_DEBUG
    / ^0 s/ `0 ?8 t: F5 f. o
  42. /*#define EDMA3_DEBUG*/
    : s9 v* U: L/ x. q! P+ m

  43.   k3 k2 B0 r; \" U
  44. #ifdef EDMA3_DEBUG
    , q2 s9 F  @* }# U! R) I
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    / Y# r3 \* t: w3 y6 @/ W( J
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    % Z# n! _( y6 ^4 y2 N( u
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)  m& K% E5 u0 K7 u- E% O2 |7 ?
  48. #else
    6 f4 X0 J; M1 P# e0 @
  49. #define DMA_PRINTK( x... ); r, N& ~& D/ n0 o4 C
  50. #define DMA_FN_IN7 W7 E! B6 r( t& p5 o/ J' v( a5 A
  51. #define DMA_FN_OUT% b+ g& A+ n* q+ U1 P" g4 h
  52. #endif
    % A4 o" Q0 {- M/ a  j) ~
  53. ( P, @( {2 D1 p& I& V1 Y1 A: \) ]
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)+ r+ \0 P( N) {+ F4 y1 x
  55. #define STATIC_SHIFT                3
      H, n. j, P1 Q
  56. #define TCINTEN_SHIFT               20
    ! n) @, Y$ n! H
  57. #define ITCINTEN_SHIFT              21( d, E. Z, s# F' C" V' J
  58. #define TCCHEN_SHIFT                22
    0 H2 {9 W% n1 v/ F; O
  59. #define ITCCHEN_SHIFT               23
    1 ~8 [. M% X0 p' U3 ]2 ~( F# d6 n
  60. 3 I/ }4 |" R; ]+ C: |/ K
  61. static volatile int irqraised1 = 0;8 \4 ?9 r8 I1 c1 v
  62. static volatile int irqraised2 = 0;
    ; A- w& ?8 {: }2 m* C
  63. 9 e0 _  C' X6 X8 u' W
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 b9 Z. f( h; D, i( K
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 r0 K' l& b7 f9 A
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);6 e. H9 L3 g! R9 i

  67. # W5 q6 s9 M6 C, r
  68. dma_addr_t dmaphyssrc1 = 0;9 `* m- F, N* J( x& z
  69. dma_addr_t dmaphyssrc2 = 0;
    " O$ d6 s6 |) ~  y8 y5 C
  70. dma_addr_t dmaphysdest1 = 0;$ e; z1 p# x8 m& Z
  71. dma_addr_t dmaphysdest2 = 0;- m1 q& {1 o" m' p/ C9 x* ]
  72. 1 x- G% O* ?& D% G8 r, b' V& N
  73. char *dmabufsrc1 = NULL;
    - D9 F4 f5 V% ^! Z3 t* x
  74. char *dmabufsrc2 = NULL;4 g, k: z2 ~: L. [. l
  75. char *dmabufdest1 = NULL;
    8 Z. ~% [$ Z( n/ M
  76. char *dmabufdest2 = NULL;* B0 C" N4 c* i! p: N" ?- z. K
  77.   r( W+ H2 D! `+ g/ c
  78. static int acnt = 512;
    9 E# G$ W! m# C1 h3 ^" |+ j3 V7 N
  79. static int bcnt = 8;
    8 @7 Q" c+ y  J" X' v
  80. static int ccnt = 8;! a9 t& K8 Z! q  ?$ b

  81. : c% h9 X# U' ^7 T+ ]# _% q
  82. module_param(acnt, int, S_IRUGO);
    9 m# B# S8 j! a1 G- @3 }
  83. module_param(bcnt, int, S_IRUGO);
    . h. n' `# W: G% B+ r7 S- R
  84. module_param(ccnt, int, S_IRUGO);
复制代码

$ M- l# K6 C( ]$ {* x
8 a6 c/ K' Q8 G) Y6 y# M, K9 k& ^      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 j) O- |& E4 Darm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
# d" _8 l4 t  j$ b) a3 |$ |! S0 V( F     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! L! e) a& `/ q* \  H6 x* k
3 o$ x2 g& V5 ~6 d% G* S; v
" v$ z# L5 A3 c. I3 `
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则


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

GMT+8, 2026-1-12 14:06 , Processed in 0.038862 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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