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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 4 \& n. W* A" |& @2 G) n
  1. [code]EDMA sample test application
    $ w) [6 A# Z6 X3 d, k" o  z& O
  2. /*; y$ l# k2 B' r
  3. * edma_test.c
    ( M1 k/ P" x$ t* r9 R& e/ U6 X
  4. *
      S. i* c' w6 k! t
  5. * brief  EDMA3 Test Application# {0 ~$ A' l9 n, `. ^% T
  6. *! S3 B$ ]( z. Z2 C8 l; F: [
  7. *   This file contains EDMA3 Test code." x- K0 P/ `9 H- D) I! z9 X
  8. *
    ! ]; ^8 r) K  ], D' J
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE! F+ p1 ?% Y0 C) ^6 d# k( {
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT- ?1 ?: }# \4 a; O( {
  11. *         TO CHANGE.
    6 V: v1 j( z  o0 [- A2 j
  12. *; Y) f* G, f- V3 L7 `2 r
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    5 p& {( o% A( d$ v
  14. *7 o* E+ F. [( a+ J- m9 J8 I. j7 R
  15. * This program is free software; you can redistribute it and/or/ o: f0 j( C7 P  T; Z: S
  16. * modify it under the terms of the GNU General Public License as
    $ e8 ~1 K, d& P. O6 w' Y/ L+ n+ r
  17. * published by the Free Software Foundation version 2.
    % d$ {; p! I; |
  18. *
    # g) l3 z' d2 a2 S# l4 h9 \0 f
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    4 I* O8 G; y9 ^7 ^1 F2 ^9 V/ ^
  20. * kind, whether express or implied; without even the implied warranty* S& J9 B) |; z9 A% |$ W; V
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$ T( o6 l: }( o. R$ h1 q
  22. * GNU General Public License for more details.1 R% p6 C. s' y+ k1 ]% v
  23. */
    & u+ a  X( G+ B& Z7 ?

  24. $ y$ O& W0 Q) Z+ k/ A3 c3 }  y
  25. #include <linux/module.h>
    * R) A9 K9 z1 \; }; {/ A" O
  26. #include <linux/init.h>% W) Q' T. N+ a5 U) x; ^
  27. #include <linux/errno.h>
    ! R! Y! w% j; u3 Q! j+ R
  28. #include <linux/types.h>
    , }! B" m8 l: V5 \, F, k
  29. #include <linux/interrupt.h>/ m3 V9 x4 w  c: s6 M) ~2 k
  30. #include <asm/io.h>
    ' A1 Q  X& q. Z/ z
  31. #include <linux/moduleparam.h>
    / n) \4 V7 m. K" a( c) [" w- x
  32. #include <linux/sysctl.h>
    , h2 g2 {! X9 w  T9 k* [
  33. #include <linux/mm.h>3 W& a% L' d: e! }/ f
  34. #include <linux/dma-mapping.h>7 Z* J' p( `/ ~$ y

  35. 4 V1 x) A3 `& P1 u1 V1 P
  36. #include <mach/memory.h>
    # B- a- \  V) {, P' b) ?
  37. #include <mach/hardware.h>
    . V7 |1 J* O$ l) e0 j
  38. #include <mach/irqs.h>2 }. U! d5 ]6 A$ U, q1 Y
  39. #include <asm/hardware/edma.h>
    / I4 J7 }- |7 K  [; g$ e
  40. ) I! N5 c% b# m1 Y! `8 r
  41. #undef EDMA3_DEBUG; z9 p& B5 p$ E3 Y2 ~% P0 M  F" X
  42. /*#define EDMA3_DEBUG*/# u1 d# v/ g, Q1 z' B
  43. 8 R; \" A" v3 E1 {$ y
  44. #ifdef EDMA3_DEBUG
    ; C9 ^  @. c, b# t) \1 K4 g* J
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)! c" C3 c/ ]" z6 z. o- o8 n
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)  a+ [/ S! `) S2 O
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)! N$ w5 Z6 }( E- v9 Q
  48. #else
    - m# Y3 m0 m! Y* }& p9 _% A9 t
  49. #define DMA_PRINTK( x... ), W8 q9 m  C* h, ]; p0 w
  50. #define DMA_FN_IN' I# [2 |$ L% O4 X0 I9 [2 l
  51. #define DMA_FN_OUT( d3 W* j( L( v3 [) y5 Z, \/ c
  52. #endif8 h+ s1 r) A% N, h7 ?

  53. ! O4 M  _. r. n( ^
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768): z6 u  j9 S; w- X/ T/ O5 _
  55. #define STATIC_SHIFT                3
    1 o* E7 `4 r. E5 s8 F
  56. #define TCINTEN_SHIFT               205 u, K* ~, r, Y
  57. #define ITCINTEN_SHIFT              212 T( k6 t/ N9 k% H' u/ D
  58. #define TCCHEN_SHIFT                22
    ) z3 b. s* X# Z3 h$ i: y
  59. #define ITCCHEN_SHIFT               23  N  z3 i# \: t* N- ?
  60. . h2 L8 a" _) G/ P; n' l4 f+ {4 t
  61. static volatile int irqraised1 = 0;
    & J1 `( p" s. q9 ]& A1 t
  62. static volatile int irqraised2 = 0;3 t" [9 L7 j% z% l* Q4 M8 H) u

  63. 7 W9 h. o8 W, d4 ?) S
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    7 ?' }; g0 [/ a/ @' X+ m: j; ]3 T
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & y5 \5 Y1 Y9 x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);2 N4 Q/ V+ Z' s% b$ I/ o/ @; I# A
  67. 6 t/ I, c3 L! @9 }
  68. dma_addr_t dmaphyssrc1 = 0;
    3 p/ `- q4 h* h/ N& ]
  69. dma_addr_t dmaphyssrc2 = 0;
    " N( w( B! g% K3 f" a% n6 y6 u
  70. dma_addr_t dmaphysdest1 = 0;
    4 y- z. u/ @# Z: a( Z4 t$ m% B
  71. dma_addr_t dmaphysdest2 = 0;
    ' B; g/ U! K4 v- l- p% `$ |5 A
  72. ( G! o: q7 X& U! R6 F# H$ B
  73. char *dmabufsrc1 = NULL;& f- ~& c3 D( L' |, W  ]$ f2 s1 e
  74. char *dmabufsrc2 = NULL;
    & @3 m. y9 B: ^0 g* ?8 F* ?
  75. char *dmabufdest1 = NULL;! B4 h$ Y7 M. e8 p, d1 e' \
  76. char *dmabufdest2 = NULL;( `) a. W/ a; o# P3 E& K

  77. ) U& u) Z7 W- v. z# {. O* {1 R
  78. static int acnt = 512;$ R7 Y! s7 _% x8 I3 L, V
  79. static int bcnt = 8;8 \* L. [! i/ a- S/ l! c! Y
  80. static int ccnt = 8;
    * ^$ y; g) A+ W
  81. , B2 t. Q7 Z' U, `" P% ~4 n
  82. module_param(acnt, int, S_IRUGO);; U) H' L9 T1 I5 F
  83. module_param(bcnt, int, S_IRUGO);
    ; ^) ?3 D0 h  h0 H( B6 b
  84. module_param(ccnt, int, S_IRUGO);
复制代码

: t2 P) a1 ^, v; v' P% V4 J  J) Q* l/ j+ m+ P; ?2 f3 j' b0 U5 V1 w) O
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
1 p5 C" V: b5 S. U' }2 k' 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。" ]; b7 z% K6 ~% U6 ^
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
) \8 u, B' H* w% v6 Y& o$ A! |- G! ^( D( H9 Y5 l) c

4 d5 I; b# p# m* B
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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