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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 1 \+ F# w0 P8 W  ~* a  V6 q8 M
  1. [code]EDMA sample test application
    ! M. d3 E  x: s8 \' j) q
  2. /** ]; Q- S6 C1 y0 e
  3. * edma_test.c0 I+ U8 H2 O/ M+ J% k
  4. *; S9 h& @5 L% b+ ^1 U. k: f2 e
  5. * brief  EDMA3 Test Application
    2 j! f: _! U! v) H4 }! s
  6. *
    ' v6 y0 V7 @* X& k# S( ]+ n
  7. *   This file contains EDMA3 Test code.
    1 ?1 Z/ i- X# p3 |
  8. */ G* L9 W0 X; v& r  \
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE& G9 [5 \9 P6 q+ Q1 ?# u
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT3 X1 H4 ]: F- |0 I) {9 u/ v) n
  11. *         TO CHANGE.9 V4 i) o1 s% A" e7 f3 w1 u5 M
  12. *
    7 o0 |3 D2 x2 R$ w2 ~9 z0 v1 z& P
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/' b$ h. C1 n' ^/ z4 R* \" \2 D
  14. *4 E' ]) F" ]; d% }
  15. * This program is free software; you can redistribute it and/or% z, y( `$ J% @0 n( S
  16. * modify it under the terms of the GNU General Public License as  |  d! K7 A2 m( e
  17. * published by the Free Software Foundation version 2.  H7 ]% I& H: N! V4 g5 E) W
  18. *
    8 P8 ^% V+ I7 V% y/ |/ S
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    $ a, \5 {* ^; ~4 C  X/ l
  20. * kind, whether express or implied; without even the implied warranty( `! x7 ~; k6 s/ Q" \* A
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    , x# L% U. Y# E5 D3 w& d
  22. * GNU General Public License for more details.
    5 G/ x4 y! Y* L3 f+ e! U  F9 L
  23. */% ]  }2 J% w% J5 z
  24. 0 L7 A% e6 X* U
  25. #include <linux/module.h>+ N! o7 N! l5 X8 }: r
  26. #include <linux/init.h>: z/ h' y& `* I4 Q$ C/ Y3 t% q2 ?+ k
  27. #include <linux/errno.h>
    4 |. e1 v/ s% ?: N% O
  28. #include <linux/types.h>
    * m" W% D+ L9 ]' l, r! C$ t8 q
  29. #include <linux/interrupt.h>$ G( [7 a+ @7 c6 c) v
  30. #include <asm/io.h>% r; Q$ T6 Y* L4 {9 C/ j
  31. #include <linux/moduleparam.h>3 O  o( g" S7 D) v6 W& q* e1 B
  32. #include <linux/sysctl.h>
    - c/ r* s9 V2 E# u
  33. #include <linux/mm.h>
    * h  |2 q$ _3 S6 N
  34. #include <linux/dma-mapping.h>* b! {+ C( s; I( r( ~
  35. ; L3 p% K2 x5 i" s% s# j- f+ w3 `
  36. #include <mach/memory.h>! w; i8 K' Y+ }7 F
  37. #include <mach/hardware.h>
    8 ?) |4 _' w4 k
  38. #include <mach/irqs.h>( U/ V4 r# ^2 P$ }# s; @
  39. #include <asm/hardware/edma.h>
    6 X& b) p/ D; v1 ~1 i- q

  40. + u, l3 n& C1 k  I
  41. #undef EDMA3_DEBUG
    ( R1 d' x; r3 t3 X
  42. /*#define EDMA3_DEBUG*/
    3 I/ Y: U. B* Z

  43. . h) Y. f  |' t
  44. #ifdef EDMA3_DEBUG
      L4 T) V/ x; [, i' d
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)& A3 W) w$ m) |( S- y) t
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)3 ^  ]& [/ a1 K3 }) t, u
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)0 w& G- d. S3 A& y$ r. S
  48. #else
    / L+ ^+ h8 [+ J; G" q# g1 U
  49. #define DMA_PRINTK( x... )
    9 k: k$ a1 B! P" x. P: [6 W
  50. #define DMA_FN_IN
    6 T- s, l9 H- L( m& w
  51. #define DMA_FN_OUT
      k6 A8 G& T: a- G: u8 O( P& q
  52. #endif
    4 A5 F1 g# d$ F* b* h+ S  W
  53. 1 J4 @/ y: y! v! @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768). ]3 K: A2 ]$ ]1 F
  55. #define STATIC_SHIFT                35 v7 P. R& \) |% ^/ C% x
  56. #define TCINTEN_SHIFT               20& k0 ^' D+ }) q' R; ?1 x6 g
  57. #define ITCINTEN_SHIFT              213 \' \7 c* a8 h0 G! X: f- I
  58. #define TCCHEN_SHIFT                22
    2 T1 V  l5 k0 T" m! ]: V1 z- k  U1 ]
  59. #define ITCCHEN_SHIFT               23
    , o! `* M7 k1 F! X  q7 }4 n
  60. 6 C  I4 V8 [" U0 }) u5 L
  61. static volatile int irqraised1 = 0;8 A4 X% E0 q: q6 x6 w  L2 `" m9 ^0 \
  62. static volatile int irqraised2 = 0;7 n; D9 ~, `( }9 d( E# }1 W

  63. + h' A6 |* }6 @
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);8 L, X. h* P' c) S+ u8 H7 [6 d
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);$ A4 q- v+ V2 X6 S0 V% m" {& Y$ d3 ]5 ?3 a
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / M$ r0 C2 w2 e# b; x
  67. * U9 p2 \3 C, ?1 ^* k
  68. dma_addr_t dmaphyssrc1 = 0;
    & h5 X/ p  |8 U  P1 m0 I1 a  _/ A9 t6 e
  69. dma_addr_t dmaphyssrc2 = 0;' a* P  S( G0 Z- \- I
  70. dma_addr_t dmaphysdest1 = 0;8 L8 D6 X. ?& N, m
  71. dma_addr_t dmaphysdest2 = 0;" z0 ^8 y  i- ]% @# L: |0 C
  72. 6 m/ |0 Z; G  ?0 A7 Q
  73. char *dmabufsrc1 = NULL;! W4 ?; v1 Q/ Y
  74. char *dmabufsrc2 = NULL;
    9 h7 C/ o- J: y5 q
  75. char *dmabufdest1 = NULL;. A7 I% t8 N4 i8 a: \( i) h3 n
  76. char *dmabufdest2 = NULL;* d9 _- j* O6 z

  77. / E5 z3 ?& k4 d/ L+ S$ G
  78. static int acnt = 512;  w# j# f; I" q
  79. static int bcnt = 8;! W! C, e5 J' W* V
  80. static int ccnt = 8;
    2 j6 r" I- X- M/ A
  81. & W# ~4 W( O$ I1 u/ i
  82. module_param(acnt, int, S_IRUGO);
    1 q. M  G$ }9 y; I5 ^6 J* R( k
  83. module_param(bcnt, int, S_IRUGO);9 f6 w0 G; R8 C8 x! _
  84. module_param(ccnt, int, S_IRUGO);
复制代码
7 a$ A% g0 ^$ h/ ?$ C

6 u+ T# P  _" _      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
6 @7 u- m. V# I5 m  F) ]0 Barm-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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
. o+ h/ ]( A* y& D3 }     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# c/ o& `8 p, }! k
4 `( I& D/ ]- }, B4 G

* Z7 `' t5 x5 A" {1 _$ U  l
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-27 16:16 , Processed in 0.038217 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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