




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
嵌入式课程设计 系别:计算机与通信工程学院 班级:通信工程08-1班 姓名:# 学号:33333333333郑州轻工业学院计算机与通信工程学院2011年12月郑州轻工业学院课 程 设 计 任 务 书题目 dma传送编程 专业、班级 通信工程08-1学号 3333333姓名 333 主要内容、基本要求、主要参考文献等:1、主要内容(1) 编写单字节方式、双字节方式和四字节方式常规内存拷贝及时间检测程序(2) 编写dma方式内存拷贝及时间检测程序(3) 比较dma方式内存拷贝及常规内存拷贝的效率2、基本要求(1) 掌握s3c44b0 dma控制器的使用(2) 掌握dma软件编程方法3、主要参考文献【1】马忠梅,马广云,徐英惠,田泽.arm嵌入式处理器结构与应用基础.北京:北京航天航空大学出版社,2002【2】田泽.嵌入式系统开发与应用实验教程.北京航空航天大学出版社,2004【3】周立功.arm微控制器基础与实战m.北京航天航空大学出版社,2003完 成 期 限: 指导教师签名: 张涛 张彦 课程负责人签名: 张涛 张彦 目 录一、课程设计的基本任务-4二、课程设计的基本要求-4三、预备知识-4四、实验设备-4五、基础知识-4六、课程设计说明书-7七、程序代码-8dma 传送编程.一、课程设计的基本任务了解dma传送原理掌握s3c44b0 dma控制器的使用掌握dma软件编程方法二、课程设计的基本要求编写单字节方式、双字节方式和四字节方式常规内存拷贝及时间检测程序编写dma方式内存拷贝及时间检测程序比较dma方式内存拷贝及常规内存拷贝的效率 三、预备知识了解adt集成开发环境的基本功能了解dma的原理以及处理步骤四、实验设备jx44b0教学实验箱adt1000仿真器和adt ide集成开发环境 串口连接线五、 基础知识 直接数据存储 - dma dma方式 当高速外设要与系统内存或者要在系统内存的不同区域之间,进行大量数据的快速传送时,查询方式和中断方式可能不能满足要求直接存储器存取(dma)就是为解决这个问题提出的采用dma方式,在一定时间段内,由dma控制器取代cpu,获得总线控制权,来实现内存与外设或者内存的不同区域之间大量数据的快速传送典型的dma控制器(以下简称dmac)的工作电路 dma数据传送的工作过程1) dmac发出dma传送请求2) dmac通过连接到cpu的hold信号向cpu提出dma请求3) cpu在完成当前总线操作后会立即对dma请求做出响应cpu的响应包括两个方面:cpu将控制总线、数据总线和地址总线浮空,即放弃对这些总线的控制权cpu将有效的hlda信号加到dmac上,以通知dmac cpu已经放弃了总线的控制权4) cpu将总线浮空,即放弃了总线控制权后,由dmac接管系统总线的控制权,并向外设送出dma的应答信号5) dmac送出地址信号和控制信号,实现外设与内存或内存之间大量数据的快速传送6) dmac将规定的数据字节传送完之后,通过向cpu发hold信号,撤消对cpu的dma请求。cpu收到此信号,一方面使hlda无效,另一方面又重新开始控制总线,实现正常取指令、分析指令、执行指令的操作。dma传送方式i/o接口到存储器存储器到i/o接口存储器到存储器i/o接口到存储器的传送当进行由i/o接口到存储器的数据传送时,来自i/o接口的数据利用dmac送出的控制信号,将数据输送到系统数据总线d0d7上,同时,dmac送出存储器单元地址及控制信号,将存在于d0d7上的数据写入所选中的存储单元中。这样就完成了由i/o接口到存储器一个字节的传送。同时dmac修改内部地址及字节数寄存器的内容。存储器到i/o接口与前一种情况类似,在进行这种传送时,dmac送出存储器地址及控制信号,将选中的存储单元的内容读出放在数据总线d0d7上,接着,dmac送出控制信号,将数据写到规定的(预选中)端口中去,而后mdac自动修改内部的地址及字节数寄存器的内容 s3c44b0的dma控制器s3c44b0集成了4个通道的dma控制器: 两个zdma控制器zdma0/1:可以用于存储器到存储器、储存器到i/o设备、i/o设备之间的dma传送; 两个bdma控制器bdma0/1:用于储存器与i/o设备之间的传输。s3c44b0中与dma控制器有关的寄存器zdma0/1控制寄存器 zdma0起始地址、目的地址寄存器 dma计数器寄存器zdma0/1控制寄存器 zdma0起始地址、目的地址寄存器 dma计数器寄存器 六、课程设计说明书本实验通过dma方式实现存储器到存储器间的数据传送,并将其与常规的内存拷贝操作进行比较 拷贝动作的计时处理采用定时器进行计时处理,采用函数timer_start启动计时处理,参数divider 表示定时时间间隔,0 : 16 us1 : 32 us2 : 64 us3 : 128 us操作完成时调用timer_stop停止定时器计数,其返回值为计数值,该值乘以时间间隔(128us)即为计时时间 timer_start(3);/* 128 us */ time=timer_stop();/* 停止定时器 */ uart_printf(copy bytes :time=%fn,time*128e-6);常规的内存拷贝操作 字节拷贝*(unsigned char*)(dstaddr) = *(unsigned char*)(srcaddr);双字节拷贝*(unsigned short*)(dstaddr) = *(unsigned short*)(srcaddr);字节拷贝*(unsigned int*)(dstaddr) = *(unsigned int*)(srcaddr);dma的内存拷贝操作 清除传输完毕标志zdma0done=0;设置dma传输的起止地址和长度rzdisrc0=srcaddr|(dw30)|(128);/* dw 为dma传输宽度 */rzdides0=dstaddr|( 230)|(128);rzdicnt0=length |( 228)|(126)|(322)|(1内存 dma方式传输数据 */* 注意: 学习该实验之前请先学习interrupt中断处理实验 */*/* 包含文件 */#include 44b.h#include 44blib.h#include rtc.htypedef (*isr_routine_entry)(void);#define printf uart_printf/* functions */void zdma0(int srcaddr,int dstaddr,int length);void zdma0done(void);void test_zdma0(void);void isr_dma0(void);/* globals */volatile int zdma0done;void isrirq() _attribute_ (interrupt(irq);/*/ function name: isrirq/ description : 非矢量方式下中断的查表处理/中断地址表位于0x0c7fff00开始的256字节/ return type: void/ argument : void*/void isrirq()int count = 0;unsigned int isr_pending;unsigned int isr_mask = 0x00000001;unsigned int isr_mask_set = rintmsk;isr_routine_entry isr_routine_entry = (isr_routine_entry)0x0;_asm_(stmfd sp!, r1,r4-r8 save r1,r4-r10 nnop n);isr_pending = (rintpnd & isr_mask_set);while(isr_mask)if(isr_pending&isr_mask)isr_routine_entry = (isr_routine_entry)(*(int*)(handleadc+count);break;count+=4;isr_mask = 1;if(isr_routine_entry) (*isr_routine_entry)();_asm_ (ldmfd sp!, r1,r4-r8 restore r1,r4-r10 nnop n);/*/ function name: init_interrupt_handler/ description : 非矢量方式下中断向量表初始化处理/ return type: void/ argument : irq_handler/ 中断处理函数入口*/void init_interrupt_handler(unsigned int irq_handler) int i;rintpnd = 0x00000000;/* 清除所有未决的中断*/ri_ispc = 0x03ffffff; for( i = 0; i 内存 dma方式传输数据/ 传输完毕引发dma中断/ 注册中断源:bit_zdma0/ return type: int/ argument : void*/int main(void)uart_select(0);uart_init(mclk, 115200); uart_printf(dma test programn); rintcon=0x7; /* non-vect,irq disable,fiq disable*/init_interrupt_handler(unsigned int)isrirq);install_isr_handler(handlezdma0, (void*)isr_dma0); rintmod=0x0;/*设置所有中断为irq模式*/ rintmsk=(0x07ffffff&(bit_global|bit_zdma0);/* 使能tick中断*/ rintcon=0x5;/* 打开irq模式的中断*/ test_zdma0(); while(1);/*/ function name: test_zdma0/ description : test zdma 0/ return type: void/ argument : void*/void test_zdma0(void) unsigned char *src, *dst; int i; unsigned int memsum; uart_printf(zdma0 mem2mem testn); dst=(unsigned char *)malloc(0x80000); src=(unsigned char *)malloc(0x80000); /* 将dst区域设置为非cacheable区域,关闭cache */ rncachbe1=(unsigned)dst+0x100000)12) +1 )12); uart_printf(dst=%x,src=%xn,(int)dst,(int)src); zdma0(int)src,(int)dst,0x80000); free(src); free(dst);/*/ function name: zdma0/ description : 以三种不同的方式进行数据拷贝,检查其时间消耗/ return type: void/ argument : srcaddr,拷贝数据的起始地址/ dstaddr,拷贝数据的目的地址/ length, 拷贝数据的长度*/void zdma0(int srcaddr,int dstaddr,int length) int time; /* 将目标地址设置为非cache区 */ rncachbe1 = (unsigned)dstaddr+0x100000)12) +1 )12); /* 测试单字节方式的拷贝时间 */ /* 启动定时器,精度128us,用于计时 */ timer_start(3); for( time = 0; time length; time+) *(unsigned char*)(dstaddr+time) = *(unsigned char*)(srcaddr+time); /* 返回当前定时计数器中的值 */ time=timer_stop(); /* 输出拷贝的时间 */ uart_printf(copy bytes :time=%fn,time*128e-6); /* 测试双字节方式的拷贝时间 */ timer_start(3); for( time = 0; time length; time+=2) *(unsigned short*)(dstaddr+time) = *(unsigned short*)(srcaddr+time); time=timer_stop(); uart_printf(copy short words :time=%fn,time*128e-6);/* 测试字节方式的拷贝时间 */ timer_start(3); for( time = 0; time length; time+=4) *(unsigned long*)(dstaddr+time) = *(unsi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 46101-2025航空航天用MJ螺纹十二角头高强度螺栓
- 2025年生物医药行业创新研发技术与市场前景报告
- 2025年环境保护行业环境保护技术前景研究报告
- 2025年可穿戴科技产业市场前景展望报告
- 2025年汽车行业自动驾驶技术应用前景探讨报告
- 2025年机械制造行业智能制造技术发展前景研究报告
- 2025年人工智能助理行业AI助手应用与市场前景研究报告
- 2025年家居建材行业环保建材市场前景研究报告
- 国家事业单位招聘2025国家自然科学基金委员会招聘拟聘(二)笔试历年参考题库附带答案详解
- 云南省2025云南农业大学第一批招聘编制外人员(12人)笔试历年参考题库附带答案详解
- 产品品质及售后无忧服务承诺书3篇
- 2025年第11个全国近视防控宣传教育月活动课件
- 二年级防溺水教案
- 2025年养老产业市场营销策略调整分析报告
- 部编版二年级道德与法治上册第4课《欢欢喜喜庆国庆》精美课件
- 潍坊市2026届高三开学调研监测考试生物试题及答案
- 三维波动方程双变网格有限差分并行模拟方法:理论、实践与优化
- 好风起二部合唱简谱致远音乐
- 异姓兄妹结拜协议书范本
- 膝关节炎科普知识课件
- 2025广西公需科目考试答案(3套涵盖95-试题)一区两地一园一通道建设人工智能时代的机遇与挑战
评论
0/150
提交评论