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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
1 a) M8 u! g& M) p9 V" u- y& K: {
  1. [code]EDMA sample test application
    ) u4 l  Y3 A8 ]1 [/ h$ f: V3 W
  2. /*
    # _8 O; Y1 o0 q& E! G8 I
  3. * edma_test.c7 g- g. S, T/ P* O: T# C
  4. *. t# [# P! j! p* {
  5. * brief  EDMA3 Test Application+ k# ~) S: [. b1 y
  6. *8 u" m4 E! _+ Z9 R. ]- O& b
  7. *   This file contains EDMA3 Test code.
    ( C! m  {: N1 z2 G" D% C! l1 o' k
  8. *
    9 L% p, y4 w) K
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    0 |( \' k  t( J1 i+ B
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT+ B; Q- w0 v9 ?* H" Y1 S  O) e: Q
  11. *         TO CHANGE.$ k$ u: v6 y' |
  12. *7 Q  z# ]% }" ]
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 @9 x7 f9 s. ~% c
  14. *
      @$ d( v$ @9 D3 {
  15. * This program is free software; you can redistribute it and/or
    ( n3 b8 q. h/ h0 a- q: l, v
  16. * modify it under the terms of the GNU General Public License as$ ~, z& b% @( B# [; h/ o. }
  17. * published by the Free Software Foundation version 2.
    , T$ L( ^0 p  O( |' @  O$ t
  18. *; }+ G2 h' E4 Q  T2 B
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    " v4 m  Z: ?, \* ]4 K  p: Y6 I
  20. * kind, whether express or implied; without even the implied warranty; r' T  a( t5 v( x' i+ p
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the. ?- A6 B2 s$ E- a; h( j- q. g
  22. * GNU General Public License for more details.
    9 `- H. K* m! S) N1 [
  23. */6 Q5 L9 `- T% Q6 i
  24. * l; S8 P- k2 u& a+ E5 X4 E" ~
  25. #include <linux/module.h>- G1 v$ ]/ [3 h- _: `& Y! E
  26. #include <linux/init.h>) |5 m. K- M' w1 S2 i9 o. U& S
  27. #include <linux/errno.h>5 y& p+ M; u9 _
  28. #include <linux/types.h>8 |7 P" \% |. F. t# o+ z, J) u
  29. #include <linux/interrupt.h>% B+ T" `* ]5 @' t: ^
  30. #include <asm/io.h>) ^4 N, z( J( O* Q& L) t
  31. #include <linux/moduleparam.h>: M- h' w+ s/ K4 d
  32. #include <linux/sysctl.h>
    0 Q$ j* W) q3 F+ r: J# o9 N, G* ?  a
  33. #include <linux/mm.h>1 Z9 n$ k8 Z/ G, a( D
  34. #include <linux/dma-mapping.h>( ?* z, O+ R$ g' D) ~9 ~7 C& E' _! B5 H
  35. % J; }' d- s. j
  36. #include <mach/memory.h>: q- d. t2 Q. Q
  37. #include <mach/hardware.h>- J3 [) L: O* b0 R  q  d7 E+ j
  38. #include <mach/irqs.h>
    3 ~1 r- T5 v; I4 F! e4 f' ]9 q
  39. #include <asm/hardware/edma.h>% b, d: H6 g8 O
  40. 9 w; ~% |8 x. }. T6 x. g- h
  41. #undef EDMA3_DEBUG: q( j4 l  |! J, }, P
  42. /*#define EDMA3_DEBUG*/
    % o: r9 _+ u3 g; c/ h+ j  d
  43. 8 G) n* t6 M+ R. d: j
  44. #ifdef EDMA3_DEBUG
    - g, G5 m; r. U0 s: l9 b3 p* p0 c
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    - @- m9 Y: d. y
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)) F' W2 h+ W0 e9 X+ {5 Q6 U6 Q0 V
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    3 B. g) Z- U$ u: C  r0 s# R% L
  48. #else4 b$ n- C. O: g4 ?4 I1 \3 V' _$ o4 S
  49. #define DMA_PRINTK( x... )2 }0 s" G6 F4 J! |) R4 Y
  50. #define DMA_FN_IN
    - U8 \3 z: ?) U  H* G% N  Z
  51. #define DMA_FN_OUT
    9 q* w+ t# H. u3 q4 S& b; K
  52. #endif
    3 ~8 l" E# J/ i$ v% f$ C5 `7 M0 x( \' x
  53. $ z' f/ H- o/ M. V% z3 f
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)' g- d8 ?- Q6 g4 I' i4 ]- v
  55. #define STATIC_SHIFT                30 [8 ^% C0 y. E( B. Z
  56. #define TCINTEN_SHIFT               208 T1 U! v- @/ h2 I: L' }6 p
  57. #define ITCINTEN_SHIFT              21$ {6 @& [( `4 K3 x
  58. #define TCCHEN_SHIFT                223 l/ D! X4 m" w. R2 I+ |
  59. #define ITCCHEN_SHIFT               23
    0 K) n/ B6 v' c+ X0 G

  60. 5 p: E, F5 w5 ?
  61. static volatile int irqraised1 = 0;
    ( y( x* P& m) O7 G
  62. static volatile int irqraised2 = 0;6 ^4 s9 [5 r1 {" H/ }" W0 U/ c" U

  63. . _! E4 P: v4 N# M5 `8 ~- H
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    : n4 }9 s3 U4 f: t5 V2 M; N# I
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 `& ~8 i# H( P9 z
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; s! H# ?  d3 I# B' @8 K- @

  67. 1 h2 @+ ]% \* ]- f
  68. dma_addr_t dmaphyssrc1 = 0;
    5 q# r. i9 Z: C6 Q
  69. dma_addr_t dmaphyssrc2 = 0;
    4 @4 r: i" Z4 V! ^( _4 r& a9 [
  70. dma_addr_t dmaphysdest1 = 0;8 m1 g0 i/ |( @
  71. dma_addr_t dmaphysdest2 = 0;) j( x( }% d/ P7 g5 a

  72. & K1 a8 s/ B! m; W. i* L1 `
  73. char *dmabufsrc1 = NULL;
    % X/ g4 u' r5 `; O9 e0 z( e" W
  74. char *dmabufsrc2 = NULL;& y2 y: s' U5 ]2 C6 l; m, b; J
  75. char *dmabufdest1 = NULL;
    % d4 g# Q% b: O* v6 R& [6 l. t3 F! z
  76. char *dmabufdest2 = NULL;
    ; z0 \' c1 J9 L7 L* x+ r1 U3 m
  77. % M6 P) u$ n6 d7 f$ K' [
  78. static int acnt = 512;7 v% u( _$ N5 _; ~
  79. static int bcnt = 8;
    , q! f/ _3 m" t2 {( ~+ z1 W1 |
  80. static int ccnt = 8;( A$ }6 U- K5 s0 Z
  81. ; \& a  ~9 e/ |4 K' Z. }
  82. module_param(acnt, int, S_IRUGO);' O$ I0 q; O- h  W- Z* I% x
  83. module_param(bcnt, int, S_IRUGO);. l) F6 Z3 C  [6 q
  84. module_param(ccnt, int, S_IRUGO);
复制代码

! C/ l2 w7 M" ?% [0 S; s8 W& a: e+ C7 w# T' i' }- J6 }2 J
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用# Z9 g/ J. ?3 E4 ?. o! E
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
& l1 T3 K4 O7 ?! c. Q8 F" b3 \     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
. X* p2 [# h9 Q$ v  b7 h+ o# k  m1 E8 F8 f! z

2 O/ Z* W  F7 s, f4 e# \+ A
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-2-14 16:21 , Processed in 0.040658 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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