嵌入式系统设计大作业

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

嵌入式系统设计大作业

学号:14020520009 姓名:罗翔

1、叙述JTAG接口在嵌入式开发中的作用。

答:

(1)用于烧写FLASH

烧写FLASH的软件有很多种包括jatg.exe fluted flashpgm等等,但是所有这些软件都是通过jtag接口来烧写flash的,由于pc机上是没有jtag接口的,所以利用并口来传递信息给目标板的jtag接口。所以就需要并口转jtag接口的电路。

(2)用于调试程序

同时应该注意到jtag接口还可以用来调试程序。而调试程序(如ARM开发组件中的AXD)为了通过jtag接口去调试目标板上的程序,同样是使用pc的并口转jtag接口来实现与目标板的通信。这样,并口转jtag接口的电路就有了两种作用。

(3)仿真器

根据(1)和(2)的总结,并口转jtag接口的电路是两种应用的关键,而这种电路在嵌入式开发中就叫仿真器。并口转jtag接口的电路有很多种,有简单有复杂的,常见的仿真器有Wigger,EasyJTAG,Multi-ICE等。这些所谓的仿真器的内部电路都是并口转jtag接口,区别只是电路不同或使用的技术不同而已。

2、叙述嵌入式平台的搭建过程,以linux为例。

答:

1) 一:建立宿主机开发环境

建立交叉编译的环境即在宿主机上安装与开发板相应的编译器及库函数,以便能够在宿主机上应用开发工具编译在目标板上运行的Linux引导程序,内核,文件系统和应用程序

交叉编译:在特殊的环境下,把嵌入式程序代码编译成不同的CPU所对应的机器代码。

开发时使用宿主机上的交叉编译,汇编及链接工具形成可执行的二进制代码(该代码只能在开发板上执行),然后下载到开发板上运行

2) 下载和安装arm-Linux-gcc编译工具链下载最新的arm-Linux-gcc并解压至当前目录下

在系统配置文件profile中设置环境变量方法:直接在profile文件中加入搜索路径立即使新的环境变量生效:运行source命令,检查是否将路径加入到path,测试是否安装成功,

编译程序,测试交叉工具链

3) 配置超级终端minicom minicom是宿主机与目标板进行通信的终端:在宿主机Linux终端中输入:minicom-s或输入minicom然后按ctrl+A+O对超级终端minicom进行配置,再选择串口并配置串口,最后保存即可

4) 建立数据共享服务:NFS服务是Linux系统中经常使用的数据文件共享服务

5) 编译嵌入式系统内核:内核配置,建立依存关系,建立内核

6) 制作文件系统

3、给出现今有哪些用于嵌入式开发的芯片名称,他们分别是哪些公司的产品?

体系结构是什么?

S3C2410X基于ARM的Sumsang;

XscalePXA255/PXA270基于ARM的Intel;

摩托罗拉MC基于68k;

Power 601基于Power PC;

MIPS32Kc基于MIPS

4、现今较流行的嵌入式操作系统有哪些?

答:

(1) VxWorks

(2)wince

(3)linux

(4)android

(5)μC/OS-Ⅱ

5、PXA270嵌入式开发板的接口有哪些?

答:

全双工异步串行口和硬件流控制串行口,10M标准以太网接口10M/100M标准以太网接口,USB接口,红外通讯口,音频接口,存储卡口,视频和触摸屏接口摄像头接口,RTC时钟接口,调试接口,下载接口,电源接口。

6、请写出Nor Flash和Nand Flash的区别。

7、冯。诺依曼架构与哈佛架构的区别。

答:

他们的主要区别是计算机的存储结构和总线连接形式不同。在冯·诺依曼的结构中,存储器内部的数据存储空间和程序存储空间是合在一起的,他们共享存储器总线,即数据和指令在同一条总线上通过时分复用的方式进行传输,这种结构在高速运行时,不能达到同时取指令和取操作数的目的从而形成传输过程的瓶颈。

在哈佛总线体系结构的芯片内部,数据存储空间和程序存储空间是分开的,所以哈佛总线体系在指令执行时可以同时存取指令(来自程序空间)和取操作数(来自数据空间),因此具有更高的执行效率,修正的哈佛总线结构还可以在程序空间和数据空间之间相互传送数据。

8、单周期3级流水的情况下,第10个指令周期时,第几条指令执行结束?

答:

第七条

9、下面是linux下的一个简单的设备驱动程序,写出linux设备驱动常用的数据结构,同时阅读下面代码,请给出测试程序中的每条语句加以注释。

设备驱动程序Keypad.c的源代码:

#include //最基本的文件,支持动态添加和卸载模块。

#include //包含了文件操作相关struct的定义

#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;

for(i =0 ; i<8;++i)

{

EXT_LED_CS = ~((1 << i) & 0xff); //点亮相应LED灯

udelay(30000);//调用udelay函数来延迟

}

EXT_LED_CS = 0xff;

}

/*应用程序用open来打开设备文件,实际上调用驱动的lednkey_open()函数*/

int lednkey_open(struct inode *inode, struct file *filp)//打开设备文件

{

MOD_INC_USE_COUNT;//模块自身通过

return (0); /* success */

}

int lednkey_release(struct inode *inode, struct file *filp)//释放设备文件

相关文档
最新文档