当前位置:文档之家› 嵌入式考试题.1docx

嵌入式考试题.1docx

嵌入式考试题.1docx
嵌入式考试题.1docx

阅读以下说明和C语言代码,回答问题1至问题3,将解答填入答题纸的对应栏内。

【说明】

在实时系统中,许多控制软件需要将数据封装到一个数据结构中,以节省存储空间。对于位操作,使用汇编语言实现其访问比较容易,但会增加编程难度,因此现在普遍采用C语言实现。使用高级语言编程要特别注意结构的存储格式以及编译器的特性。本题所使用的编译器对变量按声明顺序分配地址。分析下面所示的C语言代码,回答以下问题。

1:typedef struct

2: { int A

3: char B : 8;

4: char C : 8;

5: char D : 8;

6: int F;

8: }radartype;

9: typedef struct

10: { unsigned int X;

11: unsigned int Y;

12: unsigned int Z;

14: } datatranstype;

15: radartype myRadarData[2]=

16: {{1, 'a', 'b', 'c', 512}, {2, 'x', 'y', 'z', 1024}};

17:

18:void main(void)

19:{ radartype *p;

20:datatranstype *q;

21:p = myRadarData;

22:q = (datatranstype *)p;

23: q++;

24:}

【问题1】

如果处理机按32位以大端方式(big_endian)编址,请在下图所示的存储器图表中填入myRadarData数据的存储内容(十六进制表示)。

【问题2】

在上面的程序中,第22行的语句执行完成后,下列语句的结果是多少?请将应填入(n)处的内容写在答题纸的对应栏中。

q->X = (1)0x00000001

q->Y = (2)0x61626300

q->Z = (3)0x00000200

若再执行一次q++,则下列语句的结果又是多少?请将应填入(n)处的内容写在答题纸的对应栏中。

q->X = (5)0x00000002

q->Y = (6)0x78797A00

q->Z = (7)0x00000400

在程序中,第22有的语句执行

q->X = 0x0001

q->Y = 0x6162

q->Z = 0x6300

q->U = 0x0200

若再执行一次q++,则下列语句的结果

q->X = 0x0200

q->Y = 0x7879

q->Z = 0x7A00

q->U = 0x0400

【问题3】

内存空间常划分为代码段(text)、数据段(data)、bss段(bss)、堆区(heap)和栈区(stack),那么程序中myRadarData数组的存储空间应分配在哪个段中?指针变量p、q应分配在哪个段中?

答:myRadarDate 数组的存储空间应分配在数据段,指针变量p,q应分配在栈区

阅读以下关于嵌入式C语言编程方面的问题,回答问题1至问题3。

【说明】嵌入式C语言编程中常涉及位运算、宏定义的问题,以及大端方式、小端方式的访问问题。

问题1:嵌入式系统中常要求用户对变量或寄存器进行位操作。下面的两个函数分别为设置和清除变量a的第10位。请使用下面的宏定义BIT10按要求对变量a进行相应的处理。在函数set_bit10中,设置变量a的第10位,在函数clear_bit10中,清除变量a的第10位。#define BIT10 (0x01<<10)

static int a;

void set_bit10(void)

{

(1)a|=BIT10 ; /*设置变量a的第10位

}

void clear_bit10(void)

{

(2)a&=~BIT10 ; /*清除变量a的第10位

}

问题2:下面代码的设计意图是计算1—100各数的平方。该段代码运行后能得到应有的结果么?若不能,对程序进行修改,完成设计意图。

#define SQUARE(a) ((a)*(a))

int i;

int result;

i=1;

do{

result=SQUARE(i++);

printf(“result=%d\n”,result);

}while(i<101);

答:把result=SQUARE(i++);改成

result=SQUARE(i);

i++;

问题3:某嵌入式处理器工作在大端方式下,其中unsigned int 为32位,unsigned short 为16位,unsigned char 为8位。仔细阅读并分析下面的C语言代码。写出其打印输出的结果。#include "stdio.h"

#include "stdlib.h"

void *MEM_ADDR;

void mem_test(void)

{

unsigned int *pint_addr=NULL;

unsigned short *pshort_addr=NULL;

unsigned char *pchar_addr=NULL;

MEM_ADDR=(void*)malloc(sizeof(int));

pint_addr=(unsigned *)MEM_ADDR;

pshort_addr=(unsigned *)MEM_ADDR;

pchar_addr=(unsigned *)MEM_ADDR;

*pint_addr=0x89ABCDEF;

printf("0x%x,0x%x\n",*pshort_addr,*pchar_addr); /*第一次输出*/

pshort_addr++;

*pshort_addr=0x1234;

printf("0x%x,0x%x\n",*pint_addr,*pchar_addr); /*第二次输出*/

pchar_addr--;

*pchar_addr=0x56;

printf("0x%x,0x%x\n",*pint_addr,*pshort_addr); /*第三次输出*/

}

答:第一次输出:0x89AB , 0x89

第二次输出:0x89AB1234, 0x89

第三次输出:0x89561234,0x1234

阅读以下说明和C语言代码,回答问题1至问题3。

【说明】在嵌入式操作系统设备管理的实现上,常使用到C语言的函数指针变量,由统一的管理函数调用不同的设备驱动程序。下面的一段C语言代码是驱动管理程序manage_device 调用4个不同设备驱动程序,但没有用到函数指针变量。

C语言代码

#include "stdio.h"

#include "stdlib.h"

extern int sys_status;

static int Dev_drv1(int arg1,int arg2);

static int Dev_drv2(int arg1,int arg2);

static int Dev_drv3(int arg1,int arg2);

static int Dev_drv4(int arg1,int arg2);

#define NOERROR 0

type struct{

int _fd;

}TYP_DEV_TAB;

TYP_DEV_TAB dev_tab[50]={101,99,80,120,};

void manage_device(int devid,int arg1,int arg2) {

int place;

int ret;

for(place=0;place<50;place++)

if(dev_tab[place]._fd==devid) break;

if(place>=50)

printf("NO DEVICE fd=%d\n",devid); switch(dev_tab[palce]._fd){

case 80;

ret=Dev_drv3(int arg1,int arg2);

break;

case 99;

ret=Dev_drv2(int arg1,int arg2);

break;

case 101;

ret=Dev_drv1(int arg1,int arg2);

break;

case 120;

ret=Dev_drv4(int arg1,int arg2);

break;

}

if(ret!=NORERROR)

printf("DEVICE%d error!\n",devid); }

int Dev_drv1(2)(3)(4)(int arg1,int arg2);

{

/*局部变量声明,略*/

/*驱动程序代码,略*/

【问题1】请使用C语言的函数指针变量,manage_device函数进行改造,完成下面C语言代码中的(1),(2),(3)和(4)处的变量说明或语句。

type struct{

int _fd;

(1)函数指针变量说明;/*变量名用function */

}TYP_DEV_TAB;

TYP_DEV_TAB dev_tab[50]={{101,Dev_drv1},{99,Dev_drv2},{80,Dev_drv3},{120, ,Dev_drv4}};

void manage_device(int devid,int arg1,int arg2)

{

int place;

int ret;

(2)函数指针变量说明;/*变量名用dev_action*/

for(place=0;place<50;place++)

if(dev_tab[place]._fd==devid)

(3)语句1;/* 利用局部变量,得到具体函数的入口地址*/

break;

if(place>=50)

printf("NO DEVICE fd=%d\n",devid);

(4)语句2;

if(ret!=NORERROR)

printf("DEVICE %d error!\n",devid);

}

【问题2】在C语言程序中,常在某些变量的说明前加extern , 如本题在变量说明中的第一条加extern int sys_status; 说明加extern 与不加extern的区别,在进行编译时会有什么样的不同处理?

【问题3】函数的参数存放在什么地址空间中?说明其作用范围。

【问题4】

int Dev_drv1(int arg1,int arg2)

{

struct node{

int ID;

int action;

char name[100];

int range;

}

struct node *ptr;

/*其它局部变量声明,略*/

设int 为32位整数,char占8位。对指针ptr赋值为0x3751C0,若在执行一条“ptr++;”语句,此时ptr的值为多少?

int fun(int a)

{

int b=0;

static int c=3;

b++;

c++;

return (a+b+c);

}

void main()

{

Int a=2

int I;

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

printf(“%d”,fun(a);

}

void fun()

{

unsigned char size;

int a;

size=100;

while(size-- >=0) //循环多少次?

{

A+=size;

}

}

嵌入式系统程序设计中,变量的定义至关重要,用变量a 给出下面的定义

a) 一个整型数;

b)一个指向整型数的指针;

c)一个指向指针的的指针,它指向的指针是指向一个整型数;

