嵌入式软件面试记录(2)

本文详细解释了关键字static,const,volatile的含义及其使用场景,介绍了IIC和SPI串行通信协议,对比了TCP和UDP在连接、可靠性、速度和应用场景上的区别,以及二层转发与三层转发在网络转发中的差异。
摘要由CSDN通过智能技术生成

一、关键字static,const,volatile有什么含义?在什么情况下应该用volatile?

1.static的含义:

①在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。

②在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。

③在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。

2.const的含义:

①const意味着“只读”,不应该被改变。

②const函数修饰指针

③const 通常用在函数形参中,如果形参是一个指针,为了防止在函数内部修改指针指向的数据,就可以用 const 来限制

④const是通过编译器在编译的时候执行检查来确保实现的。

举例:

const int a;
int const a;
const int *a;
int * const a;
int const * a const;

前两个的作用是一样,a是一个常整型数。第三个意味着a是一个指向常整型数的指针(也就是,整型数是不可修改的,但指针可以)。第四个意思a是一个指向整型数的常指针(也就是说,指针指向的整型数是可以修改的,但指针是不可修改的)。最后一个意味着a是一个指向常整型数的常指针(也就是说,指针指向的整型数是不可修改的,同时指针也是不可修改的)。

3.volatile的含义

①并行设备的硬件寄存器(如:状态寄存器) 

②一个中断服务子程序中会访问到的非自动变量。

③多线程应用中被几个任务共享的变量 

在以下场景中经常使用volatile:

①中断服务程序中修改的供其它程序检测的变量需要加volatile;

②多任务环境下各任务间共享的标志应该加volatile;

③存储器映射的硬件寄存器通常也要加volatile说明,因为每次对它的读写都可能由不同意义;

二、嵌入式系统总是要用户对变量或寄存器进行复位操作,给定一个整型变量a,写三段代码,第一个设置a的bit3,第二个清除a的bit3,第三个取反a的bit7.

#define BIT3       (0x01 << 3)
static int a;
void set_bit3(void) {
       a |= BIT3;
}
void clear_bit3(void) {
       a &= ~BIT3;
}

三、IIC的上拉电阻作用,以及简单描述IIC和SPI协议?

作用:将总线线路维持在逻辑高电平状态
IIC协议:

1.概念

I2C( Inter-Integrated Circuit)总线协议是一种串行数据传输协议,用于在集成电路之间进行短距离、低速度的数据通信。 I2C 总线具有两根线:时钟线(SCL)和数据线(SDA)。

2.特点

①多主从结构: I2C 总线协议支持多个主设备(如微控制器)和多个从设备(如传感器、存储器)共用一条总线。

②硬件简单: I2C 总线只需要两根线即可完成通信,在硬件实现上比较简单。

③传输速率慢: I2C 总线的传输速率较慢,最高速率只有 400Kbps。

3.工作过程

①起始条件( Start Condition):主设备向总线上发送一个低电平脉冲信号,表示开始一个新的数据传输。
②地址传输:主设备发送从设备的地址和读/写标志位,通知从设备它需要进行读或写操作。

③数据传输:主设备和从设备之间传输数据。由主设备产生时钟信号和数据信号,从设备根据时钟信号接收或发送数据。

④停止条件(Stop Condition):主设备向总线上发送一个高电平脉冲信号,表示数据传输完成。

SPI协议:

1.概念:

SPI(Serial Peripheral Interface)总线协议是一种同步全双工的串行通信协议,用于在集成电路之间进行数据传输。 SPI 总线通常由一个主设备和多个从设备组成,每个从设备都有一个单独的片选信号。

2.特点

①高速传输: SPI 总线具有高速传输的特点,通信速率可达几十 MHz。
②硬件简单: SPI 总线只需要少量线路即可完成通信,可以通过硬件实现。
③可靠性高: SPI 总线采用同步传输方式,数据传输可靠。

3.工作过程

①起始条件( Chip Select):主设备通过片选信号( Chip Select)选择从设备,并发送低电平信号,表示开始数据传输。
②传输方式:主设备和从设备之间使用 MOSI和 MISO 两根线传输数据。主设备通过 MOSI发送数据,从设备通过 MISO 接收数据。
③时钟信号:主设备通过 SCLK 时钟信号控制数据传输速率,同时从设备也按照同样的时钟频率来接收数据。
④数据长度: SPI 总线没有固定数据长度的限制,可以发送任意长度的数据块。

⑤结束条件( Chip Deselect):主设备通过片选信号( Chip Deselect)取消对从设备的选择,结束数据传输。
 

四、TCP和UDP在使用时的区别?

1) 连接方面:TCP是面向连接的,可靠性高;UDP是面向无连接的,可靠性低
2) 可靠性方面:TCP提供可靠的数据传输,UDP不保证可靠的数据传输。因为TCP是连接的通信,需要有三次握手、重新确认等连接过程,会有延时,实时性差,同时过程复杂,也使其易于攻击;UDP没有建立连接的过程,因而实时性较强,也稍安全
3) 速度方面: UDP传输速度快,TCP传输速度较慢.
4) 传输单位方面:每条TCP连接只能时点到点的;UDP支持一对一、一对多、多对一、多对多的交互通信。

5)流量控制方面: TCP有流量控制机制,可以避免过度拥塞,而UDP没有流量控制机制。

6).应用场景方面:TCP适用于需要可靠传输的应用,如文件传输、电子邮件等,UDP适用于需要快速传输的应用,如视频、音频等。

五、二层转发与三层转发的区别?

简单来说,二层转发是基于物理地址 (MAC地址) 的转发,五三层转发是基于逻辑地址 (P地址)的转发。二层转发只能在同一局域网内进行,而三层转发则可以实现跨越不同网络之间的数据传输。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值