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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 E# V4 |' Z3 B, i7 ?+ l$ Z7 a
  1. [code]EDMA sample test application0 r3 X. M5 Q/ Z! D$ i2 @7 i
  2. /*. B7 A& J. m4 }' c' @1 b
  3. * edma_test.c/ @' U6 b( {7 J% E$ k6 I
  4. *" s9 y) u0 L& z$ i1 a
  5. * brief  EDMA3 Test Application) ^+ ]2 P: I$ L' R
  6. *2 A# U5 N2 t" O7 ]8 |; Q4 ]. s4 U
  7. *   This file contains EDMA3 Test code.4 ^' v& [5 @  M! E# I, E
  8. *# y( O( N& Z( X. e& d; J, L
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE1 i  ?5 m& z1 V: B( V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    5 }# b* i) W& x) B0 r, t9 y' s. B" x
  11. *         TO CHANGE.$ _$ U2 f2 a) W6 `
  12. *
    6 z) A8 H$ e$ y* y3 S9 [
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) t$ N* ^! ?1 [2 t3 |- o, R1 J3 j" k5 h
  14. *
    1 G8 d! r$ A9 l; {) A- U3 a
  15. * This program is free software; you can redistribute it and/or
    8 x# b: I' q& \* H
  16. * modify it under the terms of the GNU General Public License as
    2 e6 H9 c; q0 P+ S! @' ]1 f
  17. * published by the Free Software Foundation version 2.6 B, j" Z$ f; J9 X# R( p
  18. *
    & d# A; ~! `3 J4 q: G; _
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any1 M9 A0 S; e1 `* V, [6 v; y
  20. * kind, whether express or implied; without even the implied warranty
    8 S0 w/ a9 c6 }/ @6 B4 Z3 H+ w" o
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the! m: K7 Y" C0 n5 \) t, l
  22. * GNU General Public License for more details.4 @5 c* E6 ^1 t3 t" x6 \/ z& ~& z  k
  23. */
    : p, H; e6 P1 `5 ?

  24. + O' v+ t$ Y+ S" ~  J: ?$ Y
  25. #include <linux/module.h>
    : i$ }4 Z4 k3 k$ p* k! p$ D
  26. #include <linux/init.h>
    * N  {, j) z+ ?# J3 {- ]8 b3 v
  27. #include <linux/errno.h>
    3 p3 t) I% y- ]2 i" B9 S
  28. #include <linux/types.h>0 E& i8 ?1 O7 A' a3 i' V
  29. #include <linux/interrupt.h>
    " {) }- @, Z, U
  30. #include <asm/io.h>
    ) V4 N% R0 G, r$ B
  31. #include <linux/moduleparam.h>% Q2 ?# e$ D1 r4 p# \1 |
  32. #include <linux/sysctl.h>- [* y( m, h: }( h0 K4 z
  33. #include <linux/mm.h>5 H, \6 J( b0 L# x0 _! K
  34. #include <linux/dma-mapping.h>
    7 S0 \1 b" e3 a
  35. 6 l3 w0 m1 s5 w+ ^# c* @5 Y
  36. #include <mach/memory.h>! G( k. A: t  D
  37. #include <mach/hardware.h>
    . u- n9 J& ~- Q' ?5 Z5 \( j% X
  38. #include <mach/irqs.h>
    " Q6 ]6 O* ~' ]/ ~$ D
  39. #include <asm/hardware/edma.h>0 o7 t# f: _" g, p

  40. 8 K9 A" n/ C4 ^" a  P5 J
  41. #undef EDMA3_DEBUG3 }) y2 h9 h; g( Z* _+ a
  42. /*#define EDMA3_DEBUG*/- {# K+ d2 w1 z# o
  43. 4 n+ W% B. Q( z6 ^0 p
  44. #ifdef EDMA3_DEBUG
    $ m. W: v$ x# k0 \; L+ |
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)( O6 W9 P  @2 i4 {5 K8 i( p
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)# @( p' d1 i) I$ I! V) p8 B! i) f. [
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    6 n# H7 a+ B$ f: `  t! |5 p* I: Y
  48. #else8 g9 T0 S, M8 K
  49. #define DMA_PRINTK( x... )
    - G9 ^& _9 c6 @: Q0 b
  50. #define DMA_FN_IN- K  X' T. ^8 U( S- }
  51. #define DMA_FN_OUT; x9 E! O: {! H" K9 x3 K
  52. #endif! w( E& ?  W7 {

  53. : ~  L7 O% E" K2 `& r' o4 w7 x5 e
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)9 o6 |- q) |+ b# X6 Z% g
  55. #define STATIC_SHIFT                3
    ; x9 ?  G  ^) d# u9 L) K9 n8 n
  56. #define TCINTEN_SHIFT               209 v8 d2 x. L- Y# z* @7 |
  57. #define ITCINTEN_SHIFT              21
    ! T1 {5 g' {7 s) t" U& C/ ?/ O" n
  58. #define TCCHEN_SHIFT                221 U4 I1 p$ I. _7 l3 }
  59. #define ITCCHEN_SHIFT               23
    . x) S% l+ x+ O9 a
  60. 0 Z2 T6 M- q0 K* @: Z. H* ]$ S
  61. static volatile int irqraised1 = 0;0 P' @( J2 z& F
  62. static volatile int irqraised2 = 0;
    . m# y& b+ j+ J9 W5 A

  63. 7 B8 |/ ]. N) c8 A! J
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    & c+ L$ _9 |" ^. r4 L: N
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . I) x8 `5 l9 I9 u5 b: q
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);, h! e" t7 I% Q7 c. f3 i% q" C( c
  67. 3 Z) k' C% S% F  Q) W# |8 c
  68. dma_addr_t dmaphyssrc1 = 0;# u5 j) u$ D( q: g6 }
  69. dma_addr_t dmaphyssrc2 = 0;3 J; ~) y: i0 n2 Y4 F
  70. dma_addr_t dmaphysdest1 = 0;
    ) [, r8 @) j* \7 q4 w
  71. dma_addr_t dmaphysdest2 = 0;
    $ @  O0 y- {) ]$ r" _- j
  72. ' N$ p1 j9 b/ |4 k
  73. char *dmabufsrc1 = NULL;
    9 l3 C. x7 L8 U+ }% C$ K
  74. char *dmabufsrc2 = NULL;: |; @. H+ @% D" x3 G! _
  75. char *dmabufdest1 = NULL;: G" \) O$ S/ }6 x2 g' Y
  76. char *dmabufdest2 = NULL;
    4 f( T5 d5 \0 B+ y3 x- M
  77. % R3 i) S  D8 a2 R6 d8 u9 u
  78. static int acnt = 512;7 V! [3 S. l7 [2 x, a
  79. static int bcnt = 8;2 g( u( I3 [; n& _! L' {, I( t; k
  80. static int ccnt = 8;
    ' i7 Q9 w. f6 V1 m( x7 z4 U
  81. 5 [* F. q0 T1 Z2 z! C3 u- k  u3 Z
  82. module_param(acnt, int, S_IRUGO);
    2 _1 n% q( [; S
  83. module_param(bcnt, int, S_IRUGO);
    $ W& L+ d+ b- }
  84. module_param(ccnt, int, S_IRUGO);
复制代码

. N! e) N; k4 r
" [6 W8 w- t3 b: |0 m. ?      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
5 Y1 m- b( u2 S* T7 S6 Farm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。+ L! e4 S% k& x
     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ \: k2 q9 t+ S7 ~2 \, r  D" A( s; [4 n* T  B2 W6 s4 ~& H

! R* C+ D" L6 N
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-12-17 00:46 , Processed in 0.042946 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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