嵌入式系统设计课程大作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
嵌入式系统设计课程大作业
2012年上学期嵌入式系统设计课程大作业
1、叙述下列相关名词的含义
ARM、xscale、PXA255、RISC、体系结构
答:1)ARM:英国的一家公司;时下流行的一种体系结构。
2)XScale:ARM架构v5TE指令集的CPU。
3)PXA255:XScale的内核版本。
4)RISC:Reduced Instruction Set Computing,即精简指令集,一种CPU 的设计概念;与之相对的是CISC,即复杂指令集
5)体系结构:嵌入式系统硬件与软件的衔接;它确定嵌入式系统设计的部件、部件功能、部件间借口的设计,并集中于嵌入式系统的核心部分——处理器的运算与内存的存取。
2、画出嵌入式硬件系统组成的模块结构图
3、叙述基于linux的嵌入式平台的搭建过程
答:Linux嵌入式平台的搭建符合嵌入式平台搭建的一般过程,但是具体到Linux 嵌入式平台,又有些许不同,其搭建过程如下:
1)处理器以及硬件开发平台的选择
以处理器为主,结合考虑硬件平台的情况。处理器考虑的问题包括应用类型及I/O接口、主频和功耗、对不同类型存储器的支持、封装等;硬件平台的选择和设计包括内存和外围存储器、输入输出接口以及设备等几项主要内容。
2)操作系统的选择
由于已经选取了Linux操作系统,因此此处主要是内核版本的选取以及对内核功能的裁剪。
3)开发环境的选取
即开发工具的选取,主要是指开发软件的选取,比如常用的minicom。
4)开发实施
首先,Bootloader的烧制。目的是对硬件系统基本功能的支持,比如串口通信。其次,内核文件的制作。接下来,内核文件的拷贝。此时,可以通过串口或者网口实施传输,能够大幅度提高传输速度。最后,在主机使用开发软件,完成对硬件系统的开发工作。包括硬件驱动程序、上层的应用程序、系统的集成与调试等。
4、如下为xscale处理器的内核框图:
简述内核框图中每个模块的名称及指标。
答:1)Instruction Cache:指令Cache;大小32KB,32路,支持线性锁定2)Micro-Processor:微处理器;七级流水
3)Data Cache:数据Cache;最大支持32KB,32路
4)Data Ram:数据Ram;最大支持28KB
5)Mini-Data Cache:迷你数据Cache;大小2KB,2路
6)Branch Target Buffer:分支目标缓存;128入口
7)IMMU/DMMU:指令/数据存储管理单元;32路,全相关,支持锁定
8)Fill Buffer:填充缓存;4~8入口
9)Performance Monitoring:功能显示器
10)Debug:硬件中断断点记录
11)Power Management Control:电源管理控制
12)MAC:乘加单元;40位累加/累乘,16位单指令多数据流操作,16*32
位操作单周期支持
13)Write Buffer:写缓存;8入口,支持合并操作
14)JTAG:边界扫描技术;支持JTAG操作
5、下述英文为BTB模块功能的详细介绍,阅读后说明该模块的作用。
The BTB stores the history of branches that have executed along with their targets. Figure 5-1 shows an entry in the BTB, where the tag is the instruction address of a previously executed branch and the data contains the target address of the previously executed branch along with two
答:分支目标缓存目标地址历史的分支,具体到每个入口(表项),由Tag和数据组成。Tag是以前执行分支的指令地址,数据包括以前执行分支的目标地址,以及2比特的历史信息。分支目标缓存取得当前的指令地址,检查这个地址是否是以前执行过的分支。它用现行指令的位[8:2]来选择分支目标缓存中的标志Tag,并与现行指令的位[31:9,1]进行匹配。若匹配且历史位指出该分支过去常产生,则分支目标缓存中的数据(目标地址[31:1])作为下一条指令地址送至指令Cache。
6、下面是linux下的一个简单的设备驱动程序,写出linux设备驱动常用的数据结构,同时阅读下面代码,请给出测试程序中的每条语句加以注释。
设备驱动程序Keypad.c的源代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define LEDnKEY_MAJOR 251
#define KEYPAD_NAME "X-Hyper250 Keypad"
#define KEYPAD_VERSION "Version 0.1"
#define EXT_KEY_CS EXT_PORT2
#define EXT_LED_CS EXT_PORT3
#define LED_SHOW 10
/*EXT_KEY_CS 为向外部LED进行数值设定,它定义在其它头文件里*/
void led_off_on() /**/
{
int i;
EXT_LED_CS = 0xff;