14 Class B MAC commands
第14章 Class B Mac命令所有在 Class A 协议中描述的命令都应该在 Class B 中实现。Class B 协议还额外添加了如下的 MAC 命令。 CID Command 由谁传输 描述 终端 网关 0x10 PingSlotInfoReq x 终端设备用于将 ping 单播时隙数据速率和周期性传送给网络服务器 0x10 PingSlotInfoAns x 用于网络应答PingInfoSlotReq命令 0x11 PingSlotChannelReq x 用于网络服务器设置一个终端的单播 ping 通道 0x11 PingSlotFreqAns x 终端用于应...
9 Principle of synchronous network initiated downlink
第9章 下行同步网络的原理对于一个支持ClassB的网络,所有网关必须同步广播一个信标,以给所有终端提供一个参考时间。基于这个时间参考,终端可以周期性地打开接收窗口,下文称之为“ping slot”,这个“ping slot”被网络建设者用于发起下行通信。网络使用ping slots其中之一来发起下行通讯的行为,称之为“ping”。用来发起下行通讯的网关,是network server根据终端最近一次上行包的信号传输质量来选择的。基于此,如果终端根据广播的信标帧发现网络发生了切换(通信的网关发生了变化),它必须发出上行帧给network server,以使server端更新下行路径的数据库。 所有终端启动后,以Class A来加入网络。之后终端应用层可以切换到Class B。通过以下步骤来实现: 终端应用层请求LoRaWAN层切换到Class B模式。终端的LoRaWAN层搜索信标帧,如果搜索到并且锁定了信标帧,那么就向应用层返回BEACON_LOCKED的服务原语,反之则返回BEACON_NOT_FOUND的服务原语。为了促进信标帧的搜索,LoRaWAN层可以使用稍后介绍的 ...
CLASS A - ALL END-DEVICE
CLASS A - ALL END-DEVICE所有的LoRaWAN终端都必须满足Class A的规定。
CLASS C – CONTINUOUSLY LISTENING
CLASS C – CONTINUOUSLY LISTENING
13 Class B Downlink slot timing
第13章 Class B下行时隙时序13.1 定义为了使 Class B模式能够正常运行,终端必须以信标规定的精准时刻打开接收时隙窗口。这章节定义了所需的时序操作。 两个连续的信标起始点之间的间隔称为信标周期。信标帧的传输以 BEACON_RESERVED 时间间隔的起始端对齐。每个信标都有一个保护时间间隔,在该时间间隔之内是没有 ping 时隙的。保护间隔的长度对应于允许帧在空中的最长时间。这样就能保证在保护时间之前的一个 ping 时隙内发起的下行数据帧总是有时间去完成传输而不与信标的传输发生冲突。因此用于ping时隙的时间间隔是从 BEACON_RESERVED 时间间隔的末尾节点到下一 BEACON_GUARD 时间间隔的起始节点。 图 12 :信标时序 Beacon_period 128 s Beacon_reserved 2.120 s Beacon_guard 3.000 s Beacon-window 122.8...
7 Retransmissions back-off Activation
第7章 重传退避上行帧如下面这样: 需要网络或者应用服务器进行确认或者应答时,如果超时没有接收到,终端需要进行重传。 同时, 某些外部事件(断电,无线电干扰,网络断电,地震),将会导致大量的(>100)的设备出现同一时间上行的行为。 这样可能会引发灾难性的、持久的、射频网络过载的情况。 注意:这种上行帧的一个典型例子是 JoinRequest,当发生网络中断时,一组终端将会复位 MAC 层。 这一组的终端将会开始广播 JoinRequest 上行帧,只有当从网络中接收到 JoinResponse 命令时才会停止。 对于这些数据帧的重传,RX2时隙的末端和下一个上行帧的重传间隔应该是随机的,并且每个终端遵循不同的顺序(例如使用设备地址作为伪随机生成器的种子)。这些消息的发射占空比,要根据当地的参数要求,以及如下的限定,取二者中更严格的一个限定。 在上电或者复位后的第1个小时 T0 < t < T0+1h 发射时间 < 36秒 在接下来的10小时 ...
CLASS B - BEACON
CLASS B – BEACONClass B在当前协议版本中还仅作实验性参考。
freertos
[TOC] 0.前言0.1 变量及函数命名规范 变量名 ‘c’ for char ‘s’ for int16_t(short) ‘l’ for int32_t (long) ‘x’ for BaseType_t and any other non-standard types (structures, task handles, queue handles, etc.). If a variable is unsigned, it is also prefixed with a ‘u’. If a variable is a pointer, it is also prefixed with a ‘p’. For example, a variable of type uint8_t will be prefixed with ‘uc’, and a variable of type pointer to char (char *) will be prefixed with ‘pc’. 函数名 函数的前缀是它们返回的类型和定义它们的文件 vTaskPriorit...
littlefs
littlefs123456789101112131415161718192021// Users can override lfs_util.h with their own configuration by defining// LFS_CONFIG as a header file to include (-DLFS_CONFIG=lfs_config.h).//// If LFS_CONFIG is used, none of the default utils will be emitted and must be// provided by the config file. To start, I would suggest copying lfs_util.h// and modifying as needed.#ifdef LFS_CONFIG#define LFS_STRINGIZE(x) LFS_STRINGIZE2(x)#define LFS_STRINGIZE2(x) #x#include LFS_STRINGIZE(LFS_CONFIG) 机制 断电恢...
map文件分析
map文件分析1234567891011121314151617181920212223242526272829303132333435363738394041424344454647Image$$ER_IROM1$$Base 0x90000000 Number 0 anon$$obj.o ABSOLUTE__Vectors 0x90000000 Data 4 startup_stm32h750xx.o(RESET)__Vectors_End 0x90000298 Data 0 startup_stm32h750xx.o(RESET)__main 0x90000299 Thumb Code 0 entry.o(.ARM.Collect$$$$00000000)_main_st...