d)一个有10个整型数的数组;

e) 一个有10个指针的数组,该指针是指向一个整型数的;

f) 一个指向有10个整型数数组的指针;

g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;

h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;

答:

a.int a:// An integer

b.int *a:// A pointer to an integer

c.int **a;// A pointr to a pointer to an integer

d.int a[10];// An array of 10 integers

e.int *a[10]; // An array of 10 pointers to integers

f.int (*a)[10]; // A pointer to an array of 10 integers

g.int (*a)(int); // A pointer to a function a that takes an integer argument and returns an integer

h.int 9*a[10])(int); // An array of 10 pointers to functions that take an integer argument and retrun an integer

试说明在嵌入式系统开发中,如何提高代码的可移植性

答:1.软件设计上采用层次设计肯模块化设计。2.再体系结构上,在操作系统肯应用程序之间引入一个虚拟机层,把一些通用胡共性胡操作系统API接口函数封装起来。3.将不可移植胡部分局域化,集中在某个特定的文件中。4.在数据类型上,尽量不适用C语言胡数据类型。

阅读以下说明和C 语言代码,回答问题1 至问题3。

【说明】

有两个任务(编号分别为0 和1)需要访问同一个共享资源,为了解决竞争条件(race condition)的问题,我们需要实现一种互斥机制,使得在任何时刻只能有一个任务访问该共享资源。代码一给出了一种实现方法。

【代码一】

int flag[2]; /* flag 数组,初始化为FALSE */

Enter_Critical_Section(int my_task_id, int other_task_id)

{

while (flag[other_task_id] == TRUE); /* 空循环语句*/

flag[my_task_id] = TRUE;

}

Exit_Critical_Section(int my_task_id, int other_task_id)

{

flag[my_task_id] = FALSE;

}

当一个任务要访问临界资源时,就可以调用代码一给出的这两个函数。代码二给出了任务0 的一个例子。

【代码二】

Enter_Critical_Section(0, 1);

.... 使用这个资源.....

Exit_Critical_Section(0, 1);

..... 做其他的事情..

【问题1】什么是临界资源(critical resource)?请简要说明。

答:在多道程序系统中各进程可以共享类资源但有些资源一次只能供一个进程使用,需要互斥访问胡资源成为临界资源如打印机,共享变量肯表格等

【问题2】代码一所示的方法能够实现共享资源的互斥访问吗?请用举例说明。

答:该机制不能实现资源胡互斥访问

初始化时,flag数组的元素值为FALSE

线程0先执行,在执行while循环语句时,顺利结束。假设此时来了一个时钟中断线程1去执行,在执行while循环语句的时候,顺利结束,进入临界区

当线程0再执行时,也进入了临界区

【问题3】代码一采用了一种繁忙等待(busy waiting)的策略,这种策略的缺点是什么?请简要说明。

答:可能出现死锁

初始化时,flag数组的元素值为FALSE

线程0先执行,flag[0]=TRUE,假设这个时候来了一个时钟中断

线程1去执行,flag[1]=TRUE,在执行while循环语句时被卡住

线程0再执行时,也在while循环语句的地方被卡住

实验内容

(1) 设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行从小到大排序,第二个参数传递的是第一个参数的元素个数;(2):设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行求和运算,第二个参数传递的是第一个参数的元素个数;(3)实现主函数,主函数中创建2个进程,进程1定义一个10元素的数组,调用文件f1中定义的函数对数组排序并将结果和进程ID输出;进程2定义一个10个元素的数组,调用文件f2中定义的函数对数组进行求和并将结果和进程ID输出;

(1) 设计一个具有一个整形参数的子函数,取出参数的低16位并且把低8位置一,将结果返回;(2)f2.c:设计一个具有两个参数的子函数,子函数将2参数值互换;(3)实现主函数,主函数中创建2个进程,进程1定义一个整形变量,调用文件f1中定义的函数求取结果并将结果和进程ID输出;进程2定义2个整形变量,调用文件f2中定义的函数将两变量的值进行互换并将结果和进程ID输出;

(1)设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行从小到大排序,第二个参数传递的是第一个参数的元素个数;(2)f2.c:设计一个具有两个参数的子函数,子函数将2参数值互换;(3)实现主函数,主函数中创建2个线程,线程1定义一个10元素的数组,使用文件f1中定义的函数对数组排序并将结果输出;线程2定义2个整形变量,使用文件f2中定义的函数将两变量的值进行互换并将结果输出;

实验内容

1、设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行从小到大排序,第二个参数传递的是第一个参数的元素个数;

2、设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行求和运算,第二个参数传递的是第一个参数的元素个数;

3、实现主函数,主函数中创建2 个进程,进程1 定义一个10 元素的数组,调用文件f1 中定义的函数对数组排序并将结果和进程ID 输出;进程2 定义一个10 个元素的数组,调用文件f2 中定义的函数对数组进行求和并将结果和进程ID 输出;

实验程序

1、F1.c

#include

#include

void NumberSort(char *parg,char num) {

char j,i,k;

char Value=0;

for(j=0;j

k=j;

for(i=j+1;i

if(*(parg+k)>*(parg+i)) k=i;

if(j!=k)

{

Value=*(parg+j);

*(parg+j)=*(parg+k);

*(parg+k)=Value;

k=j;

}

}

}

}

2、F2.c

#include

#include

Int NumberSum(char *parg,char num) {

char i=0;

int sum=0;

for(i=0;i

sum=sum+*(parg+i);

}

return sum;

}

3、Main.c

#include

#include

#include

#include

#include

int main(int argc, char **argv)

{

char table[10]={2,3,6,8,9,1,4,0,7,5};

int sumvalue;

char i=0;

char pid;

pid=fork();//create a process

if(pid==0){

NumberSort(table,10);

printf("After sort number");

for(i=0;i<10;i++){

printf("%d",table[i]);

}

printf("\n");

printf("I'm child1 process,my pid is %d.\n",getpid());

exit(0);

}

else if(pid>0)

{

printf("I'm father process,my pid is %d.\n",getpid());

pid=fork(); //create other process

if(pid==0){

sumvalue=NumberSum(table,10);

printf("The Number sum is %d.\n",sumvalue);

printf("I'm child2 process,my pid is %d.\n",getpid());

}

else if(pid>0)

printf("I'm is %d.\n",getpid());

else

printf("fork() error.\n");

}

else printf("fork() error.\n");

}

实验内容

实验内容:

(1)设计一个具有两个参数的子函数,子函数将第一个指针参数中的各个元素进行从小到大排序,第二个参数传递的是第一个参数的元素个数;

(2)f2.c:设计一个具有两个参数的子函数,子函数将2参数值互换;(3)实现主函数,主函数中创建2个线程,线程1定义一个

10元素的数组,使用文件f1中定义的函数对数组排序并将结果输出;线程2定义2个整形变量,使用文件f2中定义的函数将两变量的值进行互换并将结果输出;

#include

#include

#include

#include

#include

int main(int argc, char **argv)

{

char table[10]={2,3,6,8,9,1,4,0,7,5};

unsigned int p1=30,p2=50;

char i=0;

char pid;

pid=fork();//create a process

if(pid==0){

NumberSort(table,10);

printf("After sort number");

for(i=0;i<10;i++){

printf("%d",table[i]);

}

printf("\n");

exit(0);

}

else if(pid>0)

{ pid=fork(); //create other process

if(pid==0){

printf("before exchange The Number p1,p2 is %d,%d.\n",p1,p2); ExchangeNumber(&p1,&p2);

printf("after exchange The Number p1,p2 is %d,%d.\n",p1,p2);

}

}

}

子程序代码如下:

f1.c

#include

#include

void NumberSort(char *parg,char num)

{

char j,i,k;

char Value=0;

for(j=0;j

k=j;

for(i=j+1;i

if(*(parg+k)>*(parg+i)) k=i;

if(j!=k)

{

Value=*(parg+j);

*(parg+j)=*(parg+k);

*(parg+k)=Value;

k=j;

}

}

}

}

f2.c

# include

#include

void ExchangeNumber(unsigned int

*parg1,unsigned int *parg2)

{

unsigned int parg;

parg=*parg1;

*parg1=*parg2;

*parg2=parg;

}

实验内容:

(1) 设计一个具有一个整形参数的子函数,取出参数的低16位并且把低8位置一,将结果返回;

(2) f2.c:设计一个具有两个参数的子函数,子函数将2参数值互换;

(3)实现主函数,主函数中创建2个进程,进程1定义一个整形变量,调用文件f1中定义的函数求取结果

