- 博客(67)
- 收藏
- 关注
原创 LWIP之四:LWIP内核超时事件处理
LWIP的超时处理机制主要用于管理和处理各种超时事件,包括周期性超时事件和单次超时事件。其核心思想是通过链表来管理超时事件,根据超时事件的超时时间进行排序,并且在合适的时机检查是否有超时事件超时,若超时则执行相应的回调函数。
2025-02-19 00:03:45
358
原创 LWIP之五:ARP协议
LWIP 维护一个 ARP 缓存表,用于存储 IP 地址与 MAC 地址的映射关系。使用结构体数组保存ARP缓存表,ARP缓存表大小由ARP_TABLE_SIZE定义,默认为10。这个缓存表的作用是减少频繁的 ARP 请求,提高网络通信效率。
2025-02-17 23:46:10
746
原创 LWIP之三:LWIP协议栈之数据包缓冲区(PBUF)
LwIP(Lightweight IP)是一个专为嵌入式系统设计的轻量级TCP/IP协议栈,其核心目标是在资源受限的环境中高效运行。PBUF(Packet Buffer)是LwIP中用于管理网络数据包的核心数据结构,负责存储、传递和处理网络数据。PBUF的设计充分考虑了内存效率和数据操作的性能,是LwIP高效运行的关键。
2025-02-17 23:20:15
854
原创 LWIP之二:LWIP协议栈之内存管理
LWIP使用内存池和动态内存堆两种方式实现内存管理。LWIP 提供了丰富的配置选项,允许用户根据系统的资源和性能要求调整内存管理策略。
2025-01-21 18:06:28
791
原创 LWIP之一:使用STM32CubeMX搭建基于FreeRTOS的LWIP工程并分析协议栈初始化过程
使用STM32CubeMX搭建基于FreeRTOS的LWIP工程并分析协议栈初始化过程。
2025-01-05 14:32:38
1542
原创 使用C语言库函数格式化输入时格式类型与数据类型不匹配导致程序异常
格式字符串中的转换说明符必须与要读取的数据类型相匹配。例如,使用%d读取整数,%f读取浮点数,%s读取字符串等。如果类型不匹配,可能会导致数据读取错误或程序异常。
2024-12-18 23:35:01
699
原创 Freertos多核SMP模式下Lwip出现共享资源违规访问问题
在 FreeRTOS 的多核 SMP 模式下,多个内核可能会同时访问 LWIP 相关的资源,如网络缓冲区、协议控制块等。如果涉及到对共享资源的访问,为了防止冲突,可以使用互斥锁或信号量。
2024-12-12 17:30:59
534
原创 解决STM32使用J-Link可以擦除和读取但是无法烧录问题
使用J-Link烧录模组固件,出现可以读取和擦除,但是无法烧录的问题,使用STM32CubeProgrammer更改选项字节中的Read Out Protection解决。
2024-08-22 18:02:24
1336
原创 Ubuntu网络服务无法启动问题
解决Ubuntu20.04卡死重启后网络服务打不开,没有网络图标,无法通过sudo service network-manager restart命令重启网络服务问题。
2024-08-20 10:06:31
1114
原创 STM32裸机和RTOS中的线程安全问题及STM32cubeMX中的线程安全策略
线程安全问题并不只存在于基于RTOS的应用程序中;裸机应用程序中也存在这个问题。C库函数可以进行不那么明显的调用(隐式调用)导致类似的问题。例如,printf()可以调用malloc()。使用STM32cubeMX生成工程时,可选的线程安全策略有五种,如果选择Default,不直接制定,那么裸机应用会自动选择策略2,RTOS应用会自动选择策略4。
2024-08-15 22:53:18
1131
3
原创 Lwip使用RAW API进行TCP连接的tcp_err问题
在连接上发生致命错误时会调用tcp_err_fn定义的回调函数。调用的目的是通知应用程序当前连接发生了致命错误,之后tcp的pcb会被自动释放。
2024-08-05 15:19:00
680
原创 Ubuntu能联网,只有IPV6地址,没有IPV4地址
Ubuntu突然只显示IPV6地址,没有IPV4地址,可以正常上网。Windows下FTP 客户端使用 FileZilla,主机的地址好像只能填IPV4地址。将IPV4地址由自动改为手动,使用静态IP,同时禁用IPV6。
2024-05-16 21:32:31
1677
原创 Qt6.6添加多媒体模块Multimedia报错问题
解决Qt6.6添加多媒体模块Multimedia报Unknown module(s) in QT: multimedia错误问题,添加其他模块同理。
2024-04-01 22:52:07
2450
2
原创 泰凌微(Telink)8258配置串口收发自定义数据
泰凌微(Telink)8258配置串口收发自定义数据,通过缓冲队列进行收发数据,包含全部实现过程。
2023-12-07 18:27:31
1919
4
原创 Eclipse切换中文环境
Eclipse切换中文环境,下载时要选择跟自己Eclipse版本一致的包,比如我的Eclipse启动界面如下,我就要找Helios的包。
2023-11-17 16:45:15
1534
原创 蓝牙Mesh专有DFU
专有的mesh DFU协议优化为尽可能有效地更新网络中的所有设备。尽管它与nRF5 SDK Bootloader和DFU模块共享一些工具和代码模块,但在协议和操作方面存在一些差异,以便尽可能轻松地更新大量设备。
2023-09-11 16:09:14
733
原创 基于nRF52840 Dongle配合Wireshark对Mesh网络抓包并解析(Nordic)
基于nRF52840 Dongle配合Wireshark对Mesh网络抓包,以通用开关模型为例,通过添加AppKey和NetKey对Mesh消息解析。
2023-09-01 15:51:44
2152
2
原创 蓝牙Mesh设备配网过程及抓包分析
蓝牙Mesh设备配网过程主要分为五个阶段:①信标阶段;②邀请阶段;③交换公钥阶段;④身份认证阶段;⑤分发配网数据阶段。
2023-08-21 15:09:10
3118
18
原创 解决SEGGER Embedded Studio无法显示Nordic MCU外设寄存器问题
解决SEGGER Embedded Studio无法显示Nordic MCU外设寄存器问题。
2023-08-20 18:12:14
756
原创 STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例)
STM32使用QUADSPI读写外部Nor Flash(以W25Q64为例),通过QUADSPI三种模式(间接模式,轮询模式和内存映射模式)的使用来操作W25Q64。
2023-06-13 18:35:35
3638
原创 基于Keil生成外部Nor Flash下载算法,并使用J-Flash直接烧录(以W25Q64为例)
基于Keil生成外部Nor Flash下载算法,并使用J-Flash直接烧录(以W25Q64为例),包括参考文档介绍,下载算法实现过程,避免踩坑。
2023-05-10 23:55:39
7060
7
原创 分别使用软件和硬件SPI驱动1.28寸LCD屏幕刷新时间对比(驱动IC为GC9A01)
分别使用软件和硬件SPI驱动1.28寸LCD屏幕刷新时间对比(驱动IC为GC9A01)
2023-04-24 18:40:59
3403
3
原创 CmBacktrace库在工程中的添加和应用
CmBacktrace库在工程中的添加和应用,包括断言和故障的使用,全局变量的打印,故障函数的修改,串口和软件看门狗的处理等。
2023-04-19 22:02:26
1374
1
原创 使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread项目
使用RT-Thread Studio搭配STM32CubeMX新建RT-Thread项目避坑。
2023-04-11 11:36:29
2661
2
原创 使用Nordic的nrf52832控制指定从机(一主多从)
1.主机能连接多个从机(主机作为控制器,从机作为节点)。2.主机能使用不同的按键控制不同的节点(按键和节点一一对应,与从机的连接顺序无关)。3.主机扫描过滤器使用设备全称,记录和从机的连接句柄,并进行控制。
2023-01-05 11:01:49
2960
2
原创 使用Nordic的nrf52832进行主从机连接抓包分析
对nrf52832主从机连接过程中产生的数据包进行抓包分析,包括对空中数据包格式分析和主从机交互过程中SN和NESN变化分析。
2022-12-28 16:59:46
2056
原创 使用Nordic的nrf52840实现蓝牙DFU过程
使用Nordic的nrf52840实现蓝牙DFU过程,包括软件的安装、公私密钥的生成、DFU包制作、HEX文件编辑和升级演示等。
2022-12-22 14:10:17
3839
4
原创 使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)
使用Nordic的nRF52840 Dongle配合Wireshark对蓝牙设备抓包(BLE)。
2022-12-15 14:10:09
8278
2
原创 (二)基于STM32L431的Liteos低功耗Runstop模式的实现优化(退出stop2模式后任务相关Tick补偿优化)
基于STM32L431的Liteos低功耗Runstop模式的实现优化(退出stop2模式后任务相关Tick补偿优化),描述了Liteos的任务延时和调度相关的原理。
2022-10-21 14:50:34
1421
原创 (一)基于STM32L431的Liteos低功耗Runstop模式的实现
使用Liteos的develop版本,基于STM32L431的Liteos低功耗Runstop模式的实现,stop2模式下功耗2.8uA。
2022-10-19 21:58:57
2645
5
原创 基于STM32L431的Liteos低功耗Tickless模式的使用
Liteos的Tickless模式通过在执行空闲任务时改变Systick的Reload值来改变systick的中断时间,以此来拉长MCU进入睡眠模式的时间。文中包括相关部分源码的解析(个人理解)。
2022-10-12 17:11:32
1772
原创 Liteos静态内存管理的使用
Liteos静态内存管理的使用,包括申请、清除和释放内存。可以通过计算来合理分配内存池的大小,写入数据时不能超过内存块的大小。
2022-10-08 17:57:25
4399
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人