一、选择题
1、下列哪个不是嵌入式系统的特点?
A. 硬件资源受限
B. 实时性要求高
C. 软件开发成本低
D. 系统可靠性要求高
答案:C
解析:嵌入式系统的三个基本特点:硬件资源受限、实时性要求高、具有专用性
A:嵌入式系统是特定功能的计算机系统,通常使用专门定制的硬件实现,因此其硬件资源有限。选项A正确。
B:嵌入式系统的另一个基本特征是其实时性较高,需要及时响应外部事件和内部激励。特定应用程序的操作须在连续时间内进行,以保证系统正常运行。选项B正确。
C:嵌入式开发过程的成本较高,由于具有极高的专业性和极高的技术含量,并且对于开发人员的技术要求较高,除了必要的设备开发成本外,技术人员成本同样很高,因此在嵌入式软件开发的成本较高。选项C错误。
D:嵌入式系统是可以独立运行的器件,同时是针对特定的实际业务需求而制定的嵌入式系统,因此对于整个系统可以独立稳定运行的要求极高。选项C正确。
2、下列哪个不是嵌入式系统中常用的总线标准?
A. USB
B. I2C
C. RS232
D. HDMI
答案:D
解析:嵌入式系统中的总线分为内部总线、系统总线、外部总线。
内部总线有:I²C总线、SPI总线、SCI总线。
系统总线有:ISA总线、EISA总线、VESA总线、PCI总线、Compact PCI。
外部总线有:RS-232-C总线、RS-485总线、IEE-488总线、USB总线、IEEE1394总线。
3、下列哪个不是C语言的关键字?
A. switch
B. case
C. class
D. break
答案:C
解析:C语言共有32个关键字。
关键字 | 解释 | 关键字 | 解释 |
---|---|---|---|
auto | 声明自动变量 | break | 跳出当前循环 |
case | 开关语句分支 | char | 声明字符型变量或函数返回值类型 |
const | 声明只读变量 | continue | 结束当前循环,开始下一轮循环 |
default | 开关语句中的“默认分支” | do | 循环语句的循环体 |
double | 声明双精度浮点型变量或函数返回值类型 | else | 条件语句否定分支(与if连用) |
enum | 声明枚举类型 | extern | 声明变量或函数是在其它文件或本文件的其他位置定义 |
float | 声明浮点型变量或函数返回值类型 | for | 一种循环语句 |
goto | 无条件跳转语句 | if | 条件语句 |
int | 声明整型变量或函数 | long | 声明长整型变量或函数返回值类型 |
register | 声明寄存器变量 | return | 子程序返回语句(可带参数,可不带) |
short | 声明短整型变量或函数 | signed | 声明有符号类型变量或函数 |
sizeof | 计算数据类型或变量长度 | static | 声明静态变量 |
struct | 声明结构体类型 | typedef | 用以给数据类型取别名 |
unsigned | 声明无符号类型变量或函数 | union | 声明共用体类型 |
void | 声明函数无返回值或无参数,声明无类型指针 | volatile | 说明变量在程序执行中可被隐含地改变 |
while | 循环语句的循环条件 | switch | 用于开关语句 |
class是java的关键字,在声明新的java类时使用。
4、下列哪个不是常用的编译器?
A. GCC
B. Keil
C. IAR
D. Visual Studio
答案:D
解析:
A:GCC(GNU Compiler Collection,GNU编译器套件)是由GNU开发的编程语言编译器。GNU编译器套件包括C、C++、 Objective-C、Fortran、Java、Ada和Go语言前端,也包括了这些语言的库(如libstdc++,libgcj等)。
B:Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(μVision)将这些部分组合在一起。
C:IAR Embedded Workbench是瑞典IAR Systems公司为 微处理器开发的一个集成开发环境(下面简称IAR EW),支持ARM,AVR,MSP430等芯片内核平台。IAR Systems是嵌入式系统开发工具和服务的供应商 [2] 。公司成立于1983年,提供的产品包括:带有C/C++编译器和调试器的集成开发环境(IDE)、实时操作系统和中间件、开发套件、硬件仿真器以及状态机建模工具。
D:暂时不明白,因为其实Visual Studio也集成了GCC编译器套件等等。
欢迎各位大佬赐教~(抱拳)
5、下列哪个不是常用的调试工具?
A. JTAG
B. GDB
C. SVN
D. Trace32
答案:C
解析:
A:JTAG 标准即IEEE 1149.1 标准。联合测试行动组JTAG(Joint Test Action Group ) 起草了边界扫描测试BST(Boundary Scan Testing)规范, 该标准为数字集成电路规定了一个测试访问口(TAP) 和边界扫描结构,解决了由于数字电路高度集成化带来的一些测试难题。它还提供了一种访问和控制芯片内部仿真(ICE) 模块的方法, ICE 模块一般包括内部扫描和自测试的功能, 可以很好地支持集成电路的开发。JTAG在嵌入式开发过程中十分重要,对于嵌入式开发者来说,JTAG可以读写内存、控制CPU运行、调试代码。选项A正确。
B:GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。GDB支持断点、单步执行、打印变量、观察变量、查看寄存器、查看堆栈等调试手段。在Linux环境软件开发中,GDB是主要的调试工具,用来调试C和 C++程序(也支持go等其他语言)。选项B正确。
C:SVN的全称是Subversion,即版本控制系统。它是最流行的一个开放源代码的版本控制系统。作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。其不是调试工具。选项C错误。
D:TRACE32是一款由德国Lauterbach公司开发的,功能强大的调试工具。它针对各种不同的处理器和微控制器提供了高效、可靠的调试功能,并支持多种编程语言。TRACE32可用于处理器寄存器、存储器、I/O端口、总线桥连接等多种连接方式。TRACE32具有智能化的调试功能,能够帮助开发人员快速定位和排除故障。其在运行时能够对代码进行动态跟踪、调试、模拟和分析,大大提高了开发效率和质量。选项D正确。
二、简答题
1、什么是中断?中断的作用是什么?
答:中断是指在CPU运行程序的过程中,由于某些事件的发生,需要立即暂停当前程序的执行,转而去执行另一段代码的一种机制。中断的作用是提高CPU的利用率,增强系统的实时性和可靠性,实现CPU与外设的异步通信。
2、请简述I2C总线的工作原理。
答:I2C总线是一种串行通信协议,通过两根线SCL和SDA实现设备间的通信。SCL线是时钟线,由主设备控制;SDA线是数据线,用于主设备和从设备之间的数据传输。在传输数据时,主设备先发送起始信号,然后发送从设备地址和读/写标志,接着发送数据或者请求数据,最后发送停止信号。从设备在接收到起始信号后,会根据地址来判断是否需要响应主设备的请求。