裸机系列——DMA工作

发布者:RainbowGarden最新更新时间:2022-04-29 来源: eefocus关键字:裸机系列  S3C2410 手机看文章 扫描二维码
随时随地手机看文章

DMA 优点是其进行数据传输时不需要 CPU 的干涉,可以大大提高 CPU 的工作效率。


DMA 大容量数据传输中非常重要,比如图像数据传输, SD 卡数据传输, USB 数据传输等等。


S3C2410 有四个 DMA ,每个 DMA 支持工作方式基本相同,但支持的 source Dest 可能略有不同。


那么怎么使用 DMA 呢, S3C2410 内部集成了 DMA 控制器,我们只需要简单的配置一下寄存器就可以实现 DMA 的传输了。


步骤与要点:

1.数据从哪里来,到哪里去?

使用 DMA 当然首先我们要知道数据的流向, DISRCx 寄存器是 DMA 初始源寄存器存放了数据的源地址。 DIDSTx 是 DMA 的初始目的寄存器,应该存放数据的目的地址。

 

2.数据走得什么总线?地址是否是固定的?

我们还要知道源与目的数据存储设备是在什么总线上( AHB 系统总线,一般是高速的比如内存, APB 外围总线低速的,比如 SD , UART );

以及数据传输结束以后起始地址还原到发送前的起始地址呢,还是在现在的末尾 +1 做为新的起始地址。


这些设置在 DISRCCx 与 DIDSTCx 两个寄存器里面配置。

 

3.数据以什么方式传输?源与目的是什么设备?要不要自动重载?

需要确定数据的传输方式有请求还是握手(推荐使用 HANDSHAKE ) , 根据上面的总线确定与什么时钟同步( HCLK , PCLK ),是单元传输还是突发传输,是以字节传输还是字传输,是否重载。是单服务(只发送一次)还是多服务(不停循环发送),以及数据的传送大小。


选择源与目的设备,这里 DMA 控制器支持:

    Ch0:nXDREQ0,UART0,SDI,Timer,USB EP1

    Ch1: nXDREQ1,UART1,I2SSDI,SPI0,USB EP2

    Ch2:I2SSDO,I2SSDI,SDI,Timer, USB EP3

    Ch3:UART1,SDI,SPI1,Timer, USB EP4

最后还要确定中断是不是传输结束发生( CURR_TC 记数是不是 0 )。

这些都在 DCONx 中设置。


4.怎么开始传输 DMA 和停止 DMA ,这些在 DMASKTRIG 中设置。

 

下面是 DMA 在 SD 卡中使用的一段示例:

 

SD 卡读的 DMA 设置:

pISR_DMA0=(unsigned)DMA_end; //DMA 中断服务函数入口地址,一次 DMA 传送结束发生 rINTMSK = ~(BIT_DMA0); // 开 DMA 中断

rDISRC0=(int)(Tx_buffer);  // 源地址在内存   就是从内存读数据到 SD 卡

rDISRCC0=(0<<1)+(0<<0);  // 内存的总线是  AHB,  地址是自动增加 inc

rDIDST0=(U32)(SDIDAT); //  目的地址 SD 卡

rDIDSTC0=(1<<1)+(1<<0);  //  在总线 APB,  地址是固定的因为 SD 的 FIFO 是固定大的   

