EDN首页   博客首页 用户登陆  |  注册
aaa
发表于 2008/6/26 11:24:10

1

关于投票

ARM9开发板入门:对S3C2410数据手册中DMA部分的解读

ARM9开发板入门:对S3C2410数据手册中DMA部分的解读

深圳龙人计算机嵌入式系统开发中心专业提供嵌入式开发技术服务和嵌入式产品如ARM9开发板和XScale开发板、ARM9核心板、ARM9学习板、ARM工控板及ARM仿真器ARM开发工具等。

之所以要介绍DMA,因为它对性能太重要了!只有活用了DMA,CPU的性能才能上去!S3c2410有四个DMA,每个DMA支持工作方式基本相同,但支持的source Dest可能略有不同

本文龙人计算机为您解读S3C2410数据手册中DMA部分:

DMA请求源通过设置DCON[23]位SWHW_SEL值,选择硬/软件请求,并可进一步通过设置HWSRCSEL[26:24]位选择HW模式下的每个DMA通道的请求源

DMA工作过程使用三态FSM(有限状态机)进行操作,分三步操作:

Stage-1 初始状态,等待DMA请求,若请求到达,进入Stage-2。此阶段,DMA ACK和INT REQ都为0。

Stage-2 DMA ACK变为1,计数器CURR_TC从DCON[19:0]加载数值。注意:此时DMA ACK仍然为1,知道它随后在stage-3中被清0。

Stage-3 在此状态,对DMA进行原子操作的sub-FSM(子状态机)被初始化它从源地址读取数据然后写入目的地址(此操作需要考虑数据大小和传输尺寸)。

每一次DMA传输,必须先得到请求。

有两种请求模式:Demand和Handshake。差别在于是否等待DREQ信号无效:

Handshake模式下,DMA控制器在开始下一次传输之前要一直等待直到DREQ信号无效。如果DREQ信号无效了,DMA 控制器使DACK无效后继续等待下一次DREQ信号有效,之后又开始数据传输,且使DACK信号有效。

Demand模式下,DMA控制器不等待DREQ信号无效。如果传输完毕后DREQ还是继续有效,DMA控制器只是先无效DACK信号,然后又开始新一轮的传输。数据手册上建议对外部DMA请求使用Handshake模式,以避免不经意的开始新一轮数据传输。

S3C2410 ARM9 ARM9开发板 DMA ARM开发板

有两种传输模式:Single service和Whole service。差别在于三态FSM操作的Stage-3:

在Stage-3状态,对DMA进行原子操作的Sub-FSM被初始化,它从源地址读取数据然后写入目的地址(此操作需要考虑数据大小和传输尺寸)。

Whole service模式下,这种读、写操作重复进行直到计数器(CURR_TC)变为0;而Single service模式下读和写操作只进行一次。

数据手册上提醒注意:就算是Whole service传输模式,每一次sub-fsm的原子传输后DMA也会释放总线,然后再试图重新获得总线,以保证其他设备能够有机会获得总线使用权。

每次原子传输(Sub-FSM中)的单元尺寸分为Unit(1次读和写操作,单块数据)和Burst4(分别执行4次连续读、写操作,4块数据)。

在整体服务模式下,使用传统的DMA 计数器,状态机会停留在状态三,直到DMA计数器的值减为零,再回到状态一,等待下一次DMA请求。2410 DMA 数据传输模式:共有两种数据传输模式:

单位数据传输模式:执行一次读操作和一次写操作。

并发数据传输模式:执行四次读操作和四次写操作。2410 DMA 的基本时序:nXDREQ请求生效并经过2CLK周期同步后,nXDACK响应并开始生效,但至少还要经过3CLK的周期延迟,DMA控制器才可获得总线的控制权,并开始数据传输。2410 DMA 的两种协议模式:请求模式:If XnXDREQ remains asserted, the next transfer starts immediately. Otherwise it waits for XnXDREQ to be asserted.

握手模式:If XnXDREQ is deasserted, DMA deasserts XnXDACK 

深圳龙人嵌入式产品事业部是国内最强最精最专业的开发板集散地包括ARM开发板、ARM9开发板、Xscale开发板、2410开发板(ARM9)2440开发板(ARM9)、44B0X开发板(ARM7)、DSP开发板、单片机开发板、FPGA开发板、CPLD开发板等各类精品开发板!网址:http://www.armlab.net

联 系 电 话:+86-0755-83346939  83662100   余小姐

销 售 Email:beijingshenzhen@126.com

联 系 地 址: 深圳市福田区福虹路世界贸易广场B座13F   邮 编:518033

系统分类: ARM  |  用户分类: ARM9开发板  |  标签: 无标签  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(478) | 回复(0)

发表于 2008/5/9 11:15:08

2

关于投票

ARM9系列开发板学习——S3C2410开发板上通过串口实现输出

 

ARM 9 系列 开发板学习——S3C 2410开发板上通过串口实现 输出  

一、 S3C 2410开发板上通过串口实现 输出的 目的

   到目前为止我们所编写的程序都是直接烧到裸板( S3C 2410开发板 )上运行,没有借助操作系统,如果哪个环节出错了,就只能揣测代码的逻辑,无法借助GDB调试,这无形增加了编写代码的难度,如果任意时刻我们能把某个变量的值打印出来多好啊,你也许有同样的困惑,上一个实验我们对 UART 串口编程实现了对超级终端接收和发送数据,也许我们可以编写一个类似 C 语言里的 printf,作用就是向上位机的超级终端发送我们指定的任何数据。 下面龙人就教你学习 ARM 9 系列 开发板 ——S3C 2410开发板上通过串口实现 输出。

二、 S3C 2410开发板上通过串口实现 输出的 代码

   很多代码是在前面几个实验的基础上进行整理复用之,更多细节请参考前面随笔,这里

仅附简略注解。

ARM9  ARM9开发板   S3C 2410     S3C 2410开发板  嵌入式开发

   @ 文件 head.s

   @ 作用:关闭看门狗、SDRAM 的初始化设置、搬移 Nand Flash 4K 以后

   @ 的代码到 SDRAM 的指定位置、执行 SDRAM 中的代码

本文代码省略,有需要的请进龙人 嵌入式系统开发 网站

三、编译、烧写、测试

   Make 一下就会生成我们要的文件 main, 将其通过 JTAG 烧入 Nand Flash。用超级终

连接到开发板,注意波特率设为 57600,数据位 8,无奇偶校正,停止位1,无数据流控制。现在 Reset 一下的开发板,然后静静的等待吧,生成的二进制文件 main 有 39K 大呢,要等它完全复制到 SDRAM 至少要两三分钟...之后,在超级终端上是不是出现了字符串:

     Hello,Embeded!

     10

龙人计算机 作为最专业的嵌入式系统开发商和ARM开发板供应商专业提供以三星S3C2440、S3C2410和S3C44B0处理器为核心的ARM9开发板及ARM7开发板并提供工业PDA、手持POS、GPS等各种嵌入式终端设备的ARM解决方案。网址: http://www.szarm.com

系统分类: ARM  |  用户分类: ARM9开发板  |  标签: 无标签  |  来源: 原创  | 

点击查看原文

发表评论 阅读全文(389) | 回复(0)

Total , Page /