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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑
3 q4 j5 J/ M9 H2 `4 d
  1. [code]EDMA sample test application
    + C9 M" L* P8 t- g
  2. /*1 H4 f# O" E) q0 c( O& _0 h3 O9 h
  3. * edma_test.c8 ]7 o9 _% `% e! t( Q  @( l' |3 w
  4. *
    ; X- p9 i  I8 T- `% X0 X
  5. * brief  EDMA3 Test Application
    * E4 Y6 Y! X* w0 V& e: H: G
  6. *
    2 W+ x$ o; i. }/ r( C
  7. *   This file contains EDMA3 Test code.
    1 R3 M- v: T- T- H* j4 a' l
  8. *) ~% R: r+ o$ d$ e" a9 F% z
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    3 o, [; l- u$ C! X. U
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    " i" X! q  V/ d( `3 d& c" `
  11. *         TO CHANGE.
      \; v+ ]- D$ l
  12. *
    % `: r: N" m2 r6 _' ~
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/
    4 X, C( y; E  N& N. N
  14. *  b" ?. t1 T; s) R
  15. * This program is free software; you can redistribute it and/or, G5 l+ `0 I6 E' U" i
  16. * modify it under the terms of the GNU General Public License as
    $ u$ W' X/ ^" r4 a" V
  17. * published by the Free Software Foundation version 2.
    - g- ?0 K( I9 u. g0 ]! }9 p
  18. *
    7 G, q* p7 r/ A. D2 [0 h" M" }
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    7 G# H; l. I/ ^# h
  20. * kind, whether express or implied; without even the implied warranty9 k/ C6 S# Q' f/ q( |9 {) ~
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the( }& S$ h7 U* X% L4 U& v
  22. * GNU General Public License for more details.
    % `, e, e6 w7 `7 p6 ~
  23. */( v2 w5 ~/ Q6 W) q- G6 t

  24. / w0 K2 z/ L; y8 b) ~
  25. #include <linux/module.h>
      z$ V) T" c+ Z  K
  26. #include <linux/init.h>
    ) R- y) F! A) c) Y+ X7 s8 j( L
  27. #include <linux/errno.h>  B) k: C% x& k$ M
  28. #include <linux/types.h>
    : F- r2 Y$ {; m4 s
  29. #include <linux/interrupt.h>. M' U- i$ b8 m3 V& i; A
  30. #include <asm/io.h>7 k6 m& k- p, X
  31. #include <linux/moduleparam.h>
    # G- c- j1 w! b$ ]4 H
  32. #include <linux/sysctl.h>
    $ Q8 j; M5 b7 C0 @
  33. #include <linux/mm.h>
    6 E. Y7 n9 i; h+ i
  34. #include <linux/dma-mapping.h>
    0 ]/ `- U7 H! C& m7 L, i' G

  35. ; o* |/ m5 L+ H& Q( R
  36. #include <mach/memory.h>/ ?6 `  V) [+ u# T( a1 n! ~9 m
  37. #include <mach/hardware.h>
    & y7 n, Z  N  d
  38. #include <mach/irqs.h>/ I9 m9 r9 s! R$ c3 C& C. u; |5 e% ?( \
  39. #include <asm/hardware/edma.h>
    ; r/ p0 [9 u& u

  40. ' Q; ], L: I5 }- \
  41. #undef EDMA3_DEBUG) P/ O8 A) l2 S3 @4 E. `
  42. /*#define EDMA3_DEBUG*/
    5 `8 t% S# E8 J& a  [

  43. - V9 B8 z: {: O9 A, J
  44. #ifdef EDMA3_DEBUG+ g, \1 m4 R% `& r* m9 m/ E
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)2 \4 H, v, ~- m+ f
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)
    - v+ D' Z3 |( I0 Q
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)7 T" S, e" b8 D
  48. #else
    ' j) j/ a, ]( Z  \. Y7 a
  49. #define DMA_PRINTK( x... )
    & s) c: d9 y7 m+ T, [! }( |
  50. #define DMA_FN_IN+ O7 S& t* P* Q; i. d
  51. #define DMA_FN_OUT% j  Q' Z2 G' q0 L$ B
  52. #endif7 B3 `' s! D. K+ `0 s) o0 z

  53. 4 H2 q1 F1 S1 k. |, u# A9 w
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)
    9 d3 P- k3 G, f) t! M
  55. #define STATIC_SHIFT                3
    6 V' X, q! o$ ~6 R3 \; M1 |9 Q
  56. #define TCINTEN_SHIFT               20) b8 R, p2 N$ R+ ]5 m
  57. #define ITCINTEN_SHIFT              21
    ) |) X% P8 O9 _  e4 Y
  58. #define TCCHEN_SHIFT                22
    % s9 S9 J/ V2 v1 G  N
  59. #define ITCCHEN_SHIFT               23  K2 E3 W* p3 u3 k
  60. , O$ ~/ s0 d- F. O
  61. static volatile int irqraised1 = 0;
    : \8 ~3 G3 @3 o# Z& z0 `% p
  62. static volatile int irqraised2 = 0;* a' G: l8 S3 i5 t3 j# j  {
  63. - ~# C# J% @. \: g0 U# z
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);! i. d$ p' u- C) J  H$ x4 g* r8 ^
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);" E6 B# o4 Y: _$ }! ^5 w9 x
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);0 [: ~; n+ E2 V+ |8 c

  67. 8 F$ e5 x7 X( T* F
  68. dma_addr_t dmaphyssrc1 = 0;
    ) o! q( z( ~8 b5 {" N. q- O1 F: D
  69. dma_addr_t dmaphyssrc2 = 0;
    7 G; Q% f3 h, m- \
  70. dma_addr_t dmaphysdest1 = 0;
    5 A" u% u: O1 E& [3 T* z" P. L8 `
  71. dma_addr_t dmaphysdest2 = 0;8 N2 d$ o) x# ~! S# N: Z8 j4 E

  72. 5 l& A& E4 j( s2 ]! O, g
  73. char *dmabufsrc1 = NULL;
    1 L0 {0 d- c0 o
  74. char *dmabufsrc2 = NULL;
    9 z( x+ a- M( C3 d' O6 A9 W6 y
  75. char *dmabufdest1 = NULL;
    * k4 p  D, z0 c! p% M0 `
  76. char *dmabufdest2 = NULL;" o, z' m% }  @! f4 y# f
  77. , P2 @6 s; h7 U* X
  78. static int acnt = 512;
    8 ~, c5 x- g6 f( Z( X
  79. static int bcnt = 8;/ Y  b0 j, g8 c
  80. static int ccnt = 8;; J  c2 N" r# q% a" J5 @6 [
  81. ! N3 j- q7 s* t+ ^
  82. module_param(acnt, int, S_IRUGO);
    ; [2 d7 ]$ Y0 A) y  ?1 w: W
  83. module_param(bcnt, int, S_IRUGO);2 Y3 d) v4 s# p) j$ o0 J6 m+ J% `
  84. module_param(ccnt, int, S_IRUGO);
复制代码

4 i- e5 n5 i7 M# Q, y: N5 i
, @3 ]; l9 @( {: M) m      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
9 J, ]4 N8 o% Z6 e+ q, d' 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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
: [" s9 l& e# N/ Y7 `/ p; V9 ~0 Q6 z     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
% F- E! Q% T+ y: z# r
5 }$ A6 }3 y. _# r$ }" y2 T+ W( S1 l3 `8 h6 S
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-7 17:28 , Processed in 0.040235 second(s), 25 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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