目录
内存管理,包括 FreeRTOS 的内核和数据内存管理,以及 task 的堆和栈的使用
进程间是如何通信的?共享内存是如何使用的?相关的库函数有哪些?
请解释 C++ 的多态是什么?如何在 C 语言中实现多态功能?
static 关键字的作用是什么?局部 static 和全局 static 有何区别?
TCP 和 UDP 的区别是什么?请描述 TCP 通信的过程。
详解 new/delete 和 malloc/free 的区别
请谈谈对 cache 的理解,并从 cache 的角度出发,如何优化矩阵相乘算法?
/usr/lib 和 /usr/include 目录中分别放了哪些内容?
RTOS 里面的任务调度是如何实现的?相同优先级的任务如何调度?
在 C++ 编程中,如何有效地管理内存资源以避免泄漏和溢出?
项目中使用的通信协议及差异
在项目中,我们使用了多种通信协议,包括 UART、IIC、USB2.0 和网卡等。
UART(通用异步收发传输器)是一种异步串行通信协议,其特点是实现简单、成本低。数据以字符为单位进行传输,每个字符包含起始位、数据位、校验位和停止位。UART 通信通常需要两根线,一根用于发送数据(TX),一根用于接收数据(RX)。它适用于短距离、低速的数据传输,例如与微控制器和传感器之间的通信。
IIC(Inter-Integrated Circuit)是一种两线式串行总线,用于连接微控制器及其外围设备。IIC 总线由数据线(SDA)和时钟线(SCL)组成。它具有多主设备功能,可以多个设备连接在同一条总线上,通过设备地址进行区分。IIC 通信速度相对较慢,但可以连接多个设备,并且占用较少的引脚资源。
USB2.0 是一种高速串行总线,广泛应用于计算机与外部设备之间的通信。USB2.0 具有较高