嵌入式系统复习绵阳职业技术学院计应班.docx

上传人:b****4 文档编号:4931244 上传时间:2023-05-07 格式:DOCX 页数:17 大小:29.49KB
下载 相关 举报
嵌入式系统复习绵阳职业技术学院计应班.docx_第1页
第1页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第2页
第2页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第3页
第3页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第4页
第4页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第5页
第5页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第6页
第6页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第7页
第7页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第8页
第8页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第9页
第9页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第10页
第10页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第11页
第11页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第12页
第12页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第13页
第13页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第14页
第14页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第15页
第15页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第16页
第16页 / 共17页
嵌入式系统复习绵阳职业技术学院计应班.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

嵌入式系统复习绵阳职业技术学院计应班.docx

《嵌入式系统复习绵阳职业技术学院计应班.docx》由会员分享,可在线阅读,更多相关《嵌入式系统复习绵阳职业技术学院计应班.docx(17页珍藏版)》请在冰点文库上搜索。

嵌入式系统复习绵阳职业技术学院计应班.docx

嵌入式系统复习绵阳职业技术学院计应班

考试类型:

一、Linux相关操作命令(10%)

二、单项选择题(30%)

三、问答题(32%)

四、阅读编程及应用题(28%)

平时练习:

(复习提纲)

1、熟悉用户系统相关命令(useradd、passwd、su);

2、熟悉文件操作相关命令(cp、mv、rm、mkdir、cd、pwd、ls、chmod、df、du);

3、熟悉压缩打包相关命令(tar、unzip);

4、掌握网络相关命令(ifconfig、netstar、grep)

5、掌握其他命令(rpm、mount、unmoun、find、ps、man、);

2.命令应用举例

①用useradd命令添加bc用户

参考:

①cd︺/

②useradd︺bc

②用passwd命令设置bc账户密码

参考:

①passwordbc

②根据提示设置密码。

③用cp命令将/home目录下的test文件复制到/tmp目录下

参考:

cp︺/home/test︺/tmp/

④用mv命令将/home下test更名为test1

参考:

mv︺/home/test︺/home/test1

⑤用rm命令删除/home下的test1文件

参考:

rm︺–rf︺/home/test

⑥用mkdir在/home下创建workdir目录

参考:

mkdir︺/home/workdir

⑦用cd命令进入/home/workdir目录

参考:

cd︺/home/workdir

⑧用pwd命令显示当前工作命令的绝对路径

参考:

pwd

⑨用ls命令显示/home目录下的文件与目录

参考:

ls–a/home

(-a:

列出目录中所有文件,包括“.”开头的隐藏文件)

⑩用chmod命令给hello.c文件的所有者、同组用户加上写的权限。

参考:

chmodu+wg+whello.c

⑾用tar命令将/home/tmp下的所有文件和目录打包成一个tmp.tar文件。

参考:

tar–cvftmp.tar/home/tmp/

⑿用tar命令将打包文件tmp.tar在当前目录下解开。

参考:

tar–xvzftmp.tar/home/tmp/

⒀用ifconfig命令配置网卡eth0的IP地址为192.168.0.198;用ifconfig暂停(恢复)网卡eth0的工作;

参考:

①ifconfigeth0192.168.0.198

;②ifconfigeth0down

⒁用netstat命令查看系统中所有的网络监听端口。

参考:

netstat–a

⒂用grep命令在当前目录及子目录中查找包含w字符串的所有文件。

参考:

grep“w”./–rn

⒃用rpm命令安装名为VMwareTools-6.02-59824.i386的文件。

用rpm命令列出所有已安装的rpm文件。

参考:

①rpmVMwareTools-6.02-59824.i386

②rpm-qa

⒄用mount命令将光驱挂载到/mnt目录下,支持中文显示。

参考:

mount–oiocharset=gb2312/dev/cdrom/mnt/cdrom

⒅用find命令在当前目录及子目录下寻找名为test的文件。

参考:

find./-name‘test’

⒆用ps命令查看系统中的所有进程。

参考:

find./-name‘test’

⒇用man命令查看grep命令的使用方法。

参考:

mangrep

选择题型举例:

