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

嵌入式开发者社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

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

[复制链接]

5

主题

11

帖子

73

积分

注册会员

Rank: 2

积分
73
跳转到指定楼层
楼主
发表于 2018-1-30 11:01:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 yyj 于 2018-1-30 11:01 编辑 , j$ N, t& M' i4 M
  1. [code]EDMA sample test application4 K( \' r6 @& ^) R( J
  2. /*
    $ L- @. F# n4 w- h6 ?1 q+ `
  3. * edma_test.c, ?/ n2 O4 g) {% E. P) T
  4. *# r1 i2 b9 q& p( E. j; ?
  5. * brief  EDMA3 Test Application
    - g/ ^2 W7 I  x$ ~2 m; V
  6. *
    7 {/ {% k" c  t! N8 Y. @
  7. *   This file contains EDMA3 Test code.
    - N; L% x/ ]9 C; l, }0 u
  8. *
    - X7 g5 @; Y* q& O4 j2 ?2 |" b* G
  9. *   NOTE: THIS FILE IS PROVIDED ONLY FOR INITIAL DEMO RELEASE AND MAY BE
    ! \2 a) v, }* l* ]+ Q0 `, o/ ]9 p
  10. *         REMOVED AFTER THE DEMO OR THE CONTENTS OF THIS FILE ARE SUBJECT3 e+ A3 W0 k' V' ~/ B
  11. *         TO CHANGE.% @+ }6 ~4 l, F  w7 W9 I
  12. *
    5 Q" N: L8 ^/ N$ Z/ i- A# |& v) _
  13. * Copyright (C) 2011 Texas Instruments Incorporated - http://www.ti.com/) t: r& X& o5 W7 ^* _" s
  14. *
    + l# n7 T) e9 y( e3 D' \4 u
  15. * This program is free software; you can redistribute it and/or4 E9 N" e8 Z7 _" g! W5 l5 r
  16. * modify it under the terms of the GNU General Public License as( v, d, J7 j, l" Y
  17. * published by the Free Software Foundation version 2.- [$ _, ~8 `% O; l) F
  18. *  a' J- K  [! t% N* O1 N0 a
  19. * This program is distributed "as is" WITHOUT ANY WARRANTY of any
    0 \/ Y* u4 F* a" H; Y5 X
  20. * kind, whether express or implied; without even the implied warranty
    $ ~; z$ t3 w0 n. e% q- o
  21. * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the* V% ]& O' h& u" Z: {6 R- J
  22. * GNU General Public License for more details.
    " Z  t8 N1 V$ c$ A0 K1 U; g
  23. */
    * }. n2 S: T* ?# k3 Q
  24. 6 o9 H/ F! C0 ]' Y' |
  25. #include <linux/module.h>9 ?& O# Y/ q4 |- e; Q* h
  26. #include <linux/init.h>8 P$ O3 J) v* `* ~
  27. #include <linux/errno.h>. }- r, g6 T* B3 u1 W) ~8 C
  28. #include <linux/types.h>: P$ b6 E. A# z  w9 M8 }( f
  29. #include <linux/interrupt.h>) @/ D: D0 }+ M% F4 ~
  30. #include <asm/io.h>0 O8 I5 x5 s8 \: [* O1 e
  31. #include <linux/moduleparam.h>: p. n  O) q& a$ Y' d+ u" s
  32. #include <linux/sysctl.h>
      d$ O' ?! o1 t
  33. #include <linux/mm.h>
    1 {) y# f; \+ y3 X& k" j9 C
  34. #include <linux/dma-mapping.h>
    8 q  p. C& W  e! i. V# D/ Q

  35. ! p5 F- B- C* y  H
  36. #include <mach/memory.h>
    ) g1 N! h! ]1 _3 C6 b
  37. #include <mach/hardware.h>6 I8 Q" \% W0 {  C6 @" m6 _+ X
  38. #include <mach/irqs.h>9 j/ K! P# b/ T$ j# u4 p6 Z
  39. #include <asm/hardware/edma.h>4 D- g& i, }0 q( N; z3 W0 g

  40. 4 Y3 {, @6 q( f3 p9 j$ Z- c
  41. #undef EDMA3_DEBUG- i$ [7 R# ~# K9 `2 J  s; U" k7 K
  42. /*#define EDMA3_DEBUG*/
    + G+ `7 z, x1 i/ Y' ^

  43. ' A& Z  ?4 d1 p& L( G) |+ b
  44. #ifdef EDMA3_DEBUG
    + G# t' _" m& `+ }- d! q* H9 U
  45. #define DMA_PRINTK(ARGS...)  printk(KERN_INFO "<%s>: ",__FUNCTION__);printk(ARGS)
    3 y+ {4 e% S7 D9 Z  j9 I# r* O
  46. #define DMA_FN_IN printk(KERN_INFO "[%s]: start\n", __FUNCTION__)- @/ t* r7 b" k3 ^/ P9 S
  47. #define DMA_FN_OUT printk(KERN_INFO "[%s]: end\n",__FUNCTION__)
    * [7 M7 P, {5 D9 E% d
  48. #else
    * b, ^; I$ l# r) A, s8 r
  49. #define DMA_PRINTK( x... )$ l9 }5 Q4 X& V" Q5 r2 j* L5 O
  50. #define DMA_FN_IN
    # ?9 A* U; y5 p& W+ d
  51. #define DMA_FN_OUT: k5 C$ t* J+ B) B. Z$ B- @
  52. #endif. X& o% }- Q- J; i0 d: d# k

  53. 2 Z6 r# M1 k* q, ^6 @
  54. #define MAX_DMA_TRANSFER_IN_BYTES   (32768), t! O* E, o  P: E7 B; H- @. X
  55. #define STATIC_SHIFT                3
    4 d: {' r+ ~! j' R0 W/ q. R+ F
  56. #define TCINTEN_SHIFT               202 ~5 y) b* @9 c' c4 F# ~$ X1 C( z
  57. #define ITCINTEN_SHIFT              21
    2 a2 v3 K0 Z) w
  58. #define TCCHEN_SHIFT                22, [; |" S/ q7 b+ R
  59. #define ITCCHEN_SHIFT               23, J+ l# X) e* m
  60. ; n5 ?7 |9 o4 l; q, L' e
  61. static volatile int irqraised1 = 0;
    9 B) O9 g! ?# J7 o) j. x
  62. static volatile int irqraised2 = 0;
    4 p1 Z$ Z+ D) [) N3 ]7 r
  63. 2 B8 e! C* R# p; |) U
  64. int edma3_memtomemcpytest_dma(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    . U7 {4 g  Y2 s! R
  65. int edma3_memtomemcpytest_dma_link(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);
    ; V! F7 i5 j: I/ m; t
  66. int edma3_memtomemcpytest_dma_chain(int acnt, int bcnt, int ccnt, int sync_mode, int event_queue);4 \+ ?9 a: K! S7 v
  67. ) `7 g6 Q3 m# S* S
  68. dma_addr_t dmaphyssrc1 = 0;3 f, x8 ]2 a, {8 ^
  69. dma_addr_t dmaphyssrc2 = 0;6 p3 p2 u. G5 d' z
  70. dma_addr_t dmaphysdest1 = 0;
    : _2 H0 q- e+ i
  71. dma_addr_t dmaphysdest2 = 0;
    " l5 {1 x& }! W* R

  72. , e( U9 k! J+ k
  73. char *dmabufsrc1 = NULL;3 L5 {9 \# c* }! n* E& q! R
  74. char *dmabufsrc2 = NULL;9 Q( }' _6 p! G  t7 K
  75. char *dmabufdest1 = NULL;3 q7 f1 h/ w8 y0 q6 c. \8 \% I6 s
  76. char *dmabufdest2 = NULL;
    3 H: I7 ?8 a9 p2 H

  77. & l6 ]6 k- j' i( Y
  78. static int acnt = 512;
    8 v% w& ?$ _' }( r
  79. static int bcnt = 8;
    # j' H1 Q+ y* a& V- B) }
  80. static int ccnt = 8;
    " e0 z& ?6 x7 x- F1 x

  81. ( G8 \1 \7 E9 N1 i
  82. module_param(acnt, int, S_IRUGO);+ x- c2 f4 i1 ~& _( Z, h
  83. module_param(bcnt, int, S_IRUGO);: p  i: B* v2 W! L* j
  84. module_param(ccnt, int, S_IRUGO);
复制代码
. i2 K6 g5 P' m% |8 c* z! W& _
8 |$ l0 I3 T- t* y/ p% g
      这是在TI上找到的一个针对Davanci处理器简单的EDMA3驱动程序测试例程的一部分,我在编译的过程中是用
" a4 u5 [2 {9 r$ ^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这个命令来链接库文件进行编译,但是报的错误特别多,我又试着一个函数一个函数往进加,仍然是很多错误。
& a, M8 }% ]# v0 @9 e% z# ^     我想问一下如何用一个简单的程序来测试一下EDMA3的驱动。
$ X! r6 M* q0 R, w$ X# U- s) m" ]$ r0 K9 ?! ~" o: v
% p2 \+ k$ h6 Z7 x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖
回复

使用道具 举报

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

本版积分规则

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

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

GMT+8, 2026-3-15 18:19 , Processed in 0.041097 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2015 Comsenz Inc.

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