rDCON0=(1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(2<<20)+128*block;

//handshake 握手模式 ,  与  PCLK 同步 , 发送完产生中断 ,  单元传输 ,  单服务 , SDI

// 不自动重载 , 每次发送一个字 , 发送大小

rDMASKTRIG0=(0<<2)+(1<<1)+0;  // 不停止 , DMA0 channel  启动 , 不用 SW 触发

 

SD 卡写的相应代码

pISR_DMA0=(unsigned)DMA_end;

rINTMSK = ~(BIT_DMA0);

rDISRC0=(int)(Tx_buffer);                                 

rDISRCC0=(0<<1)+(0<<0);                            

rDIDST0=(U32)(SDIDAT);                              

rDIDSTC0=(1<<1)+(1<<0);                             

rDCON0=(1<<31)+(0<<30)+(1<<29)+(0<<28)+(0<<27)+(2<<24)+(1<<23)+(1<<22)+(2<<20)+128*block;                                                         

rDMASKTRIG0=(0<<2)+(1<<1)+0;


关键字:裸机系列  S3C2410 引用地址:裸机系列——DMA工作

上一篇:ARM汇编指令格式及规则
下一篇:裸机系列——DMA总结

推荐阅读最新更新时间:2024-11-11 12:40

基于S3C2410-ARM-Linux静态映射分析
s3c2410_gpio_cfgpin(S3C2410_GPB0, S3C2410_GPB0_TOUT0); 我们可以这样控制外设寄存器,想过它怎么实现的吗? 首先分析下 struct machine_desc (include/asm-arm/Mach/Arch.h) 这是一个非常重要的结构体,内核通过 machine_desc 来控制体系架构相关部分的初始化,包括map_io,init_irq,init_machine,pthys_io,timer等 struct machine_desc { /* * Note! The first five elements are
[单片机]
s3c2410汇编启动代码与中断跳转分析
最开始的代码,大家都很熟悉 ,最基本的中断跳转 b ResetHandler b HandlerUndef ;handler for Undefined mode b HandlerSWI ;handler for SWI interrupt b HandlerPabort ;handler for PAbort b HandlerDabort ;handler for DAbort b . ;reserved b HandlerIRQ ;handler for IRQ interrupt b HandlerFIQ ;handler for FIQ interrupt 跳转的标号是一系列的宏 LTORG HandlerFIQ
[单片机]
基于S3C2410的辅助倒车数字图像系统设计
1 、引言   据统计,由于车后盲区所造成的交通事故在中国约占30%,美国20%。前两代倒车辅助产品,一种是倒车喇叭,一种是倒车雷达。前者只能提醒路人自行躲闪,而司机却一无所知,固定的障碍物更是无法探测,起到的作用微乎其微,后者虽能把固定的障碍物通过报警的形式告知司机,但司机还是无法判断障碍物的确切位置,更不能探测地坑或低矮障碍物。   目前,国内外的研究趋势是在倒车雷达的基础上采用数字图像处理技术,利用强大的嵌入式处理器,开发用于检测车后物距和监视车后图像的优点相结合的车载可视倒车装置。   因此本文提出一种基于S3C2410的辅助倒车系统设计,该系统不但使驾驶员可以在车内观察到汽车车尾的真实场景,而且可以通过系统所带
[单片机]
基于<font color='red'>S3C2410</font>的辅助倒车数字图像系统设计
Linux驱动:s3c2410/s3c2440 ts驱动分析 之二
一,前言 前面结合“平台总线-设备-驱动”模型分析了ts(触摸)驱动的加载过程,现在进入驱动程序分析下其具体的实现。涉及到输入子系统详解、input核心层程序分析、evdev事件处理层程序分析、ts设备驱动层程序分析以及s3c2440的ADC转换和触摸控制器的操作。 二,涉及的寄存器 三,调用probe函数 根据上一篇的分析,驱动层通过platform_driver_register注册后,会调用到该驱动层的probe函数。 四,s3c2410ts_probe函数分析 4.1 硬件寄存器设置 4.1.1 获取设备参数 struct s3c2410_ts_mach_info *info; info = ( str
[单片机]
ucos在s3c2410上运行过程整体剖析之基础知识
用户模式(user模式),运行应用的普通模式; 快速中断模式(fiq模式),用于支持数据传输或通道处理; 中断模式(irq模式),用于普通中断处理。 超级用户模式(svc模式),操作系统的保护模式 异常中断模式(abt模式),输入数据后登入或预取异常中断指令 系统模式(sys模式),是操作系统使用的一个有特权的用户模式 未定义模式(und模式),执行了未定义指令时进入该模式 外部中断,异常操作或软件控制都可以改变中断模式。大多数应用程序都时是在用户模式下运行。进入特权模式是为了处理中断或异常请求或操作保护资源服务的。 这些工作模式是芯片硬件提供的程序运行的不同环境,不同的模式有不同的硬件访问权限,使用不同的寄存器。这
[单片机]
ucos在<font color='red'>s3c2410</font>上运行过程整体剖析之基础知识
裸机系列——s3c2440lcd汉字显示
1、lcd裸机写好后在来弄lcd的字符显示就容易多了,理解字符其实就是一副图,比如16*16的汉子显示就是长宽16的一个正方形中用点来显示一个汉字,这样就只有弄清楚哪些点是要显示的就行了,比如第一行要显示一个点我们就可以 xxxxxxxoxxxxxxxx 现在只有把中间的圈显示其他的不显示这个点就出来了,那好我们就可以用一个数组来保存哪些是要显示的点,每一位表示是否要显示,当然这一位要显示什么颜色就是前面lcd的内容了。这里只是说明这个点要不要显示的问题,具体用什么颜色显示是可以设置的。 2、对于字模数组的提取现在已经有很多好用的字模提取软件,字库软件的,到网上搜一个然后就很容易了,只要输入想要显示的汉字软件就帮你把字模的数组
[单片机]
基于S3C2410的CDMA无线数据传输方法
1 引言 Linux嵌入式系统,具有高性能、低功耗、体积小、可靠性高、源代码开放等优点,逐渐被越来越多的人认可并使用,原先只有在PC机上实现的功能,如今也被移植到了更加方便的嵌入式系统上。近些年嵌入式系统已经应用十分广泛,而随着网络特别是无线网络的兴起和发展,将更加快捷方便的无线网络与嵌入式系统相结合更成为了当前研究的热点。CDMA(码分多址)无线网络具有覆盖面广、速度稳定、效率高、成本低等优点,CDMA的网络速度最大可达200k/s。本文着重介绍了ARM9与CDMA无线网络相结合的,进行无线数据传输的方法。 2 软硬件平台设计 这里采用的是三星公司的基于S3C2410的高端ARM9处理器芯片,适用于高端手持设备和微型智能控制设备
[单片机]

推荐帖子

【IoT毕设】机智云物联网平台+arduinoNano控制板+全自动高效智能种树小车
摘要:针对目前人工种树效率低的问题,设计了一种全自助高效智能种树小车。介绍了装置的结构组成,剖析了装置的运动机理。通过SolidWorks三维软件对传动部件进行了结构设计。利用蓝牙模块实现了种植过程的信息传递、发送命令等,物联网机智云模块可以实时上报种植数据至云平台。制作了装置模型样机,试验测试结果表明:该装置完成一棵树的种植时间需要约8.45s,完成区域10m10m的土地种植时间需要约73.85s。装置完全实现了自动运树、挖坑、下树、填坑、浇水等功能,为树木自动种植领域的研究奠定了基础
毛球大大 RF/无线
交直流两用暗室安全灯
lorant 移动便携
【Follow me第二季第1期】入门任务+基础任务一
大家好,我是小神123,很荣幸能够入选【Followme第二季第1期】活动,作为活动参与者,跟着官方一起学习adafruitcircuitplaygrandexpress这款开发板。第一次参加【followme】活动,自己是一名电子爱好者,接着这次机会,可以让自己对编程有个更加深入的动手实践,大大提升自己的动手能力以及思维逻辑能力,同时再次感谢得捷电子给予此次机会。这款开发板AdafruitCircuitPlaygroundExpress是一体化设计板,具有处理器、
小神123 DigiKey得捷技术专区
有木PCB的QQ交流群?
论坛有没关于PCB的QQ交流群?这样有疑惑可以随时解决,各位有的话可以回帖给我~谢谢有木PCB的QQ交流群?
dirty PCB设计
综合报告求助 时间违规
Timingconstraint:DefaultperiodanalysisforClock\'pll_2clk_inst/CLKOUT1_BUF\'Clockperiod:2.813ns(frequency:355.492MHz)Totalnumberofpaths/destinationports:229/73-------------------------------------------------------------------
zsy5460 FPGA/CPLD
四创GPS定位lll型汽车行驶记录仪(附图)
GPS定位III型汽车行驶记录仪将汽车行驶记录仪、语音通话、语音图像、调度、导航、娱乐、防暴等功能融为一体的新款产品。您可以通过调度中心传来的信息,了解道路情况。在对道路不是很熟悉的情况下,通过电子地图,了解您身在何处,并且很容易就找到您想去的地方。您还可以在停车休息的时候听听歌,看看VCD(DVD),尽情地放松自己。当有紧急事件发生的时候,您可以触动报警装置,调度中心将立即获得您所在的位置信息和报警信息,并采取相应的措施。采用分体式设计(一体设计),现场语音图像传输方便管理调度人员了解现场情况
frozenviolet 汽车电子
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved