2016年下学期嵌入式系统设计大作业

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

嵌入式系统设计大作业

1、叙述嵌入式系统开发过程中所要解决的两个问题。

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

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

体系结构是什么?

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

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

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

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

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

9、下面是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;

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

{

EXT_LED_CS = ~((1 << i) & 0xff);

udelay(30000);

}

EXT_LED_CS = 0xff;

}

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)

{

led_off_on();

MOD_DEC_USE_COUNT;

return (0);

}

ssize_t lednkey_read(struct file *filp, char *Putbuf, size_t length, loff_t *f_pos) {

unsigned short BottonStatus;

unsigned char Bottontmp = 0;

int i;

BottonStatus = ( EXT_KEY_CS & 0xff );

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

{

if( ((BottonStatus >> i) & 1) == 0 )

Bottontmp = (i+1);

}

copy_to_user( Putbuf, &Bottontmp, length);

return length;

}

ssize_t lednkey_write(struct file *filp, const char *Getbuf, size_t length, loff_t *f_pos)

{

int num;

unsigned char UsrWantLed;

copy_from_user( &UsrWantLed, Getbuf, length);

num = ( (UsrWantLed) & 0xff );

EXT_LED_CS = ~(1 << (num-1));

return (0);

}

int lednkey_ioctl(struct inode *inode, struct file *filp, unsigned int cmd,unsigned long arg)

{

switch(cmd)

{

case LED_SHOW:

{

if(arg)

led_off_on();

break;

}

}

return 0;

}

struct file_operations lednkey_fops = {

open: lednkey_open,

read: lednkey_read,

write: lednkey_write,

ioctl: lednkey_ioctl,

release: lednkey_release,

};

static int _init xhyper250_keypad_init(void)

{

int result;

result = register_chrdev(LEDnKEY_MAJOR, "lednkey", &lednkey_fops);

printf("%s %s initialized.\n",KEYPAD_NAME, KEYPAD_VERSION);

led_off_on();

return 0;

}

static void _exit xhyper250_keypad_exit(void)

{

unregister_chrdev( LEDnKEY_MAJOR, "lednkey" );

led_off_on();

}

module_init(xhyper250_keypad_init);

module_exit(xhyper250_keypad_exit);

测试文件的源代码如下:

#include

#include

#include

#include

#include

#include

相关文档
最新文档