并将结果和进程ID输出;进程2定义2个整形变量,调用文件f2中定义的函数将两变量的值进行互换并将结果和进程ID输出;

程序代码:

#include

#include

#include

#include

#include

int main(int argc, char **argv)

{

unsigned int FinalNumber,p=0xffff5689;

unsigned int p1=30,p2=50;

char i=0;

char pid;

pid=fork();//create a process

if(pid==0){

FinalNumber=NumberExtract(p);

printf("before extract the number is %x \n",p);

printf("after extract the number is %x \n",FinalNumber);

printf("I'm child1 process,my pid is %d.\n",getpid());

}

else if(pid>0)

{ printf("I'm father process,my pid is %d.\n",getpid());

pid=fork(); //create other process

if(pid==0){

printf("before exchange The Number p1,p2 is %d,%d.\n",p1,p2);

ExchangeNumber(&p1,&p2);

printf("after exchange The Number p1,p2 is %d,%d.\n",p1,p2); printf("I'm child2 process,my pid is %d.\n",getpid());

}else if(pid>0)

printf("I'm father process,my pid is %d.\n",getpid());

else

printf("fork() error.\n");

}

else printf("fork() error.\n");}

子程序代码如下:

f1.c

#include

#include

unsigned int NumberExtract(unsigned int parg)

{

unsigned int FinalValue;

FinalValue=(parg&0x0000ffff)|0x00ff;

return FinalValue;

}

f2.c

#include

#include

void ExchangeNumber(unsigned int *parg1,unsigned int *parg2)

{

unsigned int parg;

parg=*parg1;

*parg1=*parg2;

*parg2=parg;

}

666666666666666

进入其他目录:cd

$ cd /root/

$ pwd

/root

在屏幕上输出字符:echo

使用实例:

$ echo “hello”

Hello

显示文件内容:cat

使用实例:

$ cat temp

text test temp

复制文件:cp

使用实例:

$ ls

Desktop Examples file2.txt new_file.txt

$ cp file2.txt file2_copy.txt

$ ls

Desktop Examples file2_copy.txt file2.txt new_file.txt

移动文件:mv

使用实例:

$ ls

Desktop Examples file1.txt file2.txt

$ mv file1.txt new_file.txt

$ ls

Desktop Examples file2.txt new_file.txt

建立一个空文本文件:touch

使用实例:

$ ls

Desktop Examples

$ touch file1.txt

$ ls

Desktop Examples file1.txt

建立一个目录:mkdir

使用实例:

$ ls

Desktop Examples file2_copy.txt file2_new.txt new_file.txt

$ mkdir test_dir

$ ls

Desktop Examples file2_copy.txt file2_new.txt new_file.txt test_dir

删除文件/目录:rm

rm使用实例:

$ ls

Desktop Examples file2_copy.txt file2_new.txt new_file.txt test_dir

$ rm -r test_dir

$ ls

Desktop Examples file2_copy.txt file2_new.txt new_file.txt

$ rm new_file.txt

$ ls

Desktop Examples file2_copy.txt file2_new.txt

访问权限:chmod

使用实例:

chmod u+s file 为file 的属主加上特殊权限;

chmod g+r file 为file 的属组加上读权限;

chmod o+w file 为file 的其它用户加上写权限;

chmod a-x file 为file 的所有用户减去执行权限;

chmod 765 file 为file 的属主设为完全权限,属组设成读写权,其它用户具有读和执行权限。

修改密码:passwd 命令

使用实例:

$ sudo passwd root

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully

压缩解压:tar 命令

使用实例:

tar –cvf benet.tar /home/benet 把/home/benet 目录打包;

tar –zcvf benet.tar.gz /mnt 把目录打包并压缩;

tar –tf benet.tar 看非压缩包的文件列表;

tar –tf benet.tar.gz 看压缩包的文件列表;

tar –xf benet.tar 非压缩包的文件恢复;

tar –zxvf benet.tar.gz 压缩包的文件解压恢复。

查看系统命令

使用实例:

查看内核:uname –a

查看Ubuntu 版本:cat /etc/issue

查看内核加载的模块:lsmod

查看PCI 设备:lspci

查看USB 设备:lsusb

查看网卡状态:sudo ethtool eth0

查看CPU 信息:cat /proc/cpuinfo

显示当前硬件信息:lshw

查看当前的内存使用情况:free –l

查看硬盘的分区:sudo fdisk –l

查看硬盘剩余空间:df -hdf –H

查看目录占用空间:du -hs 目录名

【例】用echo命令显示变量值。

$dir=/home/lcd/ff

$echo $ dir

/home/lcd/ff

$echo dir

dir

$

例如,有以下的Makefile文件:

# 一个简单的Makefile的例子

# 以#开头的为注释行

test:prog.o code.o

gcc –o test prog.o code.o

prog.o:prog.c prog.h code.h

gcc –c prog.c –o prog.o

code.o:code.c code.h

gcc –c code.c –o code.o

clean:

rm –f *.o

现在利用变量把前面的Makefile重写一遍:OBJS=prog.o code.o

CC=gcc

test:${ OBJS }

${ CC } –o test ${ OBJS }

prog.o:prog.c prog.h code.h

${ CC } –c prog.c –o prog.o

code.o:code.c code.h

${ CC } –c code.c –o code.o

clean:

rm –f *.o

在上面的例子中,利用隐含规则,可以简化为:

OBJS=prog.o code.o

CC=gcc

test:${ OBJS }

${ CC } –o $@ $^

prog.o:prog.c prog.h code.h

code.o:code.c code.h

clean:

rm –f *.o

GDB命令的基本使用和应用

1)file命令:装入想要调试的可执行文件。

2)cd命令:改变工作目录。

3)pwd命令:返回当前工作日录。

4)run命令:执行当前被调试的程序。

5)kill命令:停止正在调试的应用程序。

6)list命令:列出正在调试的应用程序的源代码。

7)break命令:设置断点。

8)Tbreak命令;设置临时断点。它的语法与break相同。区别在于用tbreak设置的断点执行一次之后立即消失。

9)watch命令:设置监视点,监视表达式的变化。

10)awatch命令:设置读写监视点。当要监视的表达式被读或写时将应用程序挂起。它的语法与watch命令相同。

11)rwatch命令:设置读监视点,当监视表达式被读时将程序挂起,等侍调试。此命令的语法与watch相同。

12)next命令:执行下一条源代码,但是不进入函数内部。也就是说,将一条函数调用作为一条语句执行。执行这个命令的前提是已经run,开始了代码的执行

13)step命令:执行下一条源代码,进入函数内部。如果调用了某个函数,会跳到函数所在的代码中等候一步步执行。执行这个命令的前提是已经用run开始执行代码。

14)display命令:在应用程序每次停止运行时显示表达式的值。

15)info break命令:显示当前断点列表,包括每个断点到达的次数。

16)info files命令:显示调试文件的信息。

17)info func命令:显示所有的函数名。

18)info local命令:显示当前函数的所有局部变量的信息。

19)info prog命令:显示调试程序的执行状态。

20)print命令;显示表达式的值。

21)delete命令:删除断点。指定一个断点号码,则删除指定断点。不指定参数则删除所有的断点。

22)Shell命令:执行Linux Shell命令。

23)make命令:不退出gdb而重新编译生成可执行文件。

24)Quit命令:退出gdb。

9999999

init进程

#include

#include

pid_t getpid(void); 返回:调用进程的进程I D

pid_t getppid(void); 返回:调用进程的父进程I D

uid_t getuid(void); 返回:调用进程的实际用户I D

uid_t geteuid(void); 返回:调用进程的有效用户I D

gid_t getgid(void); 返回:调用进程的实际组I D

gid_t getegid(void); 返回:调用进程的有效组I D

#include

fork函数

#include

pid_t fork(void);

返回:子进程中为0,父进程中为子进程I D,出错为-1

exec函数

#include

int execl(const char * pathname, const char * arg 0, ... /* (char *) 0 */);

int execv(const char * pathname, char *const a rgv [] );

int execle(const char * pathname, const char * a rg 0, ...

/* (char *)0, char *const e n v p [] */);

int execve(const char * pathname char *const a rgv [], char *const envp [] );

int execlp(const char * pathname, const char * a rg 0, ... /* (char *) 0 */);

int execvp(const char * pathname, char *const a rgv [] );

六个函数返回:若出错则为- 1,若成功则不返回

wait和waitpid函数

#include

#include

pid_t wait(int * status) ;

pid_t waitpid(pid_t pid, int * status, int options) ;

两个函数返回:若成功则为子进程I D号,若出错则为-1.

wait和waitpid函数的区别:

