嵌入式常用定义整理

上传人:m**** 文档编号:546515657 上传时间:2023-04-02 格式:DOCX 页数:6 大小:30.60KB
返回 下载 相关 举报
嵌入式常用定义整理_第1页
第1页 / 共6页
嵌入式常用定义整理_第2页
第2页 / 共6页
嵌入式常用定义整理_第3页
第3页 / 共6页
嵌入式常用定义整理_第4页
第4页 / 共6页
嵌入式常用定义整理_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《嵌入式常用定义整理》由会员分享,可在线阅读,更多相关《嵌入式常用定义整理(6页珍藏版)》请在金锄头文库上搜索。

1、1. 什么是嵌入式系统,试从电器工程协会定义、常用定义、构成几个方面论述。 按照电器工程协会的定义,嵌入式系统是用来控制或者监视机器、装置、 工厂等大规模系统的设备。这个定义主要是从嵌入式系统的用途而设定的。 这与通用计算机功能的“大而全”形成了鲜明的对比。嵌入式系统更加常用的定义为:以应用为中心,以计算机技术为基础, 且软硬件可裁减,适应应用系统对功能、可靠性、成本、体积、功耗的严格 要求的专用计算机系统它主要由嵌入式微处理器、外围硬件设备、嵌入式操作系统以及用户应 用软件等部分组成。它具有“嵌入性”、“专用性”、“计算机系统”3 个基本 要素。2. 嵌入系统与通用计算机主要区别是什么?试从

2、组成、系统资源、开发方式、 二次开放性等几个方面论述。特征通用计算机嵌入式系统形式与类型实实在在的计算机,按其体系结构、运算 速度和规模可可分为大型机、中型机、小 型机和微机“看不见”的计算机,形式多样,应用领域广泛, 按其应用进行分类组成通用处理器、标准总线和外设,软硬件相 对独立面向特定应用的微处理器,总线和外设一般集成 在处理器内部,软硬件紧密结合系统资源系统资源充足,有丰富的编译器、集成开 发环境、调试器等系统资源紧缺,没有编译器等相关开发工具开发方式开发平台和运行平台都是通用计算机采用交叉编译方式,开发平台一般是通用计算 机,运行平台是嵌入式系统二次开发性应用程序可重新编程采用交叉编

3、译方式,开发平台一般是通用计算 机,运行平台是嵌入式系统发展目标编程功能电脑,普遍进入社会变为专用电脑,实现“普及计算”3. 简述常见的嵌入式存储器和特点(4 种以上)。1) ROM、SRAM、DRAM。根据掉电数据是否丢失,存储器可以分为RAM (随机存取器)和ROM (只读 存储器),其中 RAM 的访问速度比较快,但掉电后数据会丢失,而 ROM 掉电 后数据不会丢失。人们通常所说的内存即指系统中的 RAM。RAM又可分为SRAM (静态存储器)和DRAM (动态存储器)SRAM是利用双稳态触发器来保存信息的,只要不掉电,信息是不会丢失的。DRAM是利用MOS (金属氧化物半导体)电容存储

4、电荷来储存信息的,因此必 须通过不停的给电容充电来维持信息。DRAM的成本、集成度、功耗明显优于 SRAM。通常人们所说的 SDRAM 是 DRAM 的一种,它是同步动态存储器,利用单一的 系统时钟同步所有的地址数据和控制信号。使用 SDRAM 不但能提高系统的表 现,还能简化设计、提供高速的数据传输,在嵌入式系统中经常使用。(2) Flash 是一种非易失闪存技术,由于它具有和 ROM 一样掉电数据不会丢失 的特性。Flash主要分为NOR Flash和NAND Flash两种。NOR Flash的特点是在芯片内执行(Execute In Place),这样应用程序 可以直接在Flash内运

5、行,不必再把代码读到系统RAM中。NAND Flash 能提供极高的单元密度,可以达到高存储密度, NAND 读和写 操作采用512字节块,单元尺寸几乎是NOR器件的一半,同时由于生产过 程很简单,大大降低了生产的成本。 NAND Flash 中每个块的最大擦写次 数是100万次,是NOR Flash的10倍,这些使得NAND Flash越来越受到 人们的喜爱。4. 简述常见嵌入式软件交叉调试方式,并简单描述。 软件交叉调试方式主要是通过插入调试桩的方式来进行的。调试桩方式进行 调试是通过目标操作系统和调试器内分别加入某些功能模块,两者互通信息来进 行调试。该方式的典型调试器有 Gdb 调试器

