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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 6 t$ Z# I5 P; k" V$ U9 a
  1. [code]EDMA sample test application. l& `' w3 O2 D) y5 i
  2. /*
    6 k& K4 J  N* P4 \3 k
  3. * edma_test.c
    ! ^. O  _3 H. C
  4. *
    2 V$ W" p6 G: J1 t
  5. * brief  EDMA3 Test Application
    0 H* X1 u; n, h
  6. *
    4 A/ c) R# \  E) Q# B# k
  7. *   This file contains EDMA3 Test code.
    4 ]( j$ ?8 @! ~
  8. *6 R7 i, R- T* f
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE' d) O9 h4 g% a/ L3 Y" R
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    : O* d. v# U  W9 P
  11. *         TO CHANGE.( r& ?" ]  a: ~) D4 s: b+ O
  12. *% J' Q- S  z7 p( x# v
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/' ?" b2 Z! K- ^8 v7 o
  14. *& J/ |( A/ n9 m6 V) u
  15. * This program is free software; you can redistribute it and/or
    0 x  y9 y- s# O1 ^
  16. * modify it under the terms of the GNU General Public License as' p7 x+ U* N' \0 ]4 f
  17. * published by the Free Software Foundation version 2.
    8 k$ j9 x& O3 k& [
  18. *4 M* |# z" L% f
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    $ f* U7 T# U, ]! w4 c4 d  E
  20. * kind, whether express or implied; without even the implied warranty' C! y  b% z, R
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    9 {. f. G" |# S$ A' o# M
  22. * GNU General Public License for more details.
    0 [2 H9 A/ _4 G4 a9 }
  23. */
    . F6 ]% A. D; R, S" T! q$ a
  24. ; \, @/ v8 e5 g" @2 j
  25. #include <linux/module.h>7 G- U  X4 L) M$ l
  26. #include <linux/init.h>% e  s. _$ u. |3 V  Y  b8 X
  27. #include <linux/errno.h>
    9 e' P! I5 u5 u& f& O
  28. #include <linux/types.h>9 ~$ P9 r7 n  a7 F) g& g) k
  29. #include <linux/interrupt.h>
    8 Y- Z- M4 X& V
  30. #include <asm/io.h>
    * H7 |" O3 f/ g1 w9 ^' Q
  31. #include <linux/moduleparam.h>
    ' h. r& W) W. O6 I) F# l) M
  32. #include <linux/sysctl.h>
    6 |3 B: c8 n! z/ |2 o% ~# p( K& b
  33. #include <linux/mm.h>) }+ \# K0 y0 ]( i" S+ l+ E$ e$ @
  34. #include <linux/dma-mapping.h>4 ?2 d: z( d6 X" c
  35. % z9 R( W( j7 ^+ a6 w8 H
  36. #include <mach/memory.h>
    * W& j) l% L, h+ M3 G
  37. #include <mach/hardware.h>
    " W4 _6 Q- z6 _2 J0 D& W' A% V' o/ i
  38. #include <mach/irqs.h>3 ~  w2 u! t9 D
  39. #include <asm/hardware/edma.h>5 \( Y6 P0 c% _0 c' a7 H$ K

  40. 3 P& a  ^  k/ w5 p
  41. #undef EDMA3_DEBUG4 y7 I1 ^. ^; L. i" k
  42. /*#define EDMA3_DEBUG*/$ [: K4 x! v) A1 W
  43. # k# @6 f! d5 X( J+ w: N$ y7 t1 t
  44. #ifdef EDMA3_DEBUG9 K5 b4 p8 @& |$ v6 [8 C
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    9 Y+ b" K6 x9 x) C. s: k1 W
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)( W  n7 D+ I- M' v0 i
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    & V& @6 b' O# b8 t7 U3 {
  48. #else
    6 W' Q& m* K( |: |4 T: M; v/ }* p
  49. #define DMA_PRINTK( x... )
    / v8 V: [1 L: X% z& F. b
  50. #define DMA_FN_IN
    * L; |& {5 [: D% `
  51. #define DMA_FN_OUT
    ' B; h7 S& y; p9 c3 Q
  52. #endif
    4 ^# N; @' U( u  g2 e  b" j

  53. 1 }: u/ @0 [; P, }; c8 }* u
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    ! R) i1 S+ H: I7 H& ?! G6 n0 {
  55. #define STATIC_SHIFT                3
    " z6 }5 ?2 B- f+ h& w. n  ^" |: p) C
  56. #define TCINTEN_SHIFT               206 K  t8 e# I; }5 k
  57. #define ITCINTEN_SHIFT              21- \4 K! _) s4 N% f% w* o' }
  58. #define TCCHEN_SHIFT                22
    ! ^. a: ]3 z% n6 _0 d
  59. #define ITCCHEN_SHIFT               23! }6 U' z  o/ v9 u; |' w

  60. , K1 ^$ g2 `+ N3 l3 Y
  61. static volatile int irqraised1 = 0;; m5 Z* I& i! K4 d# |) O
  62. static volatile int irqraised2 = 0;0 _* Q. k1 o+ v* u4 e$ f

  63. - ]- F$ b% c; h
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);& H. V3 J, g& i3 j2 a: E$ f( b
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    % I9 T0 E) L! v" Q# }" ?
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ' B+ B# p  r! p
  67. / e$ q' |% B4 Q9 h1 A" Q# K- L
  68. dma_addr_t dmaphyssrc1 = 0;
    % z5 ^$ h4 K/ J. |* t. u
  69. dma_addr_t dmaphyssrc2 = 0;
    5 t  o' x% n& C$ r9 H( `, _8 S
  70. dma_addr_t dmaphysdest1 = 0;
    4 O  V! U5 U' j' m2 U# K/ n
  71. dma_addr_t dmaphysdest2 = 0;$ I* Q; e' Y, Q- A* S- L8 s8 ~

  72. ) N: j: t9 M0 v+ S8 ]4 `# b
  73. char *dmabufsrc1 = NULL;  J. W7 G! I# B4 L" x0 C
  74. char *dmabufsrc2 = NULL;
    0 g. C' _/ L3 [9 w% k
  75. char *dmabufdest1 = NULL;6 s, A, {* `& ~( G  e; R1 r
  76. char *dmabufdest2 = NULL;# U1 R. C3 j9 q  y: z# X7 D0 ^. Q
  77. + M  o, z# I' @
  78. static int acnt = 512;
    & ?" ~/ h$ F/ u: F; s
  79. static int bcnt = 8;
    * L2 s5 |" }! B. ]4 w1 ]0 ~0 [
  80. static int ccnt = 8;  P7 K' X0 _* P
  81. 1 n. z8 T$ u' |' g
  82. module_param(acnt, int, S_IRUGO);3 X- D/ J5 D2 m  g7 G
  83. module_param(bcnt, int, S_IRUGO);
    * ~( Y+ }9 J0 B* c6 V! l
  84. module_param(ccnt, int, S_IRUGO);
复制代码

- d' Q' c* B9 v/ S0 W) R; o2 y% T0 ?/ N
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
* N: ?) m& n" y/ marm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
4 k" t' v2 O2 I     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。  V0 l+ B8 M0 L8 A. F. l

8 ]/ `  D) ^4 h5 Z( l
9 k) e) L# ^3 Q. E- O; [$ \
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-19 07:26 , Processed in 0.039759 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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