在一个子进程终止前,wait 使其调用者阻塞,而waitpid 有一选择项,可使调用者不阻塞。waitpid并不等待第一个终止的子进程—它有若干个选择项,可以控制它所等待的特定进程。

实际上wait函数是waitpid函数的一个特例。

临界区

while(TRUE)

{

entry section

critical section

exit section

remainder section

}

名管道创建

#include

#include

int mkfifo(const char * pathname,

mode_t mode) ;

返回:若成功则为0,若出错则为- 1

创建进程:

#include

pthread_create(pthread_t *thread, pthread_attr_t *attr,

void *(*start_routine)(void *),

void *arg)

thread:线程标识符

attr:线程属性设置

start_routine:线程函数起始地址

arg:传递给start_routine的参数

进程退出:

#include

pthread_exit( void *retval )

retval:pthread_exit调用者线程的返回值,可由其他函数和pthread_join来检测获取。

等待进程退出:

#include

pthread_join( pthread_t *th,void **thread_return )

th:等待线程的标识符

thread_return:用户定义指针,用来存储被等待线程的返回值

线程属性初始化:

#include

int pthread_attr_init (pthread_attr_t *attr)

attr:线程属性

返回值:成功0,错误-1。

设置绑定属性:

#include

pthread_attr_setscope(pthread_attr_t *attr, init scope)

attr:线程属性

scope:PTHREAD_SCOPE_SYSTEM(绑定)

PTHREAD_SCOPE_PRCESS(非绑定)

返回值:成功0,错误-1。

设置分离属性:

#include

pthread_attr_setsetdetachstate(pthread_attr_t *attr, init detachstate) attr:线程属性

detachstate :PTHREAD_CREAT_DETACHED(分离)

PTHREAD_CREAT_JOINABLE(非分离)

返回值:成功0,错误-1。

获取线程优先级:

#include

int pthread_attr_getschedparam (pthread_attr_attr *attr,

struct sched_param *param)

attr:线程属性

param:线程优先级

返回值:成功0,错误-1。

设置线程优先级:

#include

int pthread_attr_setschedparam (pthread_attr_attr *attr,

struct sched_param *param)

attr:线程属性

param:线程优先级

返回值:成功0,错误-1。

线程实例见:pthread.c

嵌入式系统期末考试题库及答案

嵌入式系统期末考试题库及答案 《嵌入式系统》试题库 《嵌入式系统》试题库 一、填空题 1、嵌入式系统的基本定义为:以应用中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2、从模块结构来看,嵌入式系统由三大部分组成,分别是:硬件、软件和开发平台。 3、从层次角度来看,嵌入式系统由四大部分组成,分别是:应用软件层、操作系统层、板级支持包(或硬件抽象层)和硬件层。 4、嵌入式产品的主要度量指标包括:上市时间、设计成本和产品质量。 5、嵌入式系统的设计过程包括:需求分析、规格说明、体系结构设计、构件设计、系统集成和系统测试。 6、需求分析包括:功能性需求分析和非功能性需求分析。 7、确定输入信号是数字信号还是模拟信号属于功能性需求。 8、确定系统的物理尺寸和重量属于非功能性需求。 9、在嵌入式系统的设计过程中,其中规格说明解决“做什么”。 10、在嵌入式系统的设计过程中,其中体系结构设计解决“如何做”。 11、在嵌入式系统的设计过程中,软硬件划分应该在体系结构设计阶段完成。12、在嵌入式系统的设计过程中,处理器的选择应该在体系结构设计阶段完成。13、在嵌入式系统的设计过程中,嵌入式操作系统的选择应该在体系结构设计阶段完成。14、在嵌入式系统的设计过程中,完成原理图设计应在构件设计阶段完成。15、在嵌入式系统的设计过程中,完成版图设计应在构件设计阶段完成。16、在嵌入式系统的设计过程中,完成软件设计应在构件设计阶段完成。 17、反映嵌入式系统设计人员的水平能力主要在于总体设计(需

求分析、规格说明和体系结构设计)和系统调试。 18、设计流程指的是设计过程中所经历的过程步骤。 19、设计重用技术主要分为基于IP 核的模块级重用和基于平台的系统级重用。20、软硬件协同设计由系统描述、软硬件划分、软硬件协同综合以及软硬件协同模拟与验证几个阶段组成。 21、嵌入式处理器的分类包括三种,分别是:嵌入式微处理器、微控制器(或单片机)和 第1 页共44 页 1 《嵌入式系统》试题库 数字信号处理器(DSP)。 22、列举常见的ARM 系列处理器:ARM7 系列、ARM9 系列、ARM11 系列、Cortex-M 系列、Cortex-R 系列、Cortex-A 系列等。 23、ARM 系列微处理器支持的数据类型有:字节、半字和字等三种类型。24、ARM 系列微处理器支持的字数据存储格式有:大端格式和小端格式。25、ARM 系列处理器通过执行BX 或者BLX 指令来实现工作状态的切换。26、列举常见的存储器类型:SRAM、DRAM、Flash、EEPROM 等。27、对于RAM 存储器主要有两种,分别是:SRAM 和DRAM。 28、在时钟信号边沿到来之前的一段时间内,数据信号必须保持稳定,这段时间称为器件的建立时间;在时钟信号边沿到来之后的一段时间内,数据信号必须保持稳定,这段时间称为器件的保持时间。 29、总线是在多于两个模块(设备、子系统)之间传送信息的公共通路。30、总线的功能是信息共享和交换。 31、总线由传输信息的物理介质和管理信息传输的协议组成。 32、挂接在总线上的设备依据启动总线事务的能力可以分为主设备和从设备。33、总线协议依据同步方式可分为同步时序协议和异步时序协议。34、总线仲裁方式可分为集中式仲裁和分布式仲裁。

嵌入式系统期末考试试卷 习题

1.下面哪一种工作模式不属于ARM特权模式(A)。 A.用户模式B.系统模式C.软中断模式D.FIQ模式 2.ARM7TDMI的工作状态包括( D )。 A.测试状态和运行状态B.挂起状态和就绪状态 C.就绪状态和运行状态D.ARM状态和Thumb状态 3.下面哪个Linux操作系统是嵌入式操作系统( B )。 A.Red-hat Linux B.uclinux C.Ubuntu Linux D.SUSE Linux 4.使用Host-Target联合开发嵌入式应用,( B )不是必须的。 A.宿主机B.银河麒麟操作系统 C.目标机D.交叉编译器 5.下面哪个不属于Linux下的一个进程在内存里的三部分的数据之一(A)。 A.寄存器段B.代码段 C.堆栈段D.数据段 选择题(共5小题,每题2分,共10分) 1.下面哪个系统属于嵌入式系统( D )。 A.“天河一号”计算机系统B.IBMX200笔记本电脑 C.联想S10上网本D.Iphone手机 2.在Makefile中的命令必须要以(A)键开始。 A.Tab键B.#号键 C.空格键D.&键 3.Linux支持多种文件系统,下面哪种不属于Linux的文件系统格式( B )。 A.Ext B.FA T32 C.NFS D.Ext3 4.下面哪种不属于VI三种工作模式之一( D )。 A.命令行模式B.插入模式 C.底行模式D.工作模式 5.下面哪一项不属于Linux内核的配置系统的三个组成部分之一( C )。 A.Makefile B.配置文件(config.in) C.make menuconfig D.配置工具 1.人们生活中常用的嵌入式设备有哪些?列举4个以上(1) 手机,(2) 机顶盒,(3) MP3,(4) GPS。(交换机、打印机、投影仪、无线路由器、车载媒体、PDA、GPS、智能家电等等。) 2.ARM9处理器使用了五级流水线,五级流水具体指哪五级:(5) 取指,(6) 译码,(7) 执行,(8) 缓冲/数据,(9) 回写。 3.在Makefile中的命令必须要以(10) Tab 键开始。 4.Linux支持多种文件系统,主要包括哪些(写出其中4中就行)(11) Ext,(12) VFA T,(13) JFS,(14) NFS。(JFS、ReiserFS、Ext、Ext2、Ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等) 5.VI的工作模式有哪三种:(15) 命令行模式,(16) 插入模式,(17) 底行模式。

嵌入式系统第三套试题