6、。Gdb 的交叉调试器分为 GdbServer 和 GdbClient, 其中 GdbServer 就作为调试 桩在安装在目标板上, GdbClient 就是驻于本地的 Gdb 调试器。它们的调试原理图如图所示:5. Linux 中函数库有那 3种使用方式,简述之。Linux 中函数库可以有三种使用的形式:静态、共享和动态。静态库的代码 在编译时就已连接到开发人员开发的应用程序中,而共享库只是在程序开始运行 时才载入。动态库也是程序运行时载入,但是与共享库不同的是,动态库使用的库函数 不是在程序运行使开始载入,而是在程序中的语句需要时使用时才载入。动态库 可以在程序运行期间释放动态库所占用的内

7、存,腾出空间供其他程序使用。由于共享库和动态库并没有在程序中包括库函数的内容,只是包含了对库函 数的引用,因此代码的规模比较小。&简述NFS系统。NFS是Net work File Sys tem的简写,即网络文件系统。NFS允许一个系 统在网络上与他人共享目录和文件。通过使用 NFS,用户和程序可以像访问 本地文件一样访问远端系统上的文件。NFS的使用分为服务器端和客户端,其中服务器端提供要共享的文件, 而客户端通过挂载“ mount ”这一动作来实现对共享文件的访问操作。7. 简述栈和堆的区别。栈是由编译器在需要时分配的,不需要时自动清除的变量存储区。里面的变 量通常是局部变量、函数参数等

8、。堆是由malloc()函数(C+语言为new运算符) 分配的内存块,内存释放由程序员手动控制,在C语言为free函数完成(C+ 中为delete)。栈和堆的主要区别有以下几点:(1)管理方式不同。栈编译器自 动管理,无需程序员手工控制;而堆空间的申请释放工作由程序员控制,容易产 生内存泄漏。(2)空间大小不同。栈是向低地址扩展的数据结构,是一块连续的 内存区域。这句话的意思是栈顶的地址和栈的最大容量是系统预先规定好的,当 申请的空间超过栈的剩余空间时,将提示溢出。因此,用户能从栈获得的空间较 小。堆是向高地址扩展的数据结构,是不连续的内存区域。因为系统是用链表来 存储空闲内存地址的,且链表的

9、遍历方向是由低地址向高地址。由此可见,堆获 得的空间较灵活,也较大。栈中元素都是一一对应的,不会存在一个内存块从栈 中间弹出的情况。 ( 3 )是否产生碎片。对于堆来讲,频繁的malloc/free(new/delete)势必会造成内存空间的不连续,从而造成大量的碎片,使程序效 率降低(虽然程序在退出后操作系统会对内存进行回收管理)。对于栈来讲,则 不会存在这个问题。(4)增长方向不同。堆的增长方向是向上的,即向着内存地址增加的方向;栈 的增长方向是向下的,即向着内存地址减小的方向。(5)分配方式不同。堆都 是程序中由malloc()函数动态申请分配并由free()函数释放的;栈的分配和释 放

10、是由编译器完成的,栈的动态分配由alloca()函数完成,但是栈的动态分配 和堆是不同的,他的动态分配是由编译器进行申请和释放的,无需手工实现。(6) 分配效率不同。栈是机器系统提供的数据结构,计算机会在底层对栈提供支持: 分配专门的寄存器存放栈的地址,压栈出栈都有专门的指令执行。堆则是 C 函数 库提供的,它的机制很复杂,例如为了分配一块内存,库函数会按照一定的算法 (具体的算法可以参考数据结构/操作系统)在堆内存中搜索可用的足够大的空 间,如果没有足够大的空间(可能是由于内存碎片太多),就有需要操作系统来 重新整理内存空间,这样就有机会分到足够大小的内存,然后返回。显然,堆的 效率比栈要低

