RT-Thread 开发者能力认证考试样题(RCEA)

V1.0
RT-Thread 开发者能力认证考试样题(RCEA)
注: 样题仅为部分题目
第一小卷: 单选题 40 题 40 分钟 40.0 分
1、 对两个字符 a 和 b 进行初始化: char a[] = "ABCDEF"; char
b[]={'A','B','C','D','E','F'}; 则以下叙述正确的是 (1 分)

  • a 数组大小比 b 数组大小大
  • a 与 b 大小相同但两个数组不完全相同
  • a 与 b 数组完全相同
  • a 和 b 中都存放字符串

2、 倘若一款存储器的数据线条数为 16 条, 地址线条数为 20 条, 那么此存
储器的容量有多少? (1 分)

  • 32Mb
  • 16Kb
  • 20Mb
  • 16Mb

3、 计算机在一个指令周期内, 从内存中读取指令操作码需要先将______的
内容送到地址总线?
程序计数器
V1.0
控制寄存器
状态寄存器
通用寄存器
4、 关于 ARM 处理器寄存器说法错误的是? (1 分)
R0-R15 寄存器的宽度为 32 位
通用寄存器 R0-R7 既可以存放数据也可以存放地址
PC 使用 R15 寄存器
SP 使用 R14 寄存器, 是堆栈指针
5、 以下代码, 其中 val 变量的内存地址位于? (1 分)
void func(void)
{
static int val;
....
}
已初始化的数据段
未初始化的数据段
堆 栈
6、 关于 RTOS 与前后台系统, 以下说法正确的是? (1 分)
V1.0
前后台系统中, 触发特定的事件(中断) 后, 开始在后台运行中断服
务例程
RTOS 的 CPU 使用率高, 实时性低
RTOS 实时性高, 系统结构耦合性低
前后台的延时与 RTOS 的延时原理相同
7、 关于实时操作系统(RTOS) 的任务调度器, 以下描述中正确的是? (1
分)
任务之间的公平性是最重要的调度目标
大多 RTOS 调度算法都是可抢占式的
RTOS 调度器一般采用基于时间片轮转的调度算法
RTOS 调度算法是一种静态优先级调度算法
8、 在多任务系统中, 线程的栈存放的数据包括什么? (1 分)
线程的数据
函数的局部变量
系统中的全局变量
任务的上下文环境
9、 以下说法错误的是? (1 分)
V1.0
优先级天花板是指将申请(占有) 某资源的任务的优先级提升到可能
访问该资源的所有任务中最高优先级任务的优先级, 这个优先级称为该资源的优先
级天花板
信号量初始化为 5, 则表示最多只能释放 5 次, 并且在线程没有接收
信号量之前, 该线程不可以释放信号量
释放一次信号量, 信号量的值加 1
优先级继承原则是: 当高优先级任务申请已被低优先级任务占有的临界
资源这一事实发生时, 才抬升低优先级任务的优先级。
10、 在有 N 个缓冲区的生产者消费者的问题中, 下列叙述中哪些是错误的?
producer()
{
int item;
while(TRUE)
{
item = produce_item(cNew));
P(empty);
P(mutex);
insert_item(item);
V(mutex);
V(full);
}
}
V1.0
consumer()
{
int item;
while(TRUE)
{
P(full);
P(mutex);
item = remove_item();
V(mutex);
V(empty);
consume_item(item);
}
}
信号量 empty 的初值为 N
信号量 full 的初值为 0
信号量 mutex 的初值为 0
P(full)和 P(mutex)两条语句可以颠倒顺序
V(mutex)和 V(empty)两条语句可以颠倒顺序
V1.0
11、 一些处理器具有 2 套寄存器, 一套用于整数操作, 一套用于浮点数操
作。 整数寄存器总是在抢占式内核的每次上下文切换期间被保存并恢复。 以
下说法正确的是? (1 分)
无论什么情况下, 浮点寄存器必须总是进行保存和恢复
浮点操作仅在单个线程中进行时, 上下文切换必须先保存和恢复浮点
寄存器
浮点操作仅在多个线程中进行时, 上下文切换必须先保存和恢复浮点
寄存器
浮点操作在单个或者多个线程中进行时, 上下文切换都必须先保存和
恢复浮点寄存器
12、 RT-Thread 中, 如果第一次发送邮件, 邮件存在 mb->msg_pool[0], 然
后邮件被收取; 接着再发送一封邮件后又被收取; 之后再发送 2 封邮件, 则
最后一封邮件是存放在 mb->msg_pool[ ___ ]。 (1 分)
0 1 2 3
13、 关于内存管理说法错误的是? (1 分)
slab 算法分配内存时, 假设分配一个 32 字节的内存, slab 内存分
配器会先按照 32 字节的值, 从 zone array 链表表头数组中找到相应的 zone 链
表。 如果这个链表是空的, 则向页分配器分配一个新的 zone, 然后从 zone 中返
回第一个空闲内存块
V1.0
memheap 功能是将多块内存加入 memheap_item 链表进行粘合。 当分
配内存块时, 会先从默认内存堆去分配内存, 当分配不到时会查找 memheap_item
链表, 尝试从其他的内存堆上分配内存块
小内存管理算法在分配内存时, 会在空闲链表上寻找满足要求的内存
块, 若满足要求的内存块较大, 则分配器会将此内存块进行拆分, 剩余的内存块继
续留在 lfree 链表中
初始化内存池时, 内存池块个数 = size / (block_size + 4 链表指
针大小), 即当 size 为 4096, block_size 为 90 时, 内存池块的个数是 44 个。
14、 下面代码是 RT-Thread STM32 系列 BSP applications 目录下的
Sconscript 文件的部分内容, 其中哪一项指定了头文件路径? (1 分)
cwd = GetCurrentDir()
CPPPATH = [cwd, str(Dir('#'))]
src = Split("""
main.c
""")
group = DefineGroup('Applications', src, depend = [''], CPPPATH = CPPPATH)
Return('group')
cwd
CPPPATH
src
depend
15、 下列关于 RT-Thread 硬件定时器设备驱动框架的说明错误的是? (1 分)
硬件定时器设备驱动框架支持递增模式计数和递减模式计数。
V1.0
硬件定时器设备驱动框架只支持单次定时器。
硬件定时器设备驱动框架可能会出现定时误差。
硬件定时器设备驱动框架的定时精度可以到微秒。
V1.0
第二小卷: 多选题 5 题 5 分钟 5.0 分
1、 每个子网有不超过 58 个节点要分配的 IPv4 地址, 不适合的子网掩码是
(1 分)
255.255.255.248
255.255.255.192
255.255.255.224
255.255.255.220
2、 下列关于 SPI 的描述正确的是? (1 分)
SPI 是一种异步通信总线
SPI 以主从方式工作, 通常有一个主设备和一个或多个从设备
SPI 主设备通过 CS 选择要通信的从设备
SPI 主设备数据通过 MOSI 输出给从设备, 同时通过 MISO 接收从设
备发送的数据
3、 以下关于线程间通信说法正确的是? (1 分)
互斥量的值只有两个
在持有互斥量的过程中, 不得再行更改持有互斥量线程的优先级
事件集的事件可以这样设置: 事件 1 为 0x0001, 事件 2 为 0x0002, 事
件 3 为 0x0003, 以此类推
互斥量不能在中断服务例程中使用
V1.0
4、 下列关于 RT-Thread IO 设备个各项描述正确的是? (1 分)
I/O 设备模型框架位于硬件和应用程序之间, 共分成三层, 从上到下
分别是 I/O 设备管理层、 设备驱动框架层、 设备驱动层。
I/O 设备管理层实现了对设备驱动程序的封装, 降低了代码的耦合
性、 复杂性, 提高了系统的可靠性。
设备驱动框架层是对同类硬件设备驱动的抽象, 将不同厂家的同类硬
件设备驱动中相同的部分抽取出来, 将不同部分留出接口, 由驱动程序实现。
设备驱动层必须经过设备驱动框架层才能将设备注册到 I/O 设备管
理器中。
设备驱动层是一组驱使硬件设备工作的程序, 实现访问硬件设备的功
能。
5、 下面哪行代码可以导出一个 cpu 命令到 msh 中? (1 分)
MSH_CMD_EXPORT(cpu, show cpu info);
FINSH_FUNCTION_EXPORT_ALIAS(rt_cpu, cpu, show cpu info);
MSH_CMD_EXPORT(__cmd_cpu, show cpu info);
FINSH_FUNCTION_EXPORT_ALIAS(rt_cpu, __cmd_cpu, show cpu info);
V1.0
第三小卷: 填空题 15 题 15 分钟 15.0 分
1、 现有初始状态均为空的栈 X 和队列 Y, 元素 a、 b、 c、 d、 e、 f、 g 依次进入栈
X, 每个元素出栈后即进入队列 Y, 如果出队列的顺序为 b、 c、 f、 e、 g、 d、 a,
则要求栈 X 最小容量为__________。
2、 在 ISO 标准 7498 中描述的网络参考模型将网络通信划分为 7 层, 这 7 层自顶
向下排序是__________。
3、 RT-Thread 中的事件集, event->set 值为 0, 使用 rt_event_recv(&event,
(0x08 | 0x20), RT_EVENT_FLAG_OR, RT_WAITING_FOREVER, &e)接收事件, 则
当接收完毕一次 0x08 之后, event->set 的值为__________。
.
4、 下面代码为 RT-Thread STM32 BSP MDK 工具使用的链接脚本 link.sct 的部分
内容, 其中 0x00100000 表示的是__________, 0x00020000 表示的是__________。
LR_IROM1 0x08000000 0x00100000 { ; load region size_region
ER_IROM1 0x08000000 0x00100000 { ; load address = execution address
*.o (RESET, +First)
*(InRoot$$Sections)
.ANY (+RO)
} R
W_IRAM1 0x20000000 0x00020000 { ; RW data
.ANY (+RW +ZI)
}
}
5、 在进行文件系统编程时, 如若要在 /test 目录下, 创建一个名称为“ABC” 的
目录。 下面代码片段中画横线的部分按顺序填写_______、 _______。
V1.0
#include <rtthread.h>
#include <dfs_posix.h> /* 当需要使用文件操作时, 需要包含这个头文件 */
static void mkdir_sample(void)
{
int ret;
/* 创建目录*/
ret = _______("_______", 0x777);
/* 其他代码 */
}
.
V1.0
第四小卷: 问答题 10 题 20 分钟 20.0 分
1、 简述 TCP 与 UDP 的区别。 (2 分)
2、 在 OS 设计中, 需要在不同任务间切换, 这一般被称作上下文切换, 其通常在
PendSV 异常处理中执行, 该异常可由 SysTick 异常触发。 在上下文切换操作中需
要哪些操作? (2 分)
3、 中断等待表示从中断请求开始到中断处理开始执行间的时间。 除了存储器设备
或外设产生的等待状态外, 还有什么状况也可能会加大中断等待时间? 请列举至
少两项。 (2 分)
4、 简述制作一个 RT-Thread 的 STM32 BSP 的过程? (2 分)
5、 RT-Thread I/O 设备管理框架的意义? (2 分)
6、 使用 RT-Thread 提供的默认串口配置并用中断接收方式接收数据, 当串口接收
大量数据且串口数据处理线程来不及读取数据时会造成数据丢失的情况, 请简述
造成此情况的原因。 (2 分)
V1.0
第五小卷: 编程题 5 题 70 分钟 20.0 分
1、 输入一行文字, 找出其中大写字母、 小写字母、 空格、 数字以及其他字
符各有多少(其中字符长度不超过 100) (4 分)
2、 使用标准 socket 接口, 实现和远端服务器(10.12.45.168)上 5000 端口
的 tcp 连接, 并且发送一段 "hello rt-thread server!"的字符到服务器。
(4 分)
3、 请创建一个动态线程, 优先级为 25, 时间片为 10, 在线程入口函数中进
行 cnt 计数, 打印 cnt 的值, 入口函数中最后延时 500ms。 并将该线程使用
INIT_APP_EXPORT 进行初始化。 (4 分)
4、 创建一个事件集, 创建一个线程, 在线程中每隔 1s 并发送一次事件 3
(0x0008) 。 (4 分)
5、 创建一个名为 test1.txt 的文本文件, 并写入 "HELLO RT-THREAD!" 到
文件中。 (4 分)
.
 

猜你喜欢

转载自blog.csdn.net/I_feige/article/details/89397930