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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
* p2 Y& q& Q8 Z' p" \; X
  1. [code]EDMA sample test application9 _. S1 G, z& T
  2. /*# x# G$ K, r) t( `% k  e$ o! H. B
  3. * edma_test.c
    + G0 h3 y) F* f+ S
  4. *8 u9 X" P. o4 @2 o
  5. * brief  EDMA3 Test Application4 c1 ]* v: S) F  G  o
  6. *
    1 E; H% w2 ^  m3 f3 }* J) y0 L& E
  7. *   This file contains EDMA3 Test code.3 C, P+ R4 _$ V% T* x( ^
  8. *
    % ~1 m! z+ s$ H3 |/ l
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE: J/ g, J8 `1 _# A) m0 v
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT& @0 |! l2 E/ d4 o) h$ N- O( \
  11. *         TO CHANGE.; J/ k. N3 d" U" a
  12. *
    , m) y6 e6 L0 `* ]' X9 z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/# p7 j% S7 O  ~, X0 Q" i% @
  14. *
    1 I# j% c! [3 L% L
  15. * This program is free software; you can redistribute it and/or
    ' ~/ j# B" h7 P; O
  16. * modify it under the terms of the GNU General Public License as" j7 p9 I* J) u" \8 u# I/ A# K- H
  17. * published by the Free Software Foundation version 2.6 I8 s4 w. o: I9 ]' I2 F4 M
  18. *2 E0 x- ?! e) b( V, a' o3 B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
      @* p- R, d/ F5 b3 J
  20. * kind, whether express or implied; without even the implied warranty& |1 h7 T" j0 G2 J1 E9 ]$ u& ]
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    4 p' N7 N+ J; f4 d
  22. * GNU General Public License for more details.
    , x( ~1 B( p/ ?& P3 P$ m
  23. */- l0 t3 y# U& a: d4 r, ?( P; Z

  24. 6 N7 {7 N! W; n6 v2 d
  25. #include <linux/module.h>+ P& t5 f; z1 C' ^/ S( b, d; R) ]0 h, ?
  26. #include <linux/init.h>
    - S& l+ \; ?$ k8 ^6 M/ z
  27. #include <linux/errno.h>1 ~7 D' ~2 l$ Q) v; m; y" }
  28. #include <linux/types.h>
      E) C0 h7 M0 [( Y* M  K' e' n
  29. #include <linux/interrupt.h>, z% b0 V4 c1 f; I
  30. #include <asm/io.h>) h( T- {9 n( N
  31. #include <linux/moduleparam.h>
    4 B$ m8 ], d9 J2 ^8 W- J- W
  32. #include <linux/sysctl.h>5 a' U) [9 Z0 Z3 o4 m3 U$ N
  33. #include <linux/mm.h>
    ' K& F* Q, t3 t8 m2 U' {
  34. #include <linux/dma-mapping.h>! \' _7 ]& t: A. }1 H  ^' |
  35. 1 P+ l: r& `9 S, U  R
  36. #include <mach/memory.h>1 _/ o  O' N8 r( l  i2 L$ S/ F
  37. #include <mach/hardware.h>" v9 t$ O8 G2 F! `+ Z  R3 y. e
  38. #include <mach/irqs.h>; v, K: Z, j- a- A* h
  39. #include <asm/hardware/edma.h>
    8 [( |& I0 V9 A2 j, x. ?
  40. - n  {% t& [6 r# Y. K7 m" D! d
  41. #undef EDMA3_DEBUG% L" P) }- R. k5 L0 @
  42. /*#define EDMA3_DEBUG*/0 l( P8 H8 |3 [3 `1 b0 _& }8 w
  43. 4 H/ x' d, d5 c, `* }/ D" t
  44. #ifdef EDMA3_DEBUG
    " g7 V% U" J; U* ~
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    & v& A) h$ E; \9 Q
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    8 n2 _/ E1 s; t
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__): }' n* ~3 X6 o" w0 N
  48. #else# F! y4 N- T) D3 k) o* R
  49. #define DMA_PRINTK( x... )
    + s7 L8 @) M4 \
  50. #define DMA_FN_IN
    % G- e. n- @2 l& L9 Z8 C8 k  P
  51. #define DMA_FN_OUT
    / x. R$ \- _/ i$ z! n5 c& T
  52. #endif! S  j/ v& i) l$ o# ?

  53. : K. n2 V6 J& K; A/ t( c$ p3 x
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    4 C% H" x% Y+ Q- O
  55. #define STATIC_SHIFT                3
    7 ?. W7 o  D! G% n+ Y& K
  56. #define TCINTEN_SHIFT               20) U1 a  s+ d% x7 E" I0 G" ~' O
  57. #define ITCINTEN_SHIFT              21
    0 m. ?6 T5 I/ A/ s; T
  58. #define TCCHEN_SHIFT                22
    1 e5 ]( A. p; d9 o3 H7 l' ^& q
  59. #define ITCCHEN_SHIFT               23
    " \7 X( F4 c2 Q8 V6 i+ D

  60. 6 N7 }6 ^% h2 j! H, i8 S
  61. static volatile int irqraised1 = 0;) l8 p: d  U% V! y
  62. static volatile int irqraised2 = 0;( x/ \9 _  C# f# B9 d. }
  63. ' [( @# P* C$ U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);7 o6 t- I( k/ u  C
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    4 n/ u4 Z% H3 J% v
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    2 g# K+ u9 D9 ~
  67. 3 k* B8 {8 f4 g+ W
  68. dma_addr_t dmaphyssrc1 = 0;
    5 S# G6 w+ c+ A
  69. dma_addr_t dmaphyssrc2 = 0;! u8 f4 i: ]+ ~; C1 e" Z* X
  70. dma_addr_t dmaphysdest1 = 0;- B1 n, P# w; i3 O
  71. dma_addr_t dmaphysdest2 = 0;
    ) x+ v, }! [+ Z  r1 R% n0 O

  72. 9 U$ N3 f; S2 h! A' R+ k
  73. char *dmabufsrc1 = NULL;
    - O+ Y3 w. h+ [; P
  74. char *dmabufsrc2 = NULL;
    3 g* I- f' m. V; z
  75. char *dmabufdest1 = NULL;. ]# [, ^$ D8 V' N. p% V$ h9 l
  76. char *dmabufdest2 = NULL;; W  U2 U. n  x9 w

  77. ! p0 m" H3 `, p) o0 w% f
  78. static int acnt = 512;
    4 D4 B* Z+ c9 q8 L- ?! _
  79. static int bcnt = 8;
    ! e9 o* V( q. D& h
  80. static int ccnt = 8;
    & A5 h, C/ b8 I8 ~6 Y! D, T
  81. # g* E5 q: ~6 b4 V3 m4 y
  82. module_param(acnt, int, S_IRUGO);+ m4 p) e% \1 Z7 D
  83. module_param(bcnt, int, S_IRUGO);
    6 n+ T( j4 }8 v4 K- c2 l
  84. module_param(ccnt, int, S_IRUGO);
复制代码

5 U$ T5 s: e. Y5 a; A! W
6 N% D; J! l# K; T% ?$ |: v! C      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用6 u- E; O8 P/ |$ B2 u
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
$ ]3 j, A7 _4 `& ]     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。3 I4 W8 P4 J4 M- d

; |$ n8 ?" W* f% N- U/ v' M+ C" i  L: e* x3 l$ B. o, S' v3 {) Z
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-30 03:04 , Processed in 0.038891 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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