11、得多。8. 简述什么是系统调用;系统调用是操作系统提供给外部程序的接口。在C语言中,操作系统的系统 调用通常通过函数调用的形式完成。因为这些函数封装了系统调用的细节,将系 统的调用的入口、参数以及返回值用 C 语言的函数调用过程实现。在 Linux 系统 中,系统调用函数定义在 glibc 中。系统调用需要注意以下几点。(1)系统调用函数通常在成功时返回 0 值,不成功时返回非 0 值。如果要检查 失败原因,则要判断全局变量 errno 的值, errno 中包含错误代码。(2)许多系统调用的返回数据通常通过引用参数传递。这时,需要在函数参数 传递缓冲去地址,而返回的数据就保存在该缓冲区中。(

12、3)不能认为系统调用函数比其他函数的执行效率高。因为系统调用是一个非 常耗时的过程。9. 简述chmod文件权限0-7的含义。文件属主同组用户其他用户r w xr w xr w x4 + 214 + 2 + 14 + 2+110. Linux I/O 处理5种模型的名称。总体来说,I/O处理的模型有5种。(1) 阻塞I/O模型:在这种模型下,若所调用的I/O函数没有完成相关功能就 会使进程挂起,直到相关数据到才会出错返回。如常见对管道设备,终端设备和 网络设备进行读写时经常会出现这种情况。(2) 非阻塞I/O模型:在这种模型下,当所请求的I/O的操作不能完成时,则 不让进程睡眠,而且立即返回。

13、非阻塞I/O使用户可以调用不会阻塞的I/O操作 如open、write和read。如果该操作不能完成,则会立即返回出错或者返回0。(3) 多路选择I/O模型,在这种模型下,如果请求的I/O操作阻塞,且它不是真 正阻塞I/O,而是让其中的一个函数等待,在这期间,I/O还能进行其他操作。 如 select 和 poll 函数。(4) 信号驱动I/O模型,在这种模型下,通过安装一个信号处理程序,系统可 以自动捕获特定信号的到来,从而启动I/O。(5) 异步I/O模型,在这种模型下,当一个描述符已准备好,可以启动I/O时, 进程会通知内核,但并不所有的系统都支持这种模型。11. 串口初始化设置波特率

14、115200,8个数据位,1特停止位,无奇偶校验,请 写出初始化程序。12. 简述进程和程序的区别。进程是一个程序的一次执行的过程,同时也是资源分配的最小单元。它和程 序有本质区别的,程序是静态的,它是一些保存在磁盘上的指令的有序集合,没 有任何执行的概念;而进程是一个动态的概念,它是程序执行的过程,包括了动 态创建、调度、和消亡的整个过程。它是程序执行的资源管理的最小单位。因此, 对系统而言,当用户在系统中键入命令执行一个程序时候,它将启动一个进程。13. 简述Linux进程5种状态。(1) 运行(TASK_RUNNING): 般指就绪状态,也就是指进程随时可以投入到 运行和运行状态。(2)

15、 可中断(TASK_INTERUPTIBLE):在这个状态时进程停止运行,直到它获得 满足它继续运行的条件。(3) 不可中断(TASK_UNINTERUPTIBLE):在这个状态时进程也是停止运行,但 是,即便它获得满足它继续运行的条件,它也不会马上被激活。(4) 僵死(TASK_ZOMBIE):进程运行结束,等待父进程销毁它。(5) 停止(TASK_STOPPED):进程停止运行,当进程收到SIGSTOP、SIGTSTP、 SIGTTIN、 SIGTTOU 等信号,就会停止。在调试期间,进程收到任何信号, 也会停止运行。14. 什么是管道,简要描述有名管道和无名管道。管道是 Linux 中进

16、程间通信的一种方式,它把一个进程的输出直接连接到另 一个进程的输入。 Linux 的管道主要包括两种:无名管道和有名管道。无名管道是一种专门用来实现进程间通信的特殊文件,和普通文件有一定的 差异:无名管道只能存在于进程进程通信期间,通信完成后将自动消失,而且只 能临时存放通信的信息,不能像普通文件一样存储大量常规信息。但是,在编程 应用方式,具有和普通文件一样的特点,可以使用 read/write 等函数进行读写 操作,但不能使用 lseek 函数来修订当前的读写位置,因为管道需要满足 FIFO 的原则。有名管道和普通文件一样具有文件存放路径、文件权限,存在于磁盘中;但 是,有名管道和普通文件又有区别,有名管道不能直接存储文件,它存储的通信

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 其它学术论文

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