1. 与个人计算机(PC)相比,嵌入式系统具有许多不同的特点。下面不属于嵌入式系统特点的是( )。 A)嵌入式系统与具体应用紧密结合,具有很强的专用性 B)嵌入式系统通常包含在非计算机设备(系统)中,具有隐蔽性 C)嵌入式系统的软硬件资源往往受到严格的限制 D)嵌入式系统性能较低,价格也比较便宜 【解析】:与人们日常使用的个人计算机相比,嵌入式系统具有许多不同的特点。1)专用型, 嵌入式系统与具体应用紧密结合,具有很强的专用型;2)隐蔽性,嵌入式系统通常总是非计 算机设备(系统)中的一个部分,它们隐藏在其内部,不为人知;3)资源受限,嵌入式系统 通常要求小型化、轻量化、低功耗及低成本,因此其软硬件资源受到严格的限制;4)高可靠 性;5)实时性;6 )软件固化。综上所述,D选项不属于嵌入式系统的特点。 2. 嵌入式系统中的CPI具有一些与通用计算机所使用的CPU不同的特点,下面不是其特点的是()。 A)支持实时处理 B)低功耗 C)高主频 D)集成了测试电路 【解析】:嵌入式系统中的CPU一般具有4个特点:1 )支持实时处理;2)低功耗;3)结构可扩展;4)集成了测试电路。因此,该题选C。 嵌入式系统使用的片上系统英文缩写名为SoC下面关于SoC叙述中错误的是()。 A SoC也称为系统级芯片,它是电子设计自动化水平的提高和集成电路制造技术飞速发展的产物 B)SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路 C)SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能 D)SoC的设计制造难度很大,目前还没有得到广泛使用 【解析】:随着电子设计自动化水平的提高和VLS制造技术的飞速发展,半导体加工已经从微米、亚微米进入到深亚微米的时代,单个芯片上可以集成几亿个甚至几十亿个晶体管,因而能够把计算机或其他一些电子系统的全部电路都集成在单个芯片上,这种芯片就是所谓的片上系统。 SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电 路。由于SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、 转换、存储、处理和I/O等多种功能。目前,大多数32位的嵌入式处理芯片均为SoC, SoC逐渐成为集成电路设计的主流发展趋势。综上可知,D选项不正确。 微电子技术特别是集成电路制造技术是嵌入式系统发展的重要基础,下面关于集成电路的叙述中错误的是()。 A)集成电路的集成度指的是单个集成电路所含电子元件(如晶体管、电阻、电容等)的数目多少 B)根据集成度的高低,集成电路可以分为小规模、中规模、大规模、超大规模和极大规模等几种 C)嵌入式系统中使用的处理器芯片属于大规模集成电路 D)集成电路的制造工艺复杂且技术难度非常高,许多工序必须在恒温、恒湿、超洁净的无尘厂房内完成

华为经典嵌入式面试题集资料

(1)什么是预编译,何时需要预编译: 答案: 1、总是使用不经常改动的大型代码体。 2、程序由多个模块组成,所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下,可以将所有包含文件预编译为一个预编译头。 (2)char * const p char const * p const char *p 上述三个有什么区别? 答案: char * const p; //常量指针,p的值不可以修改 char const * p;//指向常量的指针,指向的常量值不可以改const char *p;//和char const *p (3)char str1[] = "abc"; char str2[] = "abc"; const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; char *str7 = "abc"; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域。 (4)以下代码中的两个sizeof用法有问题吗? [C易] void UpperCase( char str[] ) // 将str 中的小写字母转换成大写字母{ for( size_t i=0; i

嵌入式系统期末考试试卷 习题

1.下面哪一种工作模式不属于ARM特权模式( A )。 A.用户模式B.系统模式C.软中断模式D.FIQ模式 2.ARM7TDMI的工作状态包括( D )。 A.测试状态和运行状态B.挂起状态和就绪状态 C.就绪状态和运行状态D.ARM状态和Thumb状态 3.下面哪个Linux操作系统是嵌入式操作系统( B )。 A.Red-hat Linux B.uclinux C.Ubuntu Linux D.SUSE Linux 4.使用Host-Target联合开发嵌入式应用,( B )不是必须的。 A.宿主机B.银河麒麟操作系统 C.目标机D.交叉编译器 5.下面哪个不属于Linux下的一个进程在内存里的三部分的数据之一( A )。 A.寄存器段B.代码段 C.堆栈段D.数据段 选择题(共5小题,每题2分,共10分) 1.下面哪个系统属于嵌入式系统( D )。 A.“天河一号”计算机系统B.IBMX200笔记本电脑 C.联想S10上网本D.Iphone手机 2.在Makefile中的命令必须要以( A )键开始。 A.Tab键B.#号键 C.空格键D.&键 3.Linux支持多种文件系统,下面哪种不属于Linux的文件系统格式( B )。 A.Ext B.FAT32 C.NFS D.Ext3 4.下面哪种不属于VI三种工作模式之一( D )。 A.命令行模式B.插入模式 C.底行模式D.工作模式 5.下面哪一项不属于Linux内核的配置系统的三个组成部分之一( C )。 A.Makefile B.配置文件(config.in) C.make menuconfig D.配置工具 1.人们生活中常用的嵌入式设备有哪些?列举4个以上(1) 手机,(2) 机顶盒,(3) MP3,(4) GPS。(交换机、打印机、投影仪、无线路由器、车载媒体、PDA、GPS、智能家电等等。) 2.ARM9处理器使用了五级流水线,五级流水具体指哪五级:(5) 取指,(6) 译码,(7) 执行,(8) 缓冲/数据,(9) 回写。 3.在Makefile中的命令必须要以(10) Tab 键开始。 4.Linux支持多种文件系统,主要包括哪些(写出其中4中就行)(11) Ext,(12) VFAT,(13) JFS,(14) NFS。(JFS、ReiserFS、Ext、Ext2、Ext3、ISO9660、XFS、Minx、MSDOS、UMSDOS、VFAT、NTFS、HPFS、NFS、SMB、SysV、PROC等) 5.VI的工作模式有哪三种:(15) 命令行模式,(16) 插入模式,(17) 底行模式。

嵌入式系统开发技术试题库

嵌入式系统开发技术题库第3套 一、选择题 1:与个人计算机(PC)相比,嵌入式系统具有许多不同的特点。下面不属于嵌入式系统特点的是()。A:嵌入式系统与具体应用紧密结合,具有很强的专用性 B:嵌入式系统通常包含在非计算机设备(系统)中,具有隐蔽性 C:嵌入式系统的软硬件资源往往受到严格的限制 D:嵌入式系统性能较低,价格也比较便宜 2:嵌入式系统中的CPU具有一些与通用计算机所使用的CPU不同的特点,下面不是其特点的是()。A:支持实时处理 B:低功耗 C:高主频 D:集成了测试电路 3:嵌入式系统使用的片上系统英文缩写名为SoC,下面关于SoC叙述中错误的是()。 A:SoC也称为系统级芯片,它是电子设计自动化水平的提高和集成电路制造技术飞速发展的产物 B:SoC芯片中既包含数字电路,也可以包含模拟电路,甚至还能包含数字/模拟混合电路和射频电路C:SoC将嵌入式系统的几乎全部功能都集成在一块芯片中,单个芯片就能实现数据的采集、转换、存储、处理和I/O等多种功能 D:SoC的设计制造难度很大,目前还没有得到广泛使用 4:微电子技术特别是集成电路制造技术是嵌入式系统发展的重要基础,下面关于集成电路的叙述中错误的是()。 A:集成电路的集成度指的是单个集成电路所含电子元件(如晶体管、电阻、电容等)的数目多少 B:根据集成度的高低,集成电路可以分为小规模、中规模、大规模、超大规模和极大规模等几种 C:嵌入式系统中使用的处理器芯片属于大规模集成电路 D:集成电路的制造工艺复杂且技术难度非常高,许多工序必须在恒温、恒湿、超洁净的无尘厂房内完成 5:文字信息是人们用以表达和传递信息的媒体之一,大多数嵌入式系统都必须处理文字信息。下面关于文字信息的表示及其处理的叙述中,错误的是()。 A:目前使用最广泛的西文字符集是ASCII字符集,它包含96个可打印字符 B:GB2312是我国目前广泛使用的汉字编码国家标准之一 C:GB2312包括6000多汉字,但不包含西文、俄文等其他字符 D:GB2312字符集中的汉字与符号在系统中采用双字节表示 6:假设一台数码相机一次可拍摄16位色1024 x 1024的彩色相片共80张,数据压缩比平均是4,则它使用的存储器容量大约是()。 A:40MB B:60MB C:80MB D:120MB 7:在数字音频信息数字化过程中,正确的处理顺序是()。 A:量化、取样、编码 B:取样、编码、量化 C:取样、量化、编码 D:编码、取样、量化 8:互联网借助TCP/IP协议把许多同构或异构的计算机网络互相连接起来,实现了遍布全球的计算机的互连、互通和互操作,其中的IP协议起着关键性的作用。下面有关IP协议的叙述中,错误的是()。

