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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
% [9 x% o' ]; Z; S
  1. [code]EDMA sample test application
    - u$ }2 x3 L' G* L& ~9 B9 R
  2. /*
    & C" b) R8 E! U3 J
  3. * edma_test.c
    8 M+ p' ]  ]' g$ d; D0 M
  4. *7 \& ?7 A: _' K# W
  5. * brief  EDMA3 Test Application4 K4 z3 h, `2 z9 z- [) W
  6. *+ b( l$ ]0 W0 w( l# k" {8 `
  7. *   This file contains EDMA3 Test code.: n4 F! `3 N1 ?. v2 M8 u
  8. *
    * j6 v% I/ y$ o: V
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: a, M3 u* k- e7 G" @% u: x# r) H
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
      ]7 G8 p+ d% k8 a2 B8 X+ B
  11. *         TO CHANGE.
    ; I4 n# m: `  H4 `. j
  12. *
    . Z; s. t$ J( s/ I  D- q
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    # K( b- Y* K9 A4 p: F, D
  14. *7 V1 u, y5 k1 \6 V4 ^. C9 N
  15. * This program is free software; you can redistribute it and/or
    . Y% ~9 L3 B/ v6 V$ F! G. w; ?2 V
  16. * modify it under the terms of the GNU General Public License as5 W( A7 x5 o+ A* ?9 L9 S. Z
  17. * published by the Free Software Foundation version 2.
    , v; B, q& J8 y9 {6 }! L
  18. */ \) R+ W" _9 T& N: J( o# T
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    1 k3 g0 U8 q  c# V' q% t
  20. * kind, whether express or implied; without even the implied warranty
    . v( R: x. ?5 |; ~* u# w
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    % ?& h* B3 D5 O1 e4 D6 h
  22. * GNU General Public License for more details.% x) Y. j$ ~, \3 D( Z' ?% }: r
  23. */9 e2 s. y4 d  ?" t
  24.   f. t4 p7 ^) R+ Q- J+ V. j
  25. #include <linux/module.h>
    $ h, y% z& x- m
  26. #include <linux/init.h>. I$ e- Z+ ~# k  I
  27. #include <linux/errno.h>3 H4 \9 j9 u) Q2 p9 p8 e
  28. #include <linux/types.h>
    . U5 v3 y; B$ C2 k5 K
  29. #include <linux/interrupt.h>6 o/ m! N5 m0 p& ~
  30. #include <asm/io.h>5 w8 C+ g( c  F0 l) ~
  31. #include <linux/moduleparam.h>
    $ G- d! R7 R4 }& r
  32. #include <linux/sysctl.h>
    ) f7 X! v* {' S; J( k0 V, b& g
  33. #include <linux/mm.h>  E! Z0 u$ G: ~) o
  34. #include <linux/dma-mapping.h>! K  b9 r& P2 x6 z- s

  35. 4 m5 C2 K. y* j; ]# u
  36. #include <mach/memory.h>" W- m# L4 y& x) |( L
  37. #include <mach/hardware.h>
    9 r5 F+ ?8 J- k( `" j: @
  38. #include <mach/irqs.h>$ `8 z7 x' r" o) v/ `
  39. #include <asm/hardware/edma.h>
    9 e8 K4 Z" |, j

  40. 5 N& s0 u$ `4 s9 ]: G1 T4 U
  41. #undef EDMA3_DEBUG$ b6 a9 F" J' B" k$ u7 v* q0 V
  42. /*#define EDMA3_DEBUG*/% Y% K7 V3 p+ L2 b6 L9 `
  43. # `2 Y( m; i5 Y. J( r
  44. #ifdef EDMA3_DEBUG# p2 J/ J8 M' S, E! b. o
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    * r7 N) H! o* z; H! F( C  O3 B3 o6 Z  U
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    5 Y  W0 R4 [% [+ Q8 g; h8 I9 ~
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
      L* X! k$ o1 ~( V- D) Q# Q
  48. #else) }$ ~8 P# F& C; @! t/ v
  49. #define DMA_PRINTK( x... )$ L5 v$ U5 J* j1 M% m, `8 E
  50. #define DMA_FN_IN
    2 P; T1 i1 ]7 m0 }
  51. #define DMA_FN_OUT
    ' {5 v( t) o  {+ `" @
  52. #endif' C$ U- q) Q% ^# ^% x& U

  53. & c: S9 x( J7 K" n2 O! ?
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    " R# V- E" A) I% o) b+ M
  55. #define STATIC_SHIFT                3  e. _0 b2 r& ~6 Y9 r" Q
  56. #define TCINTEN_SHIFT               209 w( K4 k1 g5 Z8 J
  57. #define ITCINTEN_SHIFT              21
    $ I) v7 H1 y- l0 A/ |/ i
  58. #define TCCHEN_SHIFT                228 {1 Q9 A, \0 S8 F
  59. #define ITCCHEN_SHIFT               23
      e" _6 d! i6 J8 X7 F' i
  60. # X- ~$ C; E! s- I  X
  61. static volatile int irqraised1 = 0;1 l, {' N, ]$ o7 I3 V! C
  62. static volatile int irqraised2 = 0;: w4 H5 D$ y. z' `3 L

  63. # A8 B4 ~: D7 |$ ?  N1 j! W  T  D
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / [) O$ a( c: z6 U/ z4 s9 J/ b9 Y
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    # \6 n& i- x1 E  b! r; J
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ G+ V1 h5 M1 R
  67. 3 n2 R; a, z; S# r. t
  68. dma_addr_t dmaphyssrc1 = 0;
    ( X8 p. T7 E' }$ B8 p" b* `
  69. dma_addr_t dmaphyssrc2 = 0;- i  u4 r/ u2 p1 a
  70. dma_addr_t dmaphysdest1 = 0;
    ' w3 ~  C8 t+ p' z
  71. dma_addr_t dmaphysdest2 = 0;3 u* d8 h0 \* U) M
  72. * e  [4 X& Q, d
  73. char *dmabufsrc1 = NULL;+ L1 w! j( p- G8 q) I
  74. char *dmabufsrc2 = NULL;
    - v3 G: K# M( P! C' B4 o; U
  75. char *dmabufdest1 = NULL;" p# y; E8 E' O/ `
  76. char *dmabufdest2 = NULL;' o/ m$ u9 ?% l" x. p8 K

  77. 3 S/ c0 \6 c! b; I% @! @' h$ f8 l
  78. static int acnt = 512;9 J: l+ Q* o- o- M1 e
  79. static int bcnt = 8;
    6 d# n, T: I2 n
  80. static int ccnt = 8;
    % p4 r; s3 R! u9 D" P  ]( ^
  81. 9 \/ g8 g0 g/ _' ?
  82. module_param(acnt, int, S_IRUGO);
    ; N" c( d% j! i0 P9 s% L. ~9 j( u6 ~
  83. module_param(bcnt, int, S_IRUGO);
    5 D3 z3 Z% @- I  G! w5 x! m
  84. module_param(ccnt, int, S_IRUGO);
复制代码

6 [% U+ }# n! V+ z
7 [' M" ?6 w5 g) W4 [6 F      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用/ @. P* j; N0 K4 M" 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。$ [2 \+ y" A* `) J
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
5 [( [3 m+ o9 p7 k. R7 ?" Y9 s4 i/ W. R6 F1 k" i
( I7 h9 X2 Z$ N5 d: h- n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-12 01:30 , Processed in 0.038128 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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