嵌入式Linux应用程序开发过程考核【附答案】.doc

上传人:灯火****19 文档编号:138198766 上传时间:2020-07-14 格式:DOC 页数:6 大小:32.50KB
返回 下载 相关 举报
嵌入式Linux应用程序开发过程考核【附答案】.doc_第1页
第1页 / 共6页
嵌入式Linux应用程序开发过程考核【附答案】.doc_第2页
第2页 / 共6页
嵌入式Linux应用程序开发过程考核【附答案】.doc_第3页
第3页 / 共6页
嵌入式Linux应用程序开发过程考核【附答案】.doc_第4页
第4页 / 共6页
嵌入式Linux应用程序开发过程考核【附答案】.doc_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《嵌入式Linux应用程序开发过程考核【附答案】.doc》由会员分享,可在线阅读,更多相关《嵌入式Linux应用程序开发过程考核【附答案】.doc(6页珍藏版)》请在金锄头文库上搜索。

1、过程考核一1、ARM7采用采用3级流水线,而ARM9采用5级流水线,其时钟频率更高,指令执行效率也有了较大提高ARM7采用冯诺依曼结构,而ARM9采用哈佛结构,支持指令Cache和数据Cache ,具有更高的数据处理能力ARM9支持MMU,能够真正实现内存保护,所以比ARM7具有更强的稳定性和可靠性2、在一种计算机平台运行的编译程序,能编译出在另外一平台上执行的代码,我们就称这种编译器支持交叉编译。这个编译过程就叫交叉编译.原因:由于一般通用计算机拥有非常丰富的系统资源、使用方便的集成开发环境和调试工具等,而嵌入式系统的系统资源非常紧缺,无法在其上运行相关的编译工具,因此,嵌入式系统的开发需要

2、借助宿主机(通用计算机)来编译出目标机的可执行代码。3、假设现有三个 c 程序 main.c, mytool1.c, mytool2.c, 其中主程序在 main.c中,编译命令如下,试编写makefile文件。gcc -c main.c gcc -c mytool1.c gcc -c mytool2.c gcc -o main main.o mytool1.o mytool2.o 要求:使用自定义变量及自动变量解:OBJS := main.o mytool1.o mytool2.oCC :=gcc main:$(OBJS) $(CC) -o $ $ main.o:main.c mytool1

3、.h mytool2.h $(CC) -c $ mytool1.o:mytool1.c mytool1.h $(CC) -c $ mytool2.o:mytool2.c mytool2.h $(CC) -c $ 4、文件比较命令:diff选项 文件1 文件2补丁命令:patch 选项 待patch的文件patch文件关系:patch命令跟diff配合使用,把生成的补丁文件应用到现有代码上。5、列出gcc编译器常用参数,并举例说明其用法。-c选项:只编译不链接,生成目标文件“.o”-S选项:只编译不汇编,生成汇编代码,-E选项:只进行预编译,不进行其他处理-o file:将file文件指定为输出

4、文件-g :在可执行程序中包含便准调试信息例如: gcc o Test Test.c执行该指令会在当前目录下生成一个名为Test的可执行文件过程考核二1、bootloader第二阶段主要工作有哪些?用汇编语言跳转到main()入口函数初始化本阶段要使用到的硬件设备检测系统的内存映射加载内核映像和根文件系统映像设置内核的启动参数2、列出底层文件I0及标准IO的主要函数,并说明这两种IO操作的区别。底层文件IO:open(),read(),write(),lseek(),close()标准IO: fopen(),fread(),fwrite(),fclose()底层文件I/O一般没有采用缓冲,而标