嵌入式期末考试题库大全

1. Linux文件权限一共10位长度,分成四段,第三段表示的内容是。 A 文件类型 B 文件所有者的权限 C 文件所有者所在组的权限 D 其他用户的权限 2. 终止一个前台进程可能用到的命令和操作。 A kill B + C C shut down D halt 3.在使用mkdir命令创建新的目录时,在其父目录不存在时先创建父目录的选项是。 A -m B -d C -f D -p 4.Linux有三个查看文件的命令,若希望在查看文件内容过程中可以用光标上下移动来查看文件内容,应使用命令。 A cat B more C less D menu 5.对名为fido的文件用chmod 551 fido进行了修改,则它的许可权是。 A -rwxr-xr-x B -rwxr--r-- C -r--r--r-- D -r-xr-x—x 6.用ls –al命令列出下面的文件列表,文件是符号连接文件。 A -rw-rw-rw- 2 hel-s users 56 Sep 09 11:05 hello B -rwxrwxrwx 2 hel-s users 56 Sep 09 11:05 goodbye C drwxr--r-- 1 hel users 1024 Sep 10 08:10 zhang D lrwxr--r-- 1 hel users 2024 Sep 12 08:12 cheng 7.Linux文件系统的文件都按其作用分门别类地放在相关的目录中,对于外部设备文件,一般应将其放在目录中。 A /bin B /etc C /dev D /lib 8.在vi编辑器中的命令模式下,键入可在光标当前所在行下添加一新行。 A a B o C I D A 9.在vi编辑器中的命令模式下,删除当前光标处的字符使用命令。 A x B dw C D D dd 10.在vi编辑器中的命令模式下,重复上一次对编辑的文本进行的操作,可使用命令。 A 上箭头 B 下箭头 C . D * 11.用命令ls -al显示出文件ff的描述如下所示,由此可知文件ff的类型为A 。-rwxr-xr-- 1 root root 599 Cec 10 17:12 ff A 普通文件 B 硬链接 C 目录 D 符号链接 12.删除文件命令为: A mkdir B rmdir C mv D rm 13.对文件进行归档的命令为D 。 A dd B cpio C gzip D tar

嵌入式系统期末考试题库及答案

《嵌入式系统》试题库 《嵌入式系统》试题库 一、填空题 嵌入式系统的基本定义为:以应用中心,以计算机技术为基础,软件硬件可裁剪,适、 1应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。从模块结构来看,嵌入式系统由三大部分组成,分别是:硬件、软件和开发平台。、 2从层次角度来看,嵌入式

系统由四大部分组成,分别是:应用软件层、操作系统层、、 3板级支持包(或硬件抽象层) 和硬件层。嵌入式产品的主要度量指标包括:上市时间、设计成本和产品质量。、 4嵌入式系统的设计过程包括:需求分析、规格说明、体系结构设计、构件设计、系统、 5集成和系统测试。需求分析包括:功能性需求分析和非功能性需求分析。 6、确定输入信号是数字信号还 是模拟信号属于功能性需求。 7、确定系统的物理尺寸和重量属于非功能性需求。 8、在嵌 入式系统的设计过程中,其中规格说明解决“做什么”。 9、在嵌入式系统的设计过程中,其 中体系结构设计解决“如何做”。 10、在嵌入式系统的设计过程中,软硬件划分应该在体系结构设计阶段完成。 11、在嵌入式系统的设计过程中,处理器的选择应该在体系结构设计阶段 完成。、 12在嵌入式系统的设计过程中,嵌入式操作系统的选择应该在体系结构设计阶段完成。、13在嵌入式系统的设计过程中,完成原理图设计应在构件设计阶段完成。、 14在嵌入式系统 的设计过程中,完成版图设计应在构件设计阶段完成。、15在嵌入式系统的设计过程中,完 成软件设计应在构件设计阶段完成。 16、反映嵌入式系统设计人员的水平能力主要在于总体 设计(需求分析、规格说明和体系 17、结构设计)和系统调试。设计流程指的是设计过程中所经历的过程步骤。、 18核的模块级重用和基于平台的系统级重用。 IP 设计重用技术主要分为基于19、 软硬件协同设计由系统描述、软硬件划分、软硬件协同综合以及软硬件协同模拟与验 20、证几个阶段组成。嵌入式处理器的分类包括三种,分别是:嵌入式微处理器、微控制器(或单片机)和、21页共页第 1 44 《嵌入式系统》试题库

嵌入式系统试卷及答案

嵌入式系统试卷及答案

2014年上学期11级计算机专业嵌入式系统期末试卷 专业班级学号姓名___ _____ 考试时间120分钟考试方式闭卷考试成绩__________ _ 题号一二三四五六 得分 一、选择题(本大题共10个小题,每小题1分,共10分) 1、和PC机系统相比,下列哪点不是嵌入式系统所特有的:( C) A、系统内核小 B、专用性强 C、可执行多任务 D、系统精简 2、ADD R0,R1,#3属于( A)寻址方式。 A、立即寻址 B、多寄存器寻址 C、寄存器直接寻址 D、相对寻址 3、GET伪指令的含义是:(A) A、包含一个外部文件 B、定义程序的入口 C、定义一个宏 D、声明一个变量 4、μCOS-II操作系统不属于:(C) A、RTOS B、占先式实时操作系统 C、非占先式实时操作系统 D、嵌入式实时操作系统 5、FIQ中断的入口地址是:(A) A、0x0000001C B、0x00000008 C、0x00000018 D、0x00000014 6、ARM指令集和Thumb指令集分别是(D)位的。 A、8位,16位 B、16位,32位 C、16位,16位 D、32位,16位 7、BL和BX的指令的区别是( D ) A、BL是跳转并切换状态;BX带返回的跳转并切换状态。 B、BL是带返回的连接跳转;BX带返回的跳转并切换状态。 C、BL是跳转并切换状态;BX是带返回的连接跳转。 D、BL是带返回的连接跳转;BX是跳转并切换状态。 8、Boot Loader 的启动过程是( A ) A.单阶段 B. 多阶段 C.单阶段和多阶段都有 D.都不是 9、以下说法不正确的是( B ) A 、任务可以有类型说明 B 、任务可以返回一个数值 C 、任务可以有形参变量 D 、任务是一个无限循环 10、若已定义的函数有返回值,则以下关于该函数调用叙述中错误的是(D) A、函数调用可以作为独立的语句存在

(整理)嵌入式系统考试试题.

精品文档 10个小题,每小题1分,共10分)Array 1、以下说法不正确的是()。 A、任务可以有类型说明 B、任务可以返回一个数值 C、任务可以有形参变量 D、任务是一个无限循环 2、用图形点阵的方式显示一个16*16点阵汉字需要()字节。 A、8 B、32 C、16 D、64 3、μCOS-II操作系统中最多可以管理()个任务。 A、64 B、56 C、128 D、63 4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存 储,则2000H存储单元的内容为()。d A、0x21 B、0x68 C、0x65 D、0x02 5、以ARM为内核的微处理器是()位的。d A、4位 B、8位 C、16位 D、32位 6、RS232-C串口通信中,表示逻辑1的电平是()。d A、0v B、3.3v C、+5v~+15v D、-5v~-15v 7、寄存器R14除了可以做通用寄存器外,还可以做()。b A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器 8、IRQ中断的入口地址是()。 A、0x00000000 B、0x00000008 C、0x00000018 D、0x00000014 9、采用RS232-C串行通信至少需要三根线,其中不包括()。 A、电源线 B、地线

C、发送数据线 D、接收数据线 10、Unicode编码与()编码方式兼容。 A、ASCII码 B、GBK C、GB2312 D、区位码 二、填空题(本大题共24个空,每空1分,共24分) 11、发展到现在,常用的操作系统包括三大类,分别为:批处理系统、分 时系统、和实时系统。 12、在图形操作系统中,字符通常有两种存储方式:一种是方式;一种是 方式。在嵌入式开发系统中一般使用方式。 13、ARM7指令系统采用三级流水线指令,分别包括:、、 和。 14、ARM处理器有七种工作模式,分别为、、、、 、、和状态。见第二套题的19题 15、OSTaskSuspend (self)可把正在运行的任务挂起,参数self指任务本 身。 用此函数挂起的任务可通过 OSTaskResume 函数唤醒。 16、创建信号量OSSemCreat(0)函数中,参数0表示信号量的初始值。 17、若一个优先级为35的任务就绪,则在就绪表中,OSRdyTbl[]的 2 置位, 变量OSRdyGrp的 4 置位。 18、网络通信中面向连接的协议是____tcp____,面向无连接的协议是___udp_____。 三、简答题(本大题共4个小题,每小题5分,共20分) 19、简述进程和线程有什么区别,μCOS-II操作系统中的任务属于进程还是线程?进程:包含正在运行的一个程序的所有状态信息,包括程序的代码、程序的数据、PC值、一组通用的寄存器的当前值,堆、栈,一组系统资源(如打开的文件)。进程有动态性、独立性、并发性的特点。 线程:是较进程更小的能独立运行的基本单位,是进程当中的一条执行流程,它可以满足统一进程内不通实体间的并发执行而又共享相同的地址空间。 一个进程中可以同时存在多个线程 各个线程之间可以并发地执行