1.RS232-C串口通信中,表示逻辑1的电平是(D)。

A、0vB、3.3vC、+5v~+15vD、-5v~-15v

2.ARM汇编语句“ADDR0,R2,R3,LSL#1”的作用是(A)。

A.R0=R2+(R3<<1)B.R0=(R2<<1)+R3

C.R3=R0+(R2<<1)D.(R3<<1)=R0+R2

3.若R1=2000H,(2000H)=0x86,(2008H)=0x39,则执行指令LDRR0,[R1,#8]!

后R0的值为(D)。

A.0x2000B.0x86C.0x2008D.0x39

4.寄存器R13除了可以做通用寄存器外,还可以做(C)。

A、程序计数器B、链接寄存器C、栈指针寄存器D、基址寄存器

5.ARM指令集和Thumb指令集分别是(D)位的。

A.8位,16位B.16位,32位C.16位,16位D.32位,16位

6.存储一个32位数0x2168465到2000H~2003H四个字节单元中,若以大端模式存储,则2000H存储单元的内容为(A)。

A、0x21B、0x68C、0x65D、0x02

7.S3C2420XI/O口常用的控制器是(D)。

(1)端口控制寄存器(GPACON-GPHCON)。

(2)端口数据寄存器(GPADAT-GPHDAT)。

(3)外部中断控制寄存器(EXTINTN)。

(4)以上都是。

8.和PC机系统相比下列哪个不是嵌入式系统独具的特点(C)

A、系统内核小B、专用性强C、可执行多任务D、系统精简

9.S3C2410X处理器为用户进行应用设计提供了支持多主总线的IIC接口。

处理器提供符合IIC协议的设备连接的串行连接线为(C)。

A.SCL和RTXB.RTX和RCXC.SCL和SDAD.SDA和RCX

10.如果BootLoader、内核、启动参数以及其他的系统映像四部分在固态存储设备上分别存放,则其存储结构的分配顺序应当是(C)。

A.文件系统、内核、启动参数、Bootloader。

B.启动参数、Bootloader、内核、文件系统。

C.Bootloader、内核、启动参数、文件系统。

D.Bootloader、启动参数、内核、文件系统。

11.(B)不是进程和程序的区别。

A.程序是一组有序的静态指令,进程是一次程序的执行过程。

B.程序只能在前台运行,而进程可以在前台或后台运行。

C.程序可以长期保存,进程是暂时的。

D.程序没有状态,而进程是有状态的。

12.要配置NFS服务器,在服务器端主要配置(C)文件

A./etc/rc.d/rc.inet1B./etc/rc.d/rc.M

C./etc/exportsD./etc/rc.d/rc.S

13.进程有(B)三种状态。

A.准备态、执行态和退出态B.精确太、模糊太和随机态

B.手工态、自动态和自由态D.运行态、就绪态和等待态

14.嵌入式系统的开发通常是在交叉开发环境实现的,交叉开发环境是(A)

A.在宿主机上开发,在目标机上运行。

B.在目标机上开发,在宿主机上运行。

C.在宿主机上开发,在宿主机上运行。

D.在目标机上开发,在目标机上运行。

判断题型举例:

1.ARM处理器结构体系中具有T变种处理器核可以工作在ARM状态和Thumb状态。

(√)

2.由于CPU内部寄存器的访问速度较高,根据ATPC标准,应尽可能使函数的参数控制在4个以下。

(√)

3.S3C2410的处理器对内存的访问只能通过Load/Store指令来实现。

(√)

4.C语言程序可以嵌套加入汇编程序模块。

(√)

5.ARM处理器的运行模式可通过中断或异常处理改变(√)

6.嵌入式软件一般情况下调试器和被调试程序运行在相同的计算机上。

(x)

7.每个人的口袋中都装着ARM。

(√)

8.ARMCPU工作的System与User模式的主要异同点是:

System模式与User模式的运行环境一样,但是它可以不受任何限制地访问任何资源,该模式主要用于运行系统中的一些特权任务(√)

问答题、编程题举例:

1、嵌入式系统的定义、主要特点。

答案要点:

目前国内一个普遍被认同的定义是:

以应用为中心、以计算机技术为基础、软件硬件可裁剪、适应应用系统对功能、可靠性、成本、体积、功耗严格要求的专用计算机系统。

主要特点:

①是专用的计算机系统,用于特定的任务;②资源较少,可以裁减;③功耗低,体积小,集成度高,成本低;④使用实时操作系统;⑤可靠性要求更高,具有系统测试和可靠性评估体系;⑥运行环境差异大;⑦大部分程序固化在ROM中;⑧较长的生命周期;⑨嵌入式微处理器通常包含专用调试电路

2、实验箱中的系统软件由那几部分组成?

如何给下位机配置(烧写)文件系统?

下位机的软件系统由Bootloader 系统内核、根文件系统和应用程序四部分组成。

Bootloader相当于PC机上的BIOS,在下位机加电时自动运行,执行硬件初始化和调用系统内核的功能。

Bootloader分为U-boot、Vivi、Blob、ARMBoot、RedBoot等多种,本实验使用实验箱自带光盘中的vivi。

如何给实验箱烧写文件系统,请参考教材P196~198。

3、ARM处理器中,引起异常的原因有哪些?

原因主要:

a.指令执行引起的异常,如:

软件中断、未定义指令(包括所要求的协处理器不存在是的协处理器指令)、预取址中止(存储器故障)、数据中止。

b.外部产生的中断,如:

复位、FIQ、IRQ。

4、Bootloader的作用是什么?

参考:

简答说来,Bootloader就是操作系统内核运行的一小段程序。

完成初始化系统硬件及设置的任务,包括CPU、SDRAM、Flash和串口等的初始化,以及时钟的设置和存储器的映射。

也可以这样描述:

BootLoader是系统加电后、操作系统内核或用户应用程序运行之前,首先必须运行的一段程序代码。

通过这段程序,为最终调用操作系统内核、运行用户应用程序准备好正确的环境。

(对于嵌入式系统来说,有的使用操作系统,也有的不使用操作系统,但在系统启动时都必须运行BootLoader,为系统运行准备好软硬件环境。

5、简述网络文件系统NFS,并说明其作用。

NFS即网络文件系统,是主机通过网络进行文件共享的协议。

通常用于Unix和Linux系统中。

NFS服务器的共享目录可以被NFS客户端作为文件系统挂载到本地。

NFS通常用于局域网中的文件共享,其特点是不需要将文件下载到本地即可访问。

6、ARM的异常有哪几种,各进入何种工作模式?

他们退出各采用什么指令?

答:

1)复位(Reset)异常(管理模式);

2)未定义指令(undefinedinstruction)异常(未定义模式);