5、准I/O默认采用了缓冲机制;从操作的设备上来区分,底层文件I/O主要针对文件操作,读写硬盘等,它操作的是文件描述符,标准I/O针对的是控制台,打印输出到屏幕等,它操作的是字符流。3、守护进程的编写流程。创建子进程,父进程退出在子进程中创建新会话改变当前目录为根目录重设文件权限掩码关闭文件描述符5、管道及有名管道的区别。(1)无名管道只能用于具有亲缘关系的进程之间通信,而有名管道可以使互不相关的两个进程间彼此通信(2)无名管道不属于其他任何文件系统,并且只存在于内核的内存空间中;有名管道可以通过路径名来指出,并且在文件系统中是可见的(3) 一个进程向无名管道中写的内容被管道另一端的进程读出。写入

6、的内容每次都添加在管道缓冲区的末尾,并且每次都是从缓冲区的头部读出数据;FIFO严格遵循先进先出,对有名管道及FIFO的读总是从开始处返回数据,对它们的写则把数据添加到末尾6、wait函数和waitpid函数的区别。(1)wait可能阻塞调用者直到一个子进程终止,而waitpid则可以通过选项不会阻塞。(2)waitpid并不等待第一个终止的进程,它有选项可以控制它所等待的进程。2、嵌入式系统的定义:嵌入式系统是以应用为中心,以计算机技术为基础,采用可剪裁软硬件,适用于对功能、可靠性、成本、体积、功耗等有严格要求的专用计算机系统,用于实现对其他设备的控制、监视或管理等功能3、嵌入式系统与桌面通

7、用系统的区别(列出来两个)(1)嵌入式系统中运行的任务是专用而确定的,而桌面通用系统需要支持大量的、需求多样的应用程序(2) 嵌入式系统往往对实时性提出较高的要求。(3)嵌入式系统中使用的操作系统一般是实时操作系统(4)嵌入式系统运行需要高可靠性保障,比桌面系统的故障容忍能力弱很多8、linux 目录结构下面放什么(了解常用)/bin 该目录中存放Linux的常用命令/boot 该目录下存放的都是系统启动时要用到的程序/dev 该目录包含了Linux系统中使用的所有外部设备/usr 用户应用程序和文件都存放在该目录下/etc该目录存放了系统管理时要用到的各种配置文件和子目录/home 用来存放

8、该用户的主目录。/lib 该目录用来存放系统动态连接共享库/mnt可以临时将别的文件系统挂在该目录下10、文件比较命令diff:比较两个不同的文件或不同目录下的两个同名文件功能,并生成补丁文件。 格式:diff选项 文件1 文件2diff比较文件1和文件2的不同之处,并按照选项所指定的格式加以输出。diff的格式分为命令格式和上下文格式,其中上下文格式又包括了旧版上下文格式和新版上下文格式,命令格式分为标准命令格式、简单命令格式及混合命令格式,它们之间的区别会在使用实例中进行详细地讲解。当选项缺省时,diff默认使用混合命令格式。 11、网络相关命令ifconfig:查看和配置网络接口的参数;

9、ifconfig 选项 网络接口;ftp:利用ftp协议上传和下载文件;telnet:利用telnet协议浏览信息;telent 选项 IP地址/域名12、GCC编译器能编译哪些程序?编译的四个过程?可以编译如C、C+、Object C、Java、Fortran、Pascal、Modula-3和Ada等多种语言 四个过程:预处理,编译,汇编,链接9、静态库.a与动态库.so的比较动态库只有在使用它的程序执行时才被链接使用,而不是将需要的部分直接编译入可执行文件中,并且一个动态库可以被多个程序使用故可称为共享库,而静态库将会整合到程序中,因此在程序执行时不用加载静态库23、进程和程序区别和联系:

10、程序是静态的,它是一些保存在磁盘上的指令的有序集合,没有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动态创建、调度和消亡的整个过程。它是程序执行和资源管理的最小单位。17、主机环境变量配置/etc/profile是系统启动过程执行的一个脚本,对所有用户都生效。/.bash_profile是用户的脚本,在用户登录时生效。/.bashrc也是用户的脚本,在/.bash_profile中调用生效。把下述命令添加到其中一个文件中,之后再注销重新登录即可。PATH=$PATH :/usr/share/jdk1.5.0_05jdkexport PATH注解:a.将/usr/share

