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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 `3 S. M. |  \, y
  1. [code]EDMA sample test application0 y' A% i! d0 n  m- B& Z1 t2 F/ @
  2. /*
    / }1 V6 q/ Q6 X4 \) `5 Y
  3. * edma_test.c; H5 L5 \# w, h/ U- i9 L
  4. *7 o& w6 F* {3 l+ S& Z; o
  5. * brief  EDMA3 Test Application. a" e2 u+ V+ F) `8 B
  6. ** v3 R' |* c& z
  7. *   This file contains EDMA3 Test code.% a& e  M( ~& G7 Y
  8. *
    ! F8 ]) v( W9 ?6 {6 i% i, r
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE( Q* K- C- ]( k  x  k( n
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    9 }4 Y" _, |  ^  q# R  r' j
  11. *         TO CHANGE.
    * T$ x1 c/ b  v9 W: b: D: P
  12. *
      P: Q+ R$ ?* R, z. C5 A  F
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/: a2 Y6 w, D% f3 Y) F5 t: b
  14. *, H/ H3 I( y9 f' Z! S. q' a
  15. * This program is free software; you can redistribute it and/or
      ?) {' F: D5 x2 F: H
  16. * modify it under the terms of the GNU General Public License as3 K5 B# N" }! ^1 O. V  Q
  17. * published by the Free Software Foundation version 2.
    # f& P* H* Y5 m, E  d+ T
  18. *
      Q' u* e9 c4 K+ D$ m5 }! u* W8 B# {$ Y
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any  a+ E0 c* N4 N5 Z* }; U
  20. * kind, whether express or implied; without even the implied warranty
    . o* P9 z, F  W- q( V
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    . u% g& S- S3 ^% X
  22. * GNU General Public License for more details.
    9 ]: P) d4 L- p, d$ x
  23. */2 X. Y/ d8 r5 N
  24. $ _  y8 g, o( {# U
  25. #include <linux/module.h>+ n3 v* a+ t# {
  26. #include <linux/init.h>9 v* }3 y9 Y7 z. J7 D1 i
  27. #include <linux/errno.h>
    * i: z: x! p4 g
  28. #include <linux/types.h>- D6 h7 j- H9 a
  29. #include <linux/interrupt.h>2 c  E& v) r& D: L) e
  30. #include <asm/io.h>
    4 h% A9 f# D4 x6 T; S; s8 b% U
  31. #include <linux/moduleparam.h>
      w  e4 E# [, A  }0 l9 l! s) e
  32. #include <linux/sysctl.h>' }% o* S3 j. w1 Z* S1 R: _4 D; }  a$ ~
  33. #include <linux/mm.h>. X- d$ R+ x) K
  34. #include <linux/dma-mapping.h>/ i9 F# ~/ o0 B9 Q5 [: ^

  35. " l+ `: h8 m0 J/ {/ T
  36. #include <mach/memory.h>
    " f' o- d% ]5 f7 t
  37. #include <mach/hardware.h>( j$ W6 Z2 c. E' S3 Q
  38. #include <mach/irqs.h>
    0 T1 X- T5 M6 i. \
  39. #include <asm/hardware/edma.h>: q6 W* U- ?& j/ \

  40. & j4 R2 Z7 W% Q! s4 H
  41. #undef EDMA3_DEBUG
    ; J9 a& W4 C' n: e
  42. /*#define EDMA3_DEBUG*/
    ; a/ Y& S9 j/ n( R3 O* X
  43. % H; `0 A; u7 x% R2 l
  44. #ifdef EDMA3_DEBUG
    : T. C) n7 x" B$ a& o1 C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)+ ~# n5 P( u/ H$ V" x) p% U
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)9 f1 V9 q1 H% |
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
      t# Z# A8 ~0 v0 Y; D. y
  48. #else
    / ^; _" M2 |3 ]5 m! n' W
  49. #define DMA_PRINTK( x... )1 {) O) F1 A1 g& n$ O7 M( w! N- b2 [
  50. #define DMA_FN_IN0 r- l$ w6 G+ G! I  A: V
  51. #define DMA_FN_OUT
    ( K1 z0 @3 u: g% u1 b
  52. #endif3 p9 A/ J" W0 W7 O# T
  53. 7 I9 s% s; L& ^. d
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)* u* i( n  ?% T5 u
  55. #define STATIC_SHIFT                3" P' T, q* r% c, p
  56. #define TCINTEN_SHIFT               20
    ; |. g2 Q2 \; n$ _1 S
  57. #define ITCINTEN_SHIFT              212 b: p, n! s6 L: v
  58. #define TCCHEN_SHIFT                22) s7 J6 K6 U* d9 ^7 u) [- E
  59. #define ITCCHEN_SHIFT               23
    . y. y( y3 c* V0 ]) {" M! W* ?

  60. 3 k/ I" K" s  ~4 d5 x+ H+ }  B
  61. static volatile int irqraised1 = 0;8 x' l% O# i2 Y% m% B! `1 Y$ z
  62. static volatile int irqraised2 = 0;, w8 y- Y/ H9 p1 U' B- n
  63. 7 c* X2 t3 n( Q& z- |) X
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; p2 Q1 x* ^! X9 k* B
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / Z+ }3 n$ i- p# N0 o6 M4 q+ M
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ s7 s, {! s- B$ Q' [3 Q

  67. 6 k2 e' ^8 }) e( V6 v' r2 H' T4 v
  68. dma_addr_t dmaphyssrc1 = 0;0 S/ x6 t% D7 \% k' c- z" O/ c
  69. dma_addr_t dmaphyssrc2 = 0;5 @6 E: t3 U' g9 r- z
  70. dma_addr_t dmaphysdest1 = 0;
    . R2 {2 v4 _. b
  71. dma_addr_t dmaphysdest2 = 0;
    4 E( \5 F" b, g+ s1 d' s
  72. 8 O3 H/ D, |. i$ p) r: ?! M: G! B# r
  73. char *dmabufsrc1 = NULL;
    5 C8 i4 m8 W, D9 w. \
  74. char *dmabufsrc2 = NULL;0 v+ o$ T; `$ T2 h4 n; S8 O  r  U4 K
  75. char *dmabufdest1 = NULL;; Y# y% V7 o* ^$ h$ N: S
  76. char *dmabufdest2 = NULL;
    " I, C( A& C' {+ G' O
  77. # G3 @' G6 }( n* Z
  78. static int acnt = 512;. S" k% ]; P  n* z+ s( M
  79. static int bcnt = 8;
    6 b# |$ ~! O; o0 Q7 i
  80. static int ccnt = 8;
    $ g# n; _" Y: `

  81.   g! ]/ w1 O5 L9 `! j% u$ j
  82. module_param(acnt, int, S_IRUGO);
    " b$ K8 ^+ ?4 Q4 p
  83. module_param(bcnt, int, S_IRUGO);
    ' ~( G" @2 k! X0 o- F& k3 W( k
  84. module_param(ccnt, int, S_IRUGO);
复制代码

' C. X" h7 I7 d9 l$ |- D
: J# ~6 g0 T  }8 a# N0 J      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用1 r& K' i: a0 f2 S" {
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
" L3 O$ ^2 ^% N% Z4 U6 {: Q5 n; e     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。! }0 @' \& ~# A- p

: _! a. X; j7 \: n. q4 }7 {# v0 q( i: Y9 C3 I# `+ @
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-3 12:58 , Processed in 0.038759 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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