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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 8 }- p8 G4 X& K" U
  1. [code]EDMA sample test application/ R( y3 R: |$ @! q& x
  2. /*
    & K% X8 Q7 l' }! O2 ?, W
  3. * edma_test.c
    , H% l; ]+ S" |3 x
  4. *
    $ o1 |2 r& j1 o+ x
  5. * brief  EDMA3 Test Application
    , d+ `7 H% U& p; R; F
  6. *
    ; u$ }+ e( q  @* t# R% |' {
  7. *   This file contains EDMA3 Test code.2 R- j* a  t+ ~1 Y
  8. *
    & A$ e2 @6 u. |
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    4 x/ F+ @. [+ V
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT
    $ ~# N9 e' a- E3 d& r* R5 J. |' n. Z
  11. *         TO CHANGE.3 W, ?. _" O/ y8 z
  12. *  X  C$ h) R' _/ @6 y' O
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/. n3 k3 h# @3 }% h0 Y
  14. *
    % e: G- h4 ~0 t5 U' W
  15. * This program is free software; you can redistribute it and/or# a" h' v5 Q( ~9 F  {" v9 y
  16. * modify it under the terms of the GNU General Public License as8 ?% |; _* }1 X' G
  17. * published by the Free Software Foundation version 2." c  i1 S8 w4 Z$ E  V, g( U
  18. *
    8 {2 o+ N! j/ m' b
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    , M; u7 y. _) I2 S% i& I2 e/ J: @
  20. * kind, whether express or implied; without even the implied warranty$ y' `9 R7 ^5 u* K  W8 @* e# M) D
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the$ c# m& G# e3 b, _
  22. * GNU General Public License for more details.
    % q" [7 K3 z& M  V: E
  23. */
    / q# D# q/ ~% P/ c1 M6 q
  24. & }2 d% Y) r' ^- q" s4 d0 P) i
  25. #include <linux/module.h>5 t4 G3 ?; M" X7 O
  26. #include <linux/init.h>, o( {6 \$ X% m  b
  27. #include <linux/errno.h>& T( G$ m% [' Z. B: |
  28. #include <linux/types.h>
    ! u$ ^; t) C- C' G" X4 T3 L
  29. #include <linux/interrupt.h>
    9 `: [# t+ J; }* o; C, k
  30. #include <asm/io.h>7 ~7 d* K# c! k& Q
  31. #include <linux/moduleparam.h># X% D2 k7 s+ Q- m7 ~8 C% i2 N
  32. #include <linux/sysctl.h>
    $ z" \- L# R) i6 {, p4 U1 l
  33. #include <linux/mm.h>8 f7 D% z6 K1 |. j
  34. #include <linux/dma-mapping.h>% l4 `  v7 Z* w9 {) t5 b- T
  35. . }; O' I, w) |. y8 V
  36. #include <mach/memory.h>! E# H4 Y: L4 x( ]
  37. #include <mach/hardware.h>
    2 X: e* F# ^7 b) w* q3 F
  38. #include <mach/irqs.h>
    % d) k' r$ d6 X. z; i
  39. #include <asm/hardware/edma.h>. [$ c4 N: v& m1 i, u2 J5 \

  40. 8 i) R$ M8 Q/ M& d, B
  41. #undef EDMA3_DEBUG0 k7 ?) i8 L1 L0 e$ t
  42. /*#define EDMA3_DEBUG*/
    5 b  ?# |! ]' m

  43.   i5 ^/ I3 Y/ E8 B4 J
  44. #ifdef EDMA3_DEBUG3 E! p3 r9 x0 _
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS): c- D4 f8 B( w9 X" {1 v. Q7 R6 e
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)" x1 t, @$ z% k8 `- Y4 }# W+ B
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)1 _( K) t9 B0 D. N  R
  48. #else
    , h! `" X; F! N
  49. #define DMA_PRINTK( x... )
    + y# Q# U; `2 p6 W9 G9 M
  50. #define DMA_FN_IN: O/ B( p) R9 y
  51. #define DMA_FN_OUT
    ) S7 g  g( G4 t* _
  52. #endif
      R; q9 i3 \: Y7 {( R3 ~( ]
  53. % [$ F2 k1 E$ n4 \
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768)1 G. Z% @( O- k" Z) r  ?
  55. #define STATIC_SHIFT                3
    6 E6 X# e- H  T$ N9 Z% S3 }
  56. #define TCINTEN_SHIFT               20
    3 C/ ~. Q; [2 P2 D/ `9 a+ [
  57. #define ITCINTEN_SHIFT              21
    8 P$ X, K* F  n0 A) l3 [
  58. #define TCCHEN_SHIFT                227 t! q1 J5 t. C; Q% Z$ `6 @
  59. #define ITCCHEN_SHIFT               236 Q- ?; o/ g" V2 d+ C0 Q7 B( [

  60. ; n+ }+ `* Z, M, t6 s  \# ?9 |
  61. static volatile int irqraised1 = 0;
    , I* ^2 W- x4 P1 {7 k5 Z
  62. static volatile int irqraised2 = 0;
    . O, h/ Y5 M) q- z6 ~  y2 n9 }  z
  63. ' D9 C3 e9 P# w) P+ G0 @( {
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    / [; l6 e* C- ]# D* {$ I
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    - I; r+ I$ h( i! [  r% U8 T
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);% s3 J/ N3 l0 e% p
  67. 7 H0 B5 a( z0 F( |
  68. dma_addr_t dmaphyssrc1 = 0;
    8 ]& V/ A4 I' G- e& m7 t: T
  69. dma_addr_t dmaphyssrc2 = 0;
    # z; Z# F' ?1 D: A# L; C0 j5 H0 c
  70. dma_addr_t dmaphysdest1 = 0;
    7 ?! r# m) ]( V/ k7 c
  71. dma_addr_t dmaphysdest2 = 0;$ W3 g; y7 Y' q' V5 `

  72. / M8 b5 l; l$ D7 o! V/ i
  73. char *dmabufsrc1 = NULL;
    ( S" f5 ]  Y+ V. z0 `
  74. char *dmabufsrc2 = NULL;+ e/ n* j( p4 n9 l3 E
  75. char *dmabufdest1 = NULL;
    / W' k  l# s/ m
  76. char *dmabufdest2 = NULL;# Q4 t  b, ]- c. O4 N: H
  77. 0 S: N' \# `) U
  78. static int acnt = 512;
    5 i% o4 V- E6 ~) F8 n8 J; v
  79. static int bcnt = 8;
    3 W- t8 ^! E6 I; _+ K4 l& t3 i
  80. static int ccnt = 8;8 _8 I  j! a5 w& |

  81. & l% k9 t" |( v- Y% M
  82. module_param(acnt, int, S_IRUGO);
    2 W& n; X6 H  [3 S0 q' c5 Y
  83. module_param(bcnt, int, S_IRUGO);  y5 c* y/ Q0 h- f' T
  84. module_param(ccnt, int, S_IRUGO);
复制代码
2 D4 n/ W5 x0 ^) `, H' R
& A% c; g" C' R9 G) A$ k  Z
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用( x9 f# \  i2 {$ _. I) a
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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
2 J3 N5 |0 P% h5 m) c' g2 ~     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。# q+ Q3 S% O" L9 d4 Y; \/ T0 ]+ `8 L

3 }8 N; E" m. Q. b: X3 b! l! d7 p- k6 W! J- I! p3 l6 E) u) d& }
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-4-21 06:40 , Processed in 0.047606 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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