嵌入式系统考试题库

嵌入式系统复习题 ARM复习题一 一、填空。 1、cpsr寄存器的作用是___________。 2、ARM926EJ-S中的“9”表示的含义是________,“E”表示的含义是________,“J”表示的含义是________。 3、LINUX下察看当前目录的命令是________,察看文件内容的命令是 ________,删除目录的命令是________。 4、字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,这样的存储方式我们称之为__________格式。 5、ARM9TDMI中的“T”表示的含义是_支持Thumb指令集__,“D”表示的含义是_支持片上Debug__,“M”表示的含义是__ 内嵌硬件乘法器___ ,“I”表示的含义是__支持片上断点调试___。 6、ARM指令中的第二个操作数“operand2”有_立即数__、_寄存器__、__寄存器移位__三种具体形式。 7、字数据的高字节存储在低地址中,而字数据的低字节则存放在高地址中,这样的存储方式我们称之为__大端___格式。 8、LINUX下察看当前目录的命令是__ls__,察看文件内容的命令是 __cat____,压缩与解压的命令是__tar____,磁盘、目录挂接命令是 __mount__。 9、LINUX将设备分成__块设备____和___字符设备_______两大类。 二、简答。 1、简述嵌入式系统和通用计算机的区别? 2、VFS的功能有哪些? 记录可用的文件系统的类型; 将设备同对应的文件系统联系起来; 处理一些面向文件的通用操作 3、简述硬实时操作系统和软实时操作系统的区别? 4、简述嵌入式系统的开发模式。 5、交叉编译工具(链)主要包括什么? 对目标系统的编译器 gcc、目标系统的二进制工具binutils、目标系统

嵌入式选择题整理题库

选择题: 1、下面哪一种工作模式不属于特权模式()。 A、用户模式 B、系统模式 C、软中断模式 D、模式 3、920T的工作状态包括()。 A、测试状态和运行状态 B、挂起状态和就绪状态 C、就绪状态和运行状态 D、状态和状态 4、232串口通信中,表示逻辑1的电平是()。 A、0v B、3.3v C、+5v~+15v D、-5v~-15v 5、汇编语句“ R0, R2, R3, 1”的作用是()。 A. R0 = R2 + (R3 << 1) B. R0 =( R2<< 1) + R3 C. R3= R0+ (R2 << 1) D. (R3 << 1)= R0+ R2 6、I2C协议中有几根线() A.1 B.2 C.3 C.4 7、指令“ R0!, {R1, R2, R3, R4}”的寻址方式为()。 A、立即寻址 B、寄存器间接寻址 C、多寄存器寻址 D、堆栈寻址 9、232C串行通信总线的电气特性要求总线信号采用()。 A、正逻辑 B、负逻辑 C、高电平 D、低电平 10、下面哪种操作系统不属于商用操作系统。 ( ) A. B. C. D.

11. 下面哪点不是嵌入式操作系统的特点。 ( ) / 22 A. 内核精简 B. 专用性强 C. 功能强大 D. 高实时性 12. 下面哪种不属于嵌入式系统的调试方法。 ( ) A. 模拟调试 B. 软件调试 C. 调试 D. 单独调试 13. 在嵌入式处理器中,下面哪种中断方式优先级最高。 ( ) A. B. 数据中止 C. D. 14. 和的说法正确的是。 ( ) A. 的读速度比稍慢一些 B. 的写入速度比慢很多 C. 的擦除速度远比的慢 D.大多数写入操作需要先进行擦除操作 15. 下面哪种嵌入式操作系统很少用在手机上。 ( ) A. B. C. D. 16、0x17&0x11的运算结果是。 ( ) A.0x01 B.0x11 C.0x17 D.0x07 17、以下哪种方式不属于文件系统的格式。 ( ) 18、下面哪个特点不属于设备的特点。 ( ) A.串行通信方式 B.不可热拨插 C.分、和 D.通信速率比串口快 19、寄存器中反映处理器状态的位是() 位位位位

嵌入式试题库

嵌入式试题(大全) 1、ARM汇编语言与c++的混合编程通常用以下哪几种方式在C/C++代码中嵌入汇编指令、在汇编程序和C/C++的程序之间进行变量的互访、汇编程序、C/C++程序间的相互调用。 2、嵌入式处理器可以分为微控制器,微处理器,数字信号处理器,片上系统。P8 3、目前世界上的四大嵌入式处理器内核分别是MIPS内核、ARM内核、PowerPC内核、68/OOLDFIRE核。P30 4、ARM微处理器中支持字节(8位),半字(16位),字(32位),3种数据类型其中字需要4字节对齐,半字需要2字节对齐。P43 5、S3C2410X-/S3C2440X是三星公司出品的基于ARM920T核的嵌入式微处理器,它与基于ARM的S3C44BOX 的最大区别在于,S3C24/OX/S3C244OX内部带有全性能的内存管理单元(MMU)。P12 6、ARM7TDMI采用冯*诺依曼结构,因此对存储器的控制没有专门的存储管理单元,存储器采用间的而直接的地址方式来表示实际的物理地址,没有进行段式页的转换。P50 7、LIMUX内核包含进程调度、内存管理、文件系统、进程间通信,网络及资源管理部分。P256 8、嵌入式系统地3个基本要素是嵌入性,专用性,计算机系统,P1 嵌入式系统发展的4个阶段分别是以单片机为核心的低级嵌入式系统,以嵌入式微处理器为基础的初级嵌入式系统,以嵌入式操作系统为标志的中级嵌入式系统,以Internet为标志的高级嵌入式系统。P3 9、嵌入式系统的硬件有电源模块,嵌入式处理器,存储器模块,可编程逻辑器件,嵌入式系统周边元器件,各种I/O接口,总线以及外部设备和插件等组成。嵌入式系统的软件包括中间层程序、嵌入式操作系统、应用软件以及实际后用程序层。P6--7 10、目前世界上的四大嵌入式处理器内核分别是MIPS内核,ARM内核,PowerPC内核,68K/COLDFIRE 内核。P30 11、ARM处理器工作在不同模式,使用的寄存器有所不同,其共同点是无论何种模式,R15均作为PC使用,CPSR 为当前程式状态寄存器;R7~R0 为公用的通用寄存器。不同之处在于高端7个通用寄存器和转台寄存器在不同模式下不同。P35 12、S3C44BOX内部除ARM7TDMI内核处,还包括许多可编程外围设备组建,这些外围设备组件的可编程功能均是通过各个可编程外围设备组件中的相关控制寄存器来完成设置的。 13、嵌入式系统地调试工具有:指令集模拟器,驻留监控软件,JTAG仿真器,在线仿真器。P23 14、嵌入式系统简单的说就是嵌入到目标体系中的专用计算机系统。P1 15、ARM微处理器的工作状态有两种:ARM状态和THUMB状态,其中ARM 是指ARM工作于32位指令状态,THUMB 是指ARM执行16位的THUMB指令状态,二者的状态转换是通过BX指令完成的。P33 简答题 1、基于ARM体系结构的嵌入式处理器具有哪些技术特征?并对每种技术特征予以简单的说明。P33 答:(1)单周操作:ARM指令系统在一个机器周期内完成简单和基本的操作。 (2)采用加载/存储指令结构:存储器访问指令的执行时间长,因此只采用了加载和存储两种指令对存储器进行读和写的操作,面向运算部件的操作都经过加载指令和存储指令,从存储器取出后预先存放到寄存器对内,以加快执行速度。(3)固定的32位长度指令:指令格式固定为32位长度,使指令译码结构简单,效率提高。 (4)3地址指令格式:采用三地址指令格式、较多寄存器和对称的指令格式便于生成优化代码,降低编译开销(5)指令流水线技术:ARM采用多级流水线技术,以提高指令执行的效率。 2、请你从技术的角度和系统地角度给出嵌入式系统的定义。P1 以应用为中心,计算机技术为基础,软硬件可剪裁,适应应用系统对功能,成本,体积,可靠性,功耗严格要求的计算机系统。 3、uCLinux内核移植包括哪些主要任务?并对每个任务进行简单的说明。P286 (1)配置内核。uCLinux常用的配置选项包括系统及其存储器配置、网络支持、USB支持、显示器支持以及触摸支持等。 (2)编译内核。编译内核主要包括使用Make Dep建立依赖关系、使用Make编译内核、使用MakezImage编译压缩核 心(zImage)。 (3)下载、运行、调试内核。可以通过调试器下载内核并运行,也可以通过Boot Loader将内核烧写到FLASH中,然 后运行uCLinux。 4、请你说明系统从异常处理程序中返回需要执行哪些操作?P40 (1)恢复原来被保护的用户寄存器 (2)将SPSR_mode寄存器值复制到CPSR中,使得CPSR从相应的SPSR中恢复,以恢复被中断的程序工作状态。 (3)根据异常类型将PC值恢复成断点地址,以执行用户原来运行着的程序。 (4)清除CPSR中的中断禁止标志I和F,开放外部中断和快速中断。