3)软件中断(SWI)异常(管理模式);

4)指令预取中止(PrefechAbort)异常(中止模式);

5)数据访问中止(DataAbort)(中止模式);

6)快速中断请求(FIQ)(FIQ模式);

7)外部中断请求(IRQ)(IRQ模式)。

异常返回指令:

1)SWI,未定义的返回:

MOVSPC,R14;2)IRQ,FIQ,预取中止的返回:

SUBSPC,R14,#4;3)数据中止返回并重新存取:

SUBSPC,R14,#8

异常中断的优先级:

复位(最高优先级)-->数据异常中止--->FIQ-->IRQ--->预取指异常中止--->SWI---->未定义指令(包括缺协处理器)。

7、假定在目录/home/arm下有一个C程序,该程序由几个单独的文件组成,而这几个文件又分别包含了其他文件,如下表所示:

文件

包含文件

main.c

stdio.htable.h

list.c

list.h

symbol.c

symbol.h

Table.c

table.h

Table.h

symbol.h,list.h

请完成下列任务:

(1)编写Makefile文件,最终的目标文件为hello(交叉编译器为arm-unknown-linux-gcc)

(2)将目标机/home/arm目录通过网络文件系统挂载/mnt到宿主机(其IP为192.168.9.10)的。

解答:

(1)Makefile文件的编写:

①最容易理解的写法

hello:

main.olist.osymbol.otable.o

armv4l-unknown-linux-gcc-oprogmain.olist.osymbol.otable.o#行前按TAB键