11、/jdk1.5.0_05jdk 改为你的应用程序安装目录。b.linux下用冒号“:”来分隔路径。c.$PATH / $CLASSPATH / $JAVA_HOME 是用来引用原来的环境变量的值,在设置环境变量时特别要注意不能把原来的值给覆盖掉了,这是一种常见的错误。d.export是把个变量导出为全局变量。18、串口命令台:串行通讯接口很适合作为控制台,在各种操作系统上一般都有现成的控制台程序可以使用。Linux系统通常使用minicom串口通讯工具。Minicom的配置界面是菜单方式。在Shell下执行“minicom s”命令,出现配置菜单。19、bootloader的作用:初始化硬件设

12、备、建立内存空间的映射图,下载操作系统映像文件到SDRAM中,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核或用户应用程序准备好正确的环境。常见:u-boot,vivi,blob21、文件描述符:是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。当打开一个现存文件或创建一个新文件时,内核向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。一个进程启动时,都会打开3个文件:0:标准输入1:标准输出2.标准出错27、进程的执行模式:1)用户模式:运

13、行的是用户程序/应用程序或者内核之外的系统程序;2)内核模式:运行操作系统核心程序。用户程序执行过程中出现系统调用或者发生中断事件,用户模式切换成内核模式。29、exec作用exec函数族就提供了一个在进程中启动另一个程序执行的方法。(它可以根据指定的文件名或目录名找到可执行文件,并用它来取代原调用进程的数据段、代码段和堆栈段,在执行完之后,原调用进程的内容除了进程号外,其他全部被新的进程替换了。)35、阻塞式通信是指, 当试图对文件描述符进行读写时, 如果当时没有东西可读,或者暂时不可写, 程序就进入等待状态, 直到有东西可读或者可写为止。非阻塞状态, 如果没有东西可读, 或者不可写, 读写

14、函数马上返回, 而不会等待。34、accept函数等待并接受客户请求:函数原型:int accept(int sockfd, struct sockaddr* addr, socklen_t* len)返回:非负描述字成功, -1失败。参数sockfd就是上面解释中的监听套接字,这个套接字用来监听一个端口,当有一个客户与服务器连接时,它使用这个一个端口号。参数addr ,是一个结果参数,它用来接受一个返回值,这返回值指定客户端的地址,如果对客户的地址不感兴趣,那么可以把这个值设置为NULL。参数len ,也是结果的参数,用来接受上述addr的结构的大小的,它指明addr结构所占有的字节个数。同

15、样的,它也可以被设置为NULL。 如果accept成功返回,则服务器与客户已经正确建立连接了此时服务器通过accept返回的套接字来完成与客户的通信。30、进程间通信:通信的种类:1)管道及有名管道2)信号3)消息队列4)共享内存5)信号量6)套接字信号来源:硬件的原因(比如我们按下了键盘);软件的原因(比如我们使用系统函数或者是命令发出信号).信号的种类:SIGTRMIN:不可靠信号;SIGTRMAX:可靠信号信号生命周期:一个完整的信号生命周期可以分为3个重要阶段,这3个阶段由4个重要事件来刻画的:信号产生、信号在进程中注册、信号在进程中注销、执行信号处理函数信号处理方式:1忽略信号,即对信号不做任何处理,但是有两个信号不能忽略,即SIGKILL及SIGSTOP。2捕捉信号,定义信号处理函数,当信号发生时,执行相应的自定义处理函数。3执行缺省操作,Linux对每种信号都规定了默认操作。38、Linux系统的设备分为三类:字符设备、块设备和网络设备。Linux设备驱动程序与外界的接口可以分为如下3个部分:1)驱动程序与操作系统内核的接口:这是通过数据结构file_operations来完成的。2)驱动程序与系统引导的接口:这部分利用驱动程序对设备进行初始化3)驱动程序与设备的接口:这部分描述了驱动程序如何与设备进行交互,这与具体设备密切相关。39、模块在调用insmod命令时被

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 规章制度

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号