μLink
上海漂流者;嵌入式物联网软件开发者;
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
嵌入式软件架构设计之总目录
嵌入式软件架构设计之一:点亮星星之灯,构建最小系统-优快云博客嵌入式软件架构设计之二:通过uart串口,构建系统log日志打印功能_嵌入式日志打印任务-优快云博客嵌入式软件架构设计之三:uart串口接收数据的常见方法_uart接收数据包-优快云博客嵌入式软件架构设计之四:UART串口数据接收与处理的高效同步方案-优快云博客嵌入式软件架构设计之五:通过UART串口-构建系统交互式命令行处理组件-优快云博客嵌入式软件架构设计之六:通过UART串口-构建“AT命令”处理机-优快云博客原创 2025-05-16 19:54:58 · 441 阅读 · 0 评论
-
嵌入式软件架构设计之十六:LED灯多种指示状态逻辑如何实现?
本文提出了一种基于事件触发和状态转换的LED灯状态控制方法。通过面向数据结构编程思想,设计了状态枚举、状态配置表和状态转换规则表,实现了多状态LED控制。系统采用非阻塞式时间管理代替延时,通过记录翻转时刻和持续时间来控制LED闪烁。同时利用事件队列和状态转换表实现状态切换,支持网络连接、OTA升级等多种场景的LED状态指示。该方法在FreeRTOS环境下实现,通过互斥锁保护共享资源,具有资源占用少、状态切换灵活等特点,适用于嵌入式设备的LED状态指示需求。原创 2025-12-31 11:40:50 · 28 阅读 · 0 评论 -
嵌入式软件架构设计之十五:版本升级中的文件完整性校验算法-MD5、SHA256(上位机工具及C语言代码)
MD5 SHA256 计算MD5/SHA256工具 MD5/SHA256-C语言代码。原创 2025-12-02 20:05:00 · 76 阅读 · 0 评论 -
嵌入式软件架构设计之十三:MCU的固件版本为什么要分离成Bootloader+App两部分?
如果是一台设备的升级,勉强按照上面的操作还能凑合,如果是批量的发货,成千上万台设备,更甚者是几十万、上百万台,亦或是千万级的发货,靠拆壳子飞线,然后手动进行逐台升级,那基本上是不现实的。我们知道对于像MCU这样的芯片进行软件开发时,我们搭建好开发环境,使用集成编译开发环境如Keil或IAR,VSCode等工具进行编译(当然底层实际是用ARM CC/GCC等编译器),通常编译出一个HEX文件,这个HEX文件带有地址信息,使用SWDIO/JTAG等接口,通过J-Flash工具可以进行芯片固件的烧录。原创 2025-11-28 18:41:52 · 217 阅读 · 0 评论 -
嵌入式软件架构设计之十二:RTC构建系统时间-分层设计(2/2)
本文介绍了嵌入式系统中RTC模块的分层架构设计方法。主要内容包括:1)采用单写者多读者模型维护UNIX时间戳,提出两种更新方案(周期读取RTC和RTC+Systick组合);2)设计三层架构:驱动层(硬件操作)、服务层(时间转换/同步)、应用层(接口调用);3)实现统一驱动接口,支持多种RTC芯片;4)给出时间校验、转换等关键算法实现。该设计遵循模块化、低耦合原则,可提高代码复用性和可维护性,适用于资源受限的嵌入式系统。原创 2025-09-23 14:36:26 · 149 阅读 · 0 评论 -
嵌入式软件架构设计之十一:RTC构建系统时间(1/2)
在嵌入式系统中,时间是一个很重要的参数,尤其是在网联设备中,实时时间更是必需的参数。比如系统运行日志携带的时间戳可以帮我们追踪系统出现问题的时间点。物联网终端设备上报给云服务器的数据报文中的时间戳可以让服务器知道设备事件产生的准确时间。接收网络数据时,可以通过数据报文中的时间和设备里的本地时间进行比对,判断网络数据的时延和时效性。其他的诸如系统定时开关机,定时唤醒,日历,定时上报、周期上报等功能都依赖于精确的系统时间。那么系统时间是怎么来的呢?原创 2025-09-22 19:50:49 · 190 阅读 · 0 评论 -
嵌入式软件架构设计之十: 双机通信协议之那些常见数字的由来(0x7E、0xAA、0x55、0x0D)
时,我们介绍了JT808协议,JT808协议使用‘0x7E’作为界定帧头帧尾的标识符,在进行转义时将'0x7E'转义成0x7D+0x02;2)0x7E的二进制形式为01111110,是一个“轴对称”的二进制数据,起始0,中间连续6个1,然后又是0,是一个0->1起始,1->0结束,中间连续6个1 的位模式,该特征非常便于硬件识别。在通常的二进制协议中,常常是以1个字节为单位的,一个字节数据的范围是0x00~0xFF,那我们也就是要在0x00~0xFF范围选择一个具备某种特征的。的硬件支持(如自动帧检测)。原创 2025-08-16 23:53:06 · 328 阅读 · 0 评论 -
嵌入式软件架构设计之九: 双机通信之通信方式
双机通信可分为主从和对等模式,主要采用请求-响应(可靠)和主动上报(不可靠)两种方式。通信机制分为同步和异步:同步通信要求每次请求必须得到响应后才能继续,实现简单但效率低;异步通信允许多个请求同时进行,效率高但实现复杂。两种方式都需要通过帧匹配(消息类型和流水号)处理请求响应穿插的情况。建议优先使用同步通信以保证可靠性,但帧结构设计需支持帧匹配功能以应对临界情况。异步通信适用于高效率要求的场景。原创 2025-08-16 18:49:22 · 760 阅读 · 0 评论 -
嵌入式软件架构设计之八:双机通信协议之二进制协议
上章我们介绍了双机通信中的文本协议,和文本协议相对应的是二进制协议,二进制协议是指通信双方通信时使用二进制数据格式构造数据包实现数据交换。原创 2025-08-09 17:59:00 · 562 阅读 · 0 评论 -
Stm32CubeMx下载及安装详细图文过程
本文介绍了STM32CubeMX的下载与安装步骤。首先需在ST官网注册并下载安装包,安装过程中需确保电脑已安装Java环境。下载完成后双击exe文件按提示完成安装即可使用STM32CubeMX进行项目开发。全文简明扼要地说明了从下载到安装成功的完整流程。原创 2025-08-07 10:20:19 · 1650 阅读 · 1 评论 -
嵌入式软件架构设计之七:双机通信及通信协议之字符串协议
在嵌入式产品开发中,经常会遇到需要双机通信的场景,比如设备与PC上位机软件之间的RS232串口通信;智能手表与后端云服务器之间基于TCP的无线通信;蓝牙主机设备(如手机蓝牙APP)与蓝牙从机(如蓝牙智能锁)之间的通信;设备内部不同SOC芯片之间或是功能模块之间的串口通信,例如两个MCU之间的通信,MCU与蓝牙芯片间的通信,这些都属于双机通信。原创 2025-08-05 18:12:11 · 1089 阅读 · 0 评论 -
嵌入式软件架构设计之六:通过UART串口-构建“AT命令”处理机
本文介绍了AT命令的处理方法及其在物联网领域的广泛应用。AT命令以"AT"开头,分为基础类、S参数类和扩展类三种类型,具有请求、响应和URC主动上报三种交互形式。文章提出了一种基于单向链表和函数指针的AT命令处理机实现方案,通过结构体存储命令元素、参数和类型信息,利用函数指针表实现命令分发。该方案支持多种AT命令格式解析,包括基础指令、S参数指令和扩展指令,并通过链表结构灵活处理多参数情况。最后以GPS控制为例展示了具体命令的处理流程,体现了该方法的通用性和扩展性。原创 2025-07-22 20:24:14 · 1046 阅读 · 0 评论 -
嵌入式软件架构设计之五:通过UART串口-构建系统交互式命令行处理组件
本文介绍了一种嵌入式系统命令行处理组件的实现方法,通过串口接收命令行输入,采用零拷贝技术高效解析命令参数,使用函数指针和命令映射表实现命令匹配分发。系统以空格为分隔符解析命令和参数,通过直接修改原始数据并替换结束符的方式实现零拷贝解析,节省内存空间。命令表维护了命令名称、处理函数和描述信息,分发器通过遍历匹配执行对应操作。该方案适用于开发调试、生产测试等场景,具有高效、实用的特点,可灵活修改应用于不同项目需求。原创 2025-07-11 15:42:24 · 699 阅读 · 0 评论 -
嵌入式软件架构设计之四:UART串口数据接收与处理的高效同步方案
本文探讨了UART串口接收数据后进行处理任务间同步的方案。通过分析数据接收结束判断(结束符或空闲中断)、数据存储(环形FIFO或消息队列)和任务同步(信号量)三个关键问题,提出了两种典型实现模式:1)环形FIFO+信号量方式,支持数据流连续处理及拼包拆包,更具灵活性;2)消息队列方式,适合简单交互场景。文章重点阐述了环形FIFO的非破坏性读取特性在处理半包/粘包时的优势,并提供了基于RT-Thread的具体实现代码示例。最后指出这种中断接收+任务处理的模式符合中断上下文设计思想,将耗时操作从中断服务程序转移原创 2025-07-11 15:41:05 · 1102 阅读 · 0 评论 -
嵌入式软件架构设计之三:uart串口接收数据的常见方法
这种方法是做一个timer定时器,串口开始接收数据时开启定时,只要有连续的数据过来就reset 定时器重新定时,当最后一个数据接收结束时,定时器定时中断产生,认为本波数据接收完毕,在中断处理函数中将DMA中数据存入FIFO。这种方式通常是最基本的方式,一个字节串口数据过来,触发一次串口中断,在串口中断中可以读到一个字节数据,然后依次放入串口接收buff中,等接收到结束符或达到提前约定的数据长度时,可以认为本次接收结束,可以进行下一步处理数据的动作。DMA+空闲中断方式实现“整包”不定长串口数据接收。原创 2025-05-16 18:31:11 · 551 阅读 · 0 评论 -
嵌入式软件架构设计之二:通过uart串口,构建系统log日志打印功能
嵌入式软件架构设计之二:通过串口,构建系统log日志打印功能原创 2025-05-14 23:19:26 · 642 阅读 · 0 评论 -
嵌入式软件架构设计之一:点亮星星之灯,构建最小系统
其实这里的LED主要是在调试过程中,起到一个指示作用,可以很直观的来指示程序的走向。嵌入式软件开发中,最简单的外设应该是GPIO,我们就从GPIO下手,做一个星星之灯,只要灯能点亮,能够控制亮和灭,那么软件最小系统就算是构建完成了,软件v1.0版本就算是构建完成了,我们就可以发布第一版软件了,此后的版本都可以基于此v1.0版本进行迭代,当然这个v1.0是我们自定义的内部调试版本,正式商用的版本号需要根据真实的需求去指定,此处的v1.0版本号是为了标识自己开发版本的迭代过程,通过点滴的功能累计来增加信心。原创 2025-05-14 18:26:49 · 410 阅读 · 0 评论
分享