main.o:

main.ctable.hsymbol.hlist.h

armv4l-unknown-linux-gcc-c-omain.omian.c#行前按TAB键

list.o:

list.clist.h

armv4l-unknown-linux-gcc-c-olist.olist.c#\行前按TAB键

symbol.o:

symbol.csymbol.h

armv4l-unknown-linux-gcc-c-osymbol.osymbol.c#\行前按TAB键

table.o:

table.ctable.hsymbol.hlist.h

armv4l-unknown-linux-gcc-c-otable.otable.c#\行前按TAB键

clean:

rmhello*.o#\行前按TAB键

②更好(高效)的写法是:

CC=armv4l-unknown-linux-gcc#指明采用交叉编译器

EXEC=hello#表示编译后生成的可执行文件名为fact

OBJS=main.olist.osymbol.otable.o#给出目标文件列表

CFLAGS+=#给出编译参数

LDFLAGS+=-static#给出链接参数

all:

$(EXEC)#编译主入口

$(EXEC):

$(OBJS)

$(CC)$(LDFLAGS)-o$@$(OBJS)#注意行前空白由一个TAB制表符生成

clean:

#清除编译结果

-rm-f$(EXEC)*.elf*.gdb*.o#注意行前空白由一个TAB制表符生成

(2)mount-tnfs-onolock192.168.0.10:

/home/arm/mnt

8、什么是交叉编译?

嵌入式系统开发中为什么要使用交叉编译?

所谓交叉编译,是指在一个平台上编译生成在另一个平台上运行的可执行程序。

之所以采用交叉编译,这是因为目标平台上不具备直接运行开发环境的条件。

9、嵌入式开发的基本过程有哪几步?

答:

嵌入式开发的基本过程为:

采用相应的编辑工具编写应用程序,然后在上位机编译调试应用程序,然后使用NFS将上位机上编译好的文件下载到下位机上运行。

10、ARM支持哪两种数据存储格式,简单描述各自特点。

解答:

分为大端格式和小端格式。

大端格式:

被存放字数据的高字节存储在存储系统的低地址中,而被存放的字数据的低字节则存放在存储系统的高地址中。

小端格式:

与大端存储格式相反,在小端存储格式中,存储系统的低地址中存放的是被放字数据中的低字节内容,存储系统的高地址存放的是被存字数据中的高字节内容。

11、程序、进程、线程有何区别?

要点:

程序是编译后形成的可执行代码,是静止的。

进程是程序的一次执行,是活动的。

线程是进程的可执行单元,同一进程的不同线程共享进程的资源和地址空间。

12、如何在c语言程序中内嵌汇编?

答:

内嵌的汇编指令包括大部分的ARM指令和Thumb指令,但是不能直接引用C的变量定义,数据交换必须通过ATPCS进行。

嵌入式汇编在形式上表现为独立定义的函数体。

(具体请参考教材Page183~184代码实例9-10、9-11)

13、编写一个打印3000~5000之间素数的程序,将上述程序的源代码分散在两个文件中,其中一个文件包含main()函数,另一个文件包含prime()函数。

编写makefile文件实现对这两个文件的编译。

修改其中一个文件后,再进行编译,观察make的输出信息。

假设上述程序的源代码包含两个C语言源文件,a.c和a1.c,其中main()函数包含在a.c中,如下所示。

a.c:

#include

#include

intprime(int);

voidmain()

{

inta,k;

for(a=3000;a<=5000;a++)

{

k=prime(a);

if(k==1)printf("%d是素数\n",a);

elseprintf("%d不是素数\n",a);

}

}

a1.c:

intprime(intx)

