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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 B5 N& x5 `: Z; |8 g
  1. [code]EDMA sample test application
    3 c3 \/ H, h- q3 c4 v. H
  2. /*
    ) K  t% Z, z3 ?
  3. * edma_test.c! u$ J( H7 T4 p% f+ p4 M0 q
  4. *: I( C2 o+ d4 o- o2 C& K
  5. * brief  EDMA3 Test Application
    , r& u2 R( u0 N0 R# O1 U$ |
  6. *5 I7 A/ O, @+ h4 ^
  7. *   This file contains EDMA3 Test code.
    1 r0 ]8 A/ @  a% U4 w8 g
  8. *
    : P$ A9 j' [4 M" w# X& P
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ( L* S0 S# I) j
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    0 g+ P/ m& O+ n; P2 w% [( B
  11. *         TO CHANGE.$ m6 |! H6 _* o
  12. *
    . O8 w; a% z' o0 |4 Z( z
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    % E7 ^) T. X- ?
  14. *6 J7 h& C+ t$ b  W3 d. z
  15. * This program is free software; you can redistribute it and/or
    3 E  u  q. P! w
  16. * modify it under the terms of the GNU General Public License as3 Z; ^2 T: ^8 V- f& C: D. U& h/ Y) E
  17. * published by the Free Software Foundation version 2.! g) T+ d! o6 T
  18. *
    2 Q1 k7 A" Q. \  v. |
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any1 H: l0 O  ]3 [. o1 U1 G
  20. * kind, whether express or implied; without even the implied warranty, J5 y. s: L9 H
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the( d8 l! L( H; j# ~
  22. * GNU General Public License for more details.
    ! ?& X6 T2 a- U$ v+ R) `
  23. */
    ; h' M, R+ X# j/ x. ^* N7 L# X

  24. 5 c6 q: [9 D0 }( g0 |0 D
  25. #include <linux/module.h>8 ~' P! b& |' f6 `
  26. #include <linux/init.h>
    ; Q. S% M% Y, K2 a! w
  27. #include <linux/errno.h>4 U5 l. d9 `5 V5 e
  28. #include <linux/types.h>; Y* n2 ?+ ]) m" u  s( t$ t! |- [
  29. #include <linux/interrupt.h>
    5 c2 q8 Z# v, V( E& o6 O# f
  30. #include <asm/io.h>. `. k' F# q: G. r: |4 C6 ?8 {
  31. #include <linux/moduleparam.h>
    6 x! n3 T* t4 ^5 l4 Q) S9 d
  32. #include <linux/sysctl.h>4 l4 e: y; E! _, {  [% ^
  33. #include <linux/mm.h>
    5 H- C" i9 C  B
  34. #include <linux/dma-mapping.h>
    ' r5 t6 u8 s( J8 b0 t( ]0 i

  35. 2 [4 Y) T' D; K
  36. #include <mach/memory.h>
    * t3 l. i& K$ i' W
  37. #include <mach/hardware.h>
    + |* |3 h% F5 {. A1 S# z$ h
  38. #include <mach/irqs.h>
    6 _% }) g4 ?* D+ ]
  39. #include <asm/hardware/edma.h>1 s8 a: m# `1 f" F. a1 }. l5 ^

  40. # N- B% G& n  Z8 V3 ~! H7 I
  41. #undef EDMA3_DEBUG
    ; p2 Z6 T1 g: O5 Q
  42. /*#define EDMA3_DEBUG*/8 o- F# p( |% \% ]

  43. 6 A5 n! b. d. k/ j9 w! v
  44. #ifdef EDMA3_DEBUG' V- j3 u' H. ~0 k! V
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)$ B% v2 W5 S$ @- ?+ E
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)- i$ x0 M6 F% x, o& Z. ?& _
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    8 o7 Y) ]' D' N4 C4 O
  48. #else0 z$ J) t& A/ K, u; d5 O9 O
  49. #define DMA_PRINTK( x... )+ m* C# l1 u$ c3 |
  50. #define DMA_FN_IN
    & a4 A5 k7 B9 ^  L% ?7 C' w
  51. #define DMA_FN_OUT) B/ W% E% A! H( `' c
  52. #endif3 ^8 Z5 \% j4 o  K4 s0 m1 O7 b) m/ p) X

  53. 2 t+ S% J1 Q/ V4 Q
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    " L' W2 t. Q: B9 `
  55. #define STATIC_SHIFT                3
    : p1 R. v; W5 U( a- l- b
  56. #define TCINTEN_SHIFT               202 g" V5 A  F! L$ J3 ?
  57. #define ITCINTEN_SHIFT              21" T0 f: C# Q9 i  c" ~. K
  58. #define TCCHEN_SHIFT                22& \& g1 t) N; e$ ?6 [% I4 q; q
  59. #define ITCCHEN_SHIFT               23, Y1 H+ K4 i/ C) X: w
  60.   k3 l. p' x" c# v% Z& G3 {4 t
  61. static volatile int irqraised1 = 0;2 e! z# z- [# Q3 c
  62. static volatile int irqraised2 = 0;
    % N1 L5 o+ @$ D

  63. 4 D6 k  _% B/ f/ z
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    " c$ v( I3 D! r" C6 Z! s5 D0 n
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& E1 u/ _& Z% f, G
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ g# i# x6 V- Z$ \( ^& K
  67. * a" i( W( n$ s' Q
  68. dma_addr_t dmaphyssrc1 = 0;
    - Q# |0 `. }  F, ]2 O
  69. dma_addr_t dmaphyssrc2 = 0;3 |- Y& K# N3 h
  70. dma_addr_t dmaphysdest1 = 0;
    # k& {( m, E+ a7 n
  71. dma_addr_t dmaphysdest2 = 0;& P( a8 i# C3 N6 G/ s6 e0 d

  72. 5 C: Y" o2 K# V* C7 c
  73. char *dmabufsrc1 = NULL;
    8 R! B3 C3 F( L; u6 ^$ L5 ?/ ~
  74. char *dmabufsrc2 = NULL;
    6 L: b1 y+ z; H2 ?& @. C- _
  75. char *dmabufdest1 = NULL;. q% O# e' I7 D( M, \9 J
  76. char *dmabufdest2 = NULL;: j8 B2 J" U- }; {
  77. ( T; j3 J7 ^  Y& Z5 ~  l7 m
  78. static int acnt = 512;
    6 d1 q# I, u6 l7 X9 t- I" s/ u
  79. static int bcnt = 8;
    + c& Y" G; X1 Q2 M1 q
  80. static int ccnt = 8;
    5 D. k+ }2 A/ H7 a# P

  81. ! B$ F* w, m- W8 _
  82. module_param(acnt, int, S_IRUGO);+ Y& E( o6 D9 k! A) E  @# U6 o/ N. ~) d
  83. module_param(bcnt, int, S_IRUGO);
    6 C: k0 }+ {4 d/ b
  84. module_param(ccnt, int, S_IRUGO);
复制代码
/ ~0 {1 F! l# r+ {7 c! k

$ x- m& L7 C' m4 o- r      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用) ^) g  f. m6 ~4 w3 R1 I4 S% m
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
. q  _' M0 D6 d( k* [2 l) B1 |& u( z     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。8 O  H1 B9 J8 U) k. ?0 ^; t9 v
, \; c$ d- Q$ \& d. R$ r9 Q9 H* k

: |4 E3 d  Y. P8 d9 x8 I3 n
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-1-22 13:17 , Processed in 0.041034 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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