最新嵌入式系统考试试题

嵌入式系统2012考 试试题

(本大题共10个小题,每小题1分,共10分) 1、以下说法不正确的是()。 A、任务可以有类型说明 B、任务可以返回一个数值 C、任务可以有形参变量 D、任务是一个无限循环 2、用图形点阵的方式显示一个16*16点阵汉字需要()字节。 A、8 B、32 C、16 D、64 3、μCOS-II操作系统中最多可以管理()个任务。 A、64 B、56 C、128 D、63 4、存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式 存储,则2000H存储单元的内容为()。d A、0x21 B、0x68 C、0x65 D、0x02 5、以ARM为内核的微处理器是()位的。d A、4位 B、8位 C、16位 D、32位 6、RS232-C串口通信中,表示逻辑1的电平是()。d A、0v B、3.3v C、+5v~+15v D、-5v~-15v 7、寄存器R14除了可以做通用寄存器外,还可以做()。b

A、程序计数器 B、链接寄存器 C、栈指针寄存器 D、基址寄存器 8、IRQ中断的入口地址是()。 A、0x00000000 B、0x00000008 C、0x00000018 D、0x00000014 9、采用RS232-C串行通信至少需要三根线,其中不包括()。 A、电源线 B、地线 C、发送数据线 D、接收数据线 10、Unicode编码与()编码方式兼容。 A、ASCII码 B、GBK C、GB2312 D、区位码 二、填空题(本大题共24个空,每空1分,共24分) 11、发展到现在,常用的操作系统包括三大类,分别为:批处理系统、 分时系统、和实时系统。 12、在图形操作系统中,字符通常有两种存储方式:一种是方式;一种是 方式。在嵌入式开发系统中一般使用方式。 13、ARM7指令系统采用三级流水线指令,分别包括:、、 和。 14、ARM处理器有七种工作模式,分别为、、、、 、、和状态。见第二套题的19题 15、OSTaskSuspend (self)可把正在运行的任务挂起,参数self指任务本身。

最新嵌入式系统期末考试题库及答案

《嵌入式系统》试题库 一、填空题 1、嵌入式系统的基本定义为:以应用中心,以计算机技术为基础,软件硬件可裁剪,适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。 2、从模块结构来看,嵌入式系统由三大部分组成,分别是:硬件、软件和开发平台。 3、从层次角度来看,嵌入式系统由四大部分组成,分别是:应用软件层、操作系统层、板级支持包(或硬件抽象层)和硬件层。 4、嵌入式产品的主要度量指标包括:上市时间、设计成本和产品质量。 5、嵌入式系统的设计过程包括:需求分析、规格说明、体系结构设计、构件设计、系统集成和系统测试。 6、需求分析包括:功能性需求分析和非功能性需求分析。 7、确定输入信号是数字信号还是模拟信号属于功能性需求。 8、确定系统的物理尺寸和重量属于非功能性需求。 9、在嵌入式系统的设计过程中,其中规格说明解决“做什么”。 10、在嵌入式系统的设计过程中,其中体系结构设计解决“如何做”。 11、在嵌入式系统的设计过程中,软硬件划分应该在体系结构设计阶段完成。 12、在嵌入式系统的设计过程中,处理器的选择应该在体系结构设计阶段完成。 13、在嵌入式系统的设计过程中,嵌入式操作系统的选择应该在体系结构设计阶段完成。 14、在嵌入式系统的设计过程中,完成原理图设计应在构件设计阶段完成。 15、在嵌入式系统的设计过程中,完成版图设计应在构件设计阶段完成。 16、在嵌入式系统的设计过程中,完成软件设计应在构件设计阶段完成。 17、反映嵌入式系统设计人员的水平能力主要在于总体设计(需求分析、规格说明和体系结构设计)和系统调试。 18、设计流程指的是设计过程中所经历的过程步骤。 19、设计重用技术主要分为基于IP 核的模块级重用和基于平台的系统级重用。 20、软硬件协同设计由系统描述、软硬件划分、软硬件协同综合以及软硬件协同模拟与验证几个阶段组成。 21、嵌入式处理器的分类包括三种,分别是:嵌入式微处理器、微控制器(或单片机)和

嵌入式系统模拟试题及答案

学习中心/函授站_ 姓名学号 西安电子科技大学网络与继续教育学 院 2014学年下学期 《嵌入式系统》期末考试试题 (综合大作业) 题号一二三四五总分 题分2010302020 得分 考试说明: 1、大作业于2014年12月25日下发,2015年1月10日交回; 2、考试必须独立完成,如发现抄袭、雷同均按零分计; 3、答案须手写完成,要求字迹工整、卷面干净。 一、问题简述(每小题4分,共20分) 1、简述嵌入式系统的定义和组成结构。 答:嵌入式系统是以应用为中心,以计算机技术为基础,并软硬件可剪裁、功能、 ,可靠性、体积、重量、成本、功耗、成本、安装方式等方面符合要求的专用计算机系统。 嵌入式系统一般由嵌入式微处理器、存储与I/O部分、外设与执行部分、嵌入式软件等四个部分组成。 2、简单说明ARM微处理器的特点。 答:(1) 体积小、低功耗、低成本、高性能。 (2) 支持Thumb(16位)/ARM(32位)双指令集,能很好地兼 容8位/16位器件。

(3) 大量使用寄存器,指令执行速度更快。 (4) 大多数数据操作都在寄存器中完成,通过Load/Store结 构在内存和寄存器之间批量传递数据。 (5) 寻址方式灵活简单,执行效率高。 (6) 指令长度固定。 3、简述嵌入式系统产品的设计和开发过程。 答:①在嵌入式系统的开发过程中,一般采用的方法是首先在通用PC机上的集成开发环境中编程;②然后通过交叉编译和链接,将程序转换成目标平台(嵌入式系统)可以运行的二进制代码;③接着通过嵌入式调试系统调试正确;④最后将程序下载到目标平台上运行。 要强调,选择合适的开发工具和调试工具,对整个嵌入式系统的开发都非常重要。 4、简述嵌入式系统设计中要考虑的因素。 答:在嵌入式系统的开发过程中,要考虑到实时性、可靠性、稳 定性、可维护性、可升级、可配置、易于操作、接口规范、抗干 扰、物理尺寸、重量、功耗、成本、开发周期等多种因素。 5、什么是BootLoader,了解其在嵌入式系统中作用。 答:就是启动载入或引导加载又叫自举装载。由于系统加电后需 要首先运行BootLoader这段程序,因此它需要放在系统加电后 最先取指令的地址上。嵌入式处理器的生产厂商都为其处理器预 先安排了一个在系统加电或复位后最先取指令的地址。 二、名词解释(每小题2分,共10分) 1、DSP(Digital Signal Processor),数字信号处理器,一种特别用于快速处理数字信号的微处理器。DSP处理器对系统结构和指令进行了特殊设计,使其适合于执行DSP算法,编译效率较高,指令执行速度也较高。 2、RTOS Real Time Operating System. 译为实时操作系统。实时系统是指一个能够在指定的或者确定的时间内,实现系统功能和对外部或内部、同步或异步事件作出响应的系统。 3、BSP设计板级支持包(BSP)的目的主要是为驱动程序提供访问硬件设备寄存器的函数包,从而实现对操作系统的支持。类似于PC机上的BIOS,是一个承上启下的软件层次。由嵌入OS和用户开发相结合取得。BSP一般是在嵌入式系统上固化存放。 4、总线竞争就是在同一总线上,同一时刻,有两个以上器件要通

相关主题
文本预览
相关文档 最新文档