{

inti,j;

i=(x-1);

for(j=2;j<=i;j++)

{

if(x%j==0)

break;

}

if(j

elsereturn1;

}

该工程的makefile文件内容如下。

makefile:

CC=armv4l-unknown-linux-gcc#指明采用交叉编译器

EXEC=fact#表示编译后生成的可执行文件名为fact

OBJS=a.oa1.o#给出目标文件列表

CFLAGS+=#给出编译参数

LDFLAGS+=-static#给出链接参数

all:

$(EXEC)#编译主入口

$(EXEC):

$(OBJS)

$(CC)$(LDFLAGS)-o$@$(OBJS)#注意行前空白由一个TAB制表符生成

clean:

#清除编译结果

-rm-f$(EXEC)*.elf*.gdb*.o#注意行前空白由一个TAB制表符生成

以上文件准备好以后,执行命令“make”或者“makeall”,将根据makefile的内容对该项目进行自动编译,生成可执行文件fact;执行命令“makefact”将运行可执行文件fact;执行命令“makeclean”将删除所有目标文件。

14、如何将宿主机(虚拟机)和下位机(实验箱)的IP地址配置在同一网段?

(若下位机的IP地址为192.168.0.121,上位机的IP地址为202.201.33.15,请写出将上位机和下位机的IP地址配置在同一个网段的过程教材P195(3))

解答:

在上位机的终端命令窗口中键入下面的命令,可以将上位机和下位机的IP地址配置在同一个网段192.168.0.*

ifconfigeth0192.168.0.252netmask255.255.255.0

13.给定一个32位整形变量a,1)设置a的bit30位为1。

2)清除a的bit22位。

以上两个操作中,要保持其他位不变。

写出相关的汇编代码或C语言代码片段。

解答:

参考答案

汇编代码片段:

LDRR0,=0x40000000;D31=1,D30~D0=0

LDRR1,a

EORR1,R1,R0;R1(or)R0saveR1

LDRR0,=0xFFBFFFFF;D22=0,其余D为1

ANDR1,R1,R0;R1(and)R0saveR1

SRTR1,a;R1saveavariable

C代码片段:

inta;

a|=(1<<31);//a31=1,其余位不变。

a&=~(1<<22);//a22=0,其余位不变。

15.ARM汇编和C语言混合编程的例子:

(参考教材P178实例9-2)

#include

voidmy_strcpy(constchar*src,char*dst)

{

intch;

__asm

{

loop:

#ifndef__thumb

//ARMversion

LDRBch,[src],#1

STRBch,[dst],#1

#else

//Thumbversion

LDRBch,[src]

ADDsrc,#1

STRBch,[dst]

ADDdst,#1

#endif

CMPch,#0

BNEloop

}

}

 

intmain(void)

{

constchar*a="Helloworld!

";

charb[20];

my_strcpy(a,b);

printf("Originalstring:

'%s'\n",a);

printf("Copiedstring:

'%s'\n",b);

return0;

}

实验部分:

请参考Lab_9教材作者给的程序,编写出让博创UP-TECH实验箱S3c2410两位数码管显示:

教材的原来的程序功能:

00(delay1.5s)→11→22→。

→99

#include

#include

#include

#include

#include

#include

#defineTUBE_IOCTROL0x11

#defineDOT_IOCTROL0x12

voidjmdelay(intn){

inti,j,k;

for(i=0;i

for(j=0;j<100;j++)

for(k=0;k<100;k++);

}

intmain(){

intfd;

inti;

unsignedintLEDWORD;

unsignedcharLEDCODE[11]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff};

unsignedcharman_data[9][8]={

{0x4c,0x92,0x92,0x7c,0x0c,0x12,0x12,0x0c},

{0,0,0,0,0,0,0x0b,0xd3},

{0,0,0,0,0x0b,0xd3,0x3c,0x48},

{0,0,0x0b,0xd3,0x3c,0x4b,0x20,0},

{0,0,0x03,0x13,0xfc,0x08,0,0},

{0,0,0,0x0b,0xd3,0x3c,0x48,0},

{0,0x0b,0xd3,0x3c,0x48,0x20,0,0},

{0,0x08,0x93,0x4b,0x3c,0x24,0x48,0x20},

{0x48,0x20,0,0,0,0,0,0}

};

fd=open("/dev/led/0raw",O_RDWR);

if(fd<0){

printf("####Leddeviceopenfail####\n");

return(-1);

}

LEDWORD=0xff00;

printf("willenterTUBELED,pleasewaiting..............\n");

LEDWORD=0xff00;

ioctl(fd,0x12,LEDWORD);

sleep

(1);

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 商务科技

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2