收集整理了一份《2024年最新物联网嵌入式全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升的朋友。
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人
都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
- IDLE状态:开机后的PHY状态。
- CONFIGURED状态:PHY被配置后的状态。
- RUNNING状态:PHY处于服务状态,MAC层可以对PHY进行时隙调度。
2.1.1 Initialization:初始化流程
初始化过程是指PHY由IDLE状态 -》configured状态 =》 running状态的状态切换的过程。
初始化是通过PARAM.request, CONFIG.request, START.request这三个消息来完成的。
- PARAM.request:获取PHY的能力参数
- CONFIG.request:对PHY进行配置
- START.request:启动PHY工作
(1)PARAM.request
定时器的作用是防止消息没有响应,通过定时器的超时,处理异常。
(2)CONFIG.Request
(3)START.request
2.1.2 Termination终止流程
终止流程的目的是暂停PHY,使得PHY从RUNNING状态切换到CONFIGURED状态。
终止流程会清除PHY运行时的实时数据,但配置管理数据保持不变。
2.1.3 Restart:重启PHY
重启流程会清除PHY运行时的实时数据,但配置管理数据保持不变,然后重启启动PHY.
因此重启是由STOP.request + START.request组成。
2.1.4 Reset:复位流程
该流程让PHY回到IDLE状态,Reset PHY的过程,该规范并没有确定,取决于不同厂家的实现。
通过通过硬件RESET管脚来完成,也可以通过自定义消息完成。
之所以没有明确通过消息来完成,使用消息有一个致命的缺陷,就是RESET流程通常是在异常的情况才需要触发RESET流程,PHY异常或死机的时候,有时候是不能处理消息的。
当然,FAPI规范要求,在RESET之前,需要先发送STOP消息进行尝试,然后在进行硬件复位。
2.1.5 Reconfigure:重新配置流程
有两种方法实现重配
(1)完全重配
完全重配流程通过如下三个消息完成。
完全重配,通常发生在Cell reset时候。
(2)最小化重配
最小化重配,不需要STOP PHY, 直接对PHY进行CONFIG.request。
最小化重配通常发生在RRC Reconfig的时候。
2.1.6 Query:参数或状态查询
2.1.7 Notification
PHY通过该流程,主动通知L2和L3, 自身内部的状态和异常。
2.2 时隙调度流程(P7接口):MAC层调度PHY发送和接收数据
2.2.0 概述
Slot时隙调度流程是重点,也是理解的难点。该流程起到两个重要的作用:
(1)控制上下行的PHY物理层的帧结构
(2)在L2与PHY物理层之间传送数据
上述两个过程,就是MAC层调度器对PHY物理层的无线资源进行调度的结果。
调度流程有如下的子过程组成:
(1)下行发送
- Transmission of a 125us, 250us, 500us or 1ms SLOT message:调度指示消息,取决于子载波间隔,通过slot indication消息,可以由物理层通知上层,slot的起点,实现TTI (Slot)信号的对齐。
- Synchronization of SFN/SLot between the L2/L3 software and PHY:slot indication实现了TTI信号的频率和相位对齐,而该过程在TTI对齐的基础之上,实现SFN号和SLOT号的同步与对齐。
- Transmission of the BCH transport channel:广播信道数据发送
- Transmission of the PCH transport channel:寻呼信道数据发送
- Transmission of the DL-SCH transport channel:下行共享信道D-SCH用户数据发送
- Transmission of the downlink control information (DCI):下行控制信息指示DCI(基站调度手机), 调度指示和D-SCH用户数据是分开的。现有调度,后来用户数据。
- Transmission of the CSI reference signal:信道状态指示**(Channel State Information)**
(2)上行接收
- Reception of the RACH transport channel:RACH信道的接收
- Reception of the UL-SCH transport channel:上行共享信道UL-SCH用户数据的接收
- Reception of the uplink control information (UCI):上行控制信息(手机的调度请求),或称为上行调度请求。
- Reception of the sounding reference signal:sounding探测参考信号。
(3)物理层信道
2.2.1 SLOT signal
时隙信号是通过SLOT.indication指示消息来完成的,由PHY发送给MAC层调度器,表明PHY层1个时隙调度的开始。
PHY层通过硬件中断,产生周期性的时隙信号,然后通过SLOT.indication通知MAC层。
该时隙的周期可以是125us, 250us, 500us or 1ms,其大小取决于子载波间隔的大小。在LTE中,通常1ms调度一次,而5G支持更小的调度周期。
从上图可以看出,Slot时隙调度周期,并不影响10ms帧和1ms的子帧。
时隙周期越小,一个子帧中包含的时隙就越多,对硬件的处理能力要求越高。
- u=0:1ms子帧周期内调度1次,调度周期为1ms,这是LTE的调度周期
- u=1:1ms子帧周期内调度2次,调度周期为0.5ms
- u=2:1ms子帧周期内调度4次,调度周期为0.25ms
- u=3:1ms子帧周期内调度8次,调度周期为0.125ms
2.2.2 SFN/SL Synchronization
(1)什么是SFN/SL同步
在通过PHY层的SLOT.indication指示进行调度前,需要完成10ms帧的系统帧号SFN和SLOT时隙号的同步与对齐。
SFN/SL同步过程就是要维持L2/L3软件实体与L1 PHY实体之间SFN和Slot号的一致。
(2)为什么需要同步流程?
之所以需要特定的流程维持SFN和Slot号的一致性,这是因为它们运行在不同的平台之上,L2&L3软件运行通常运行在ARM CPU + Linux操作系统的平台上,而L1软件运行在DSP之上。这两个系统通常是独立的,只能通过串行总线相连。、
(3)维持SFN/Slot的重要性?
为此这种同步非常重要,因为4G/5G的帧结构是时频结构,频域上是子载波的位置,而时域的位置就是通过10ms帧的系统帧号 + 子帧号 + 时隙号来标识的,不同的系统帧号 + 子帧号 + 时隙号其在无线帧结构中的位置是不相同的,也就是说传输的数据所包含的信息是不相同的。
(4)如何维持两个实体(MAC与PHY)之间SFN/Slot的一致性?
如何维持是关键,这里提供了两种主要的思路:
思路1:集权法,L1 PHY时刻使用L2&L3配置的SFN/Slot的值。
这种方案的优点:是简单,基本是不需要同步机制,L2/L3软件维持SFN/Slot值设定,L1直接使用。
这种方案的缺点:也是明显,它需要L1 PHY和L2&L3软件集成在同一个硬件平台和软件平台上。如单一的SOC芯片。对于完全一体化高度集成的系统是可行的,但对于硬件和软件平台功能分离的系统,这种方案就无法实施了。
思路2:自主法,L1 PHY使用L2&L3软件配置的SFN/Slot的值作为初始值,然后各自自主地维护自身的SFN/SL号,并进行定期的监控,确保双方的SFN/SL是一致的、对齐的。
这种方案优点:能够支持L1 PHY软件与L2&L3软件使用不同的硬件和软件平台,如L1在DSP上,L2&L3在ARM+Linux平台上,这种方案灵活,伸缩性强。
这种方案的缺点:硬件设计复杂,L1 PHY和L2&L3需要维持各种的硬件时钟同步,软件设计复杂,需要同步机制。
这两种方案,在实际系统中,都有自己的使用场合。
既然是同步,就一定有一个主(Master),一个从(Slave),Master负责SFN/SL的初始化以及后期发生不一致时,作为纠错的基准。
是L2&L3软件作为基准,还是L1 PHY作为基准呢?其实,都可以,取决于系统的实现。
因此,谁作为Master就有两种方案:L2&L3软件作为master或L1 PHY作为Master。
(5)称为Master的条件
对能够作为Master的软件实体是有要求的,即自身必须能够同步到外部的标准参考时钟源上,如:
- GPS参考时钟源(都适用)
- 1588参考时钟源(只适用L2&L3作为Master,因为DSP通常不能处理1588协议栈)
- 1PPS参考时钟源(都适用)
2.2.2.1 L2/L3 software is master
(1)SFN/SL的初始化
- L2&L3软件通过Start.request P5配置信令启动L1 PHY.
- L1 PHY启动后,PHY可以使用任意的SFN/SL值作为默认值M,并通过SLOT.indication = M消息通知L2&L3软件,自己默认的SFN/SL值。
- L2&L3软件,通过DL_TTI.request = N 修正L1 PHY默认的SFN/SL, 得到初始的SFN/SL=N,
至此,完成了SFN/SL的初始化,以及SFN/SL的初始同步。
(2)SFN/SL维持与纠错
完成初始化同步后,后续还有可能失步,因此需要一种流程来时刻监控SFN/SL的同步状态 ,并在失步时由L2&L3的软件就PHY进行纠错,重新同步。
由于L2&L3是Master,由L2&L3软件负责对L1的SFN/SL就行纠错。过程如下:
- L1 PHY通过SLOT.indication(SFN/SL=M)向L2&L3软件汇报自身的SFN/SL,
- L2&L3软件发现L1 PHY的SFN/SL=M与自身维持的SFN/SL=N不一致,就启动纠错机制,通过DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N), 要求L1 PHY对自身的SFN/SL就行纠错。
- L1 PHY收到DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N),之后,如果N=M, 这表明是同步的。
- L1 PHY收到DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N),之后,如果N!=M, 这表明是失步的,则L1 PHY对自身的SFN/SL就行纠错,设置为SFN/SL=N.
- L1 PHY同时通过ERROR.indication(失步指示,接受到的SFN/SL, 原先期望的SFN/SL)指示自身内部SFN/SL的失步和纠错情况。
或许有人为思考,L1 PHY已经完成了纠错,为啥还要通过ERROR.indication通知L2&L3软件呢?
主要是因为,L2&L3软件也有可能与它自身的参考时钟源失步,因此通知L2&L3软件自身的纠错情况,以便L2&L3软件根据自身内部的状态,采取合适的行为。
2.2.2.2 L1 PHY is master
如果L1 PHY is master,L1 PHY就是参照的标准,纠偏就发生在L2&L3软件中。
这种方案的难点是L1 PHY如何获得同步时钟。
(1)SFN/SL的初始化
- L2&L3软件通过Start.request P5配置信令启动L1 PHY.
- L1 PHY启动后,PHY就不能使用任意的SFN/SL值作为默认值M,M值是PHY与GPS或外部时钟源进行同步后的结果值。
- L1 PHY通过SLOT.indication = M消息通知L2&L3软件,初始SFN/SL值。
- L2&L3软件收到该消息后,设置自身的SFN/SL=M,作为自己的初始SFN/SL值。
- L2&L3软件通过DL_TTI.request = M通知L1 PHY,自身当前的SFN/SL值M, 很显然,与PHY此时是一致的。
- L1 PHY通过SLOT.indication = M+1通知L2&L3软件,期望的下一个SFN/SL值。
至此,完成了SFN/SL的初始化,以及SFN/SL的初始同步。
(2)SFN/SL维持与纠错
- L1 PHY通过SLOT.indication(SFN/SL=M)向L2&L3软件汇报自身的SFN/SL
- L2&L3软件发现L1 PHY的SFN/SL=M与自身维持的SFN/SL=N不一致,就启动纠错机制,通过DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N), 要求L1 PHY对自身的SFN/SL就行纠错。
- L1 PHY收到DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N),之后,如果N=M, 这表明是同步的。
- L1 PHY收到DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N),之后,如果N!=M, 这表明是失步的,但L1 PHY是Master,它不会对自身的SFN/SL就行纠错,并丢弃该请求。
- L1 PHY同时通过ERROR.indication(失步指示,接受到的SFN/SL, 原先期望的SFN/SL)指示自身内部SFN/SL的失步和纠错情况。
- L2&L3软件是Slave,因此L2&L3软件会对自身的SFN/SL进行纠错。
在上述过程中, L1 PHY会一直丢弃DL_TTI.request(SFN/SL=N) or UL_TTI.request(SFN/SL=N),知道L2&L3对自身的SFN/SL进行纠错,重重同步。
2.2.3 API message order
FAPI P7接口的消息的发送,是有严格的时序要求的,并非任意时序发送。
(1)下行消息的时序
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)
der
FAPI P7接口的消息的发送,是有严格的时序要求的,并非任意时序发送。
(1)下行消息的时序
[外链图片转存中…(img-O6jQ8qPJ-1715872183163)]
[外链图片转存中…(img-dLvAbBKs-1715872183163)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上物联网嵌入式知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、电子书籍、讲解视频,并且后续会持续更新
需要这些体系化资料的朋友,可以加我V获取:vip1024c (备注嵌入式)