嵌入式软件架构设计之总目录

​​​​​总目录

嵌入式软件架构设计之一:点亮星星之灯,构建最小系统

嵌入式软件架构设计之二:通过uart串口,构建系统log日志打印功能

嵌入式软件架构设计之三:uart串口接收数据的常见方法

嵌入式软件架构设计之四:UART串口数据接收与处理的高效同步方案

嵌入式软件架构设计之五:通过UART串口-构建系统交互式命令行处理组件

嵌入式软件架构设计之六:通过UART串口-构建“AT命令”处理机

嵌入式软件架构设计之七:双机通信及通信协议之字符串协议

嵌入式软件架构设计之八:双机通信协议之二进制协议

嵌入式软件架构设计之九: 双机通信之通信方式

嵌入式软件架构设计之十: 双机通信协议之那些常见数字的由来(0x7E、0xAA、0x55、0x0D)

嵌入式软件架构设计之十一:RTC构建系统时间(1/2)

嵌入式软件架构设计之十二:RTC构建系统时间-分层设计(2/2)

嵌入式软件架构设计之十三:MCU的固件版本为什么要分离成Bootloader+App两部分?

嵌入式软件架构设计之十四:版本OTA / FOTA 升级设计(构建中,待发布...)

嵌入式软件架构设计之十五:版本升级中的文件完整性校验算法-MD5、SHA256(上位机工具及C语言代码)

嵌入式软件架构设计之十五:系统电源管理框架设计(构建中,待发布...)

嵌入式软件架构设计之十六:系统电源管理之休眠与唤醒(构建中,待发布...)

嵌入式软件架构设计之十七:系统电源管理之低功耗设计原则(构建中,待发布...)

嵌入式软件架构设计之十八:备用电池充电及健康管理框架设计(构建中,待发布...)

嵌入式软件架构设计之十九:批量生产功能测试设计(构建中,待发布...)

嵌入式软件架构设计之二十:版本功能裁剪、宏定义的使用(构建中,待发布...)

嵌入式软件架构设计之二十一:系统安全机制设计(看门狗/容错机制设计)(构建中,待发布...)

嵌入式软件架构设计之十二十二:Base64编解码、CRC、MD5、SHA256、AES128/256在实际项目中的使用(构建中,待发布...)

嵌入式软件架构设计之十二十三:软件架构设计常用原则(分层、模块化、解耦、热裁剪)具体                                                          实现

实战篇(STM32+FreeRTOS/RT-Thread)

Stm32CubeMx下载及安装详细图文过程
 


 

持续构建中...

嵌入式软件架构设计之九: 双机通信之通信方式 双机通信可分为主从和对等模式,主要采用请求-响应(可靠)和主动上报(不可靠)两种方式。通信机制分为同步和异步:同步通信要求每次请求必须得到响应后才能继续,实现简单但效率低;异步通信允许多个请求同时进行,效率高但实现复杂。两种方式都需要通过帧匹配(消息类型和流水号)处理请求响应穿插的情况。建议优先使用同步通信以保证可靠性,但帧结构设计需支持帧匹配功能以应对临界情况。异步通信适用于高效率要求的场景。 阅读详情

相关推荐

嵌入式软件架构设计之三:uart串口接收数据的常见方法

这种方法是做一个timer定时器,串口开始接收数据时开启定时,只要有连续的数据过来就reset 定时器重新定时,当最后一个数据接收结束时,定时器定时中断产生,认为本波数据接收完毕,在中断处理函数中将DMA中数据存入FIFO。这种方式通常是最基本的方式,一个字节串口数据过来,触发一次串口中断,在串口中断中可以读到一个字节数据,然后依次放入串口接收buff中,等接收到结束符或达到提前约定的数据长度时,可以认为本次接收结束,可以进行下一步处理数据的动作。DMA+空闲中断方式实现“整包”不定长串口数据接收。

HanGo_Linker的博客 619

嵌入式软件架构设计之十二:RTC构建系统时间-分层设计(2/2)

本文介绍了嵌入式系统中RTC模块的分层架构设计方法。主要内容包括:1)采用单写者多读者模型维护UNIX时间戳,提出两种更新方案(周期读取RTC和RTC+Systick组合);2)设计三层架构:驱动层(硬件操作)、服务层(时间转换/同步)、应用层(接口调用);3)实现统一驱动接口,支持多种RTC芯片;4)给出时间校验、转换等关键算法实现。该设计遵循模块化、低耦合原则,可提高代码复用性和可维护性,适用于资源受限的嵌入式系统。

HanGo_Linker的博客 185

嵌入式软件架构设计之四:UART串口数据接收与处理的高效同步方案

本文探讨了UART串口接收数据后进行处理任务间同步的方案。通过分析数据接收结束判断(结束符或空闲中断)、数据存储(环形FIFO或消息队列)和任务同步(信号量)三个关键问题,提出了两种典型实现模式:1)环形FIFO+信号量方式,支持数据流连续处理及拼包拆包,更具灵活性;2)消息队列方式,适合简单交互场景。文章重点阐述了环形FIFO的非破坏性读取特性在处理半包/粘包时的优势,并提供了基于RT-Thread的具体实现代码示例。最后指出这种中断接收+任务处理的模式符合中断上下文设计思想,将耗时操作从中断服务程序转移

HanGo_Linker的博客 1147

嵌入式软件架构设计之五:通过UART串口-构建系统交互式命令行处理组件

本文介绍了一种嵌入式系统命令行处理组件的实现方法,通过串口接收命令行输入,采用零拷贝技术高效解析命令参数,使用函数指针和命令映射表实现命令匹配分发。系统以空格为分隔符解析命令和参数,通过直接修改原始数据并替换结束符的方式实现零拷贝解析,节省内存空间。命令表维护了命令名称、处理函数和描述信息,分发器通过遍历匹配执行对应操作。该方案适用于开发调试、生产测试等场景,具有高效、实用的特点,可灵活修改应用于不同项目需求。

HanGo_Linker的博客 749

嵌入式软件架构设计之六:通过UART串口-构建“AT命令”处理机

本文介绍了AT命令的处理方法及其在物联网领域的广泛应用。AT命令以"AT"开头,分为基础类、S参数类和扩展类三种类型,具有请求、响应和URC主动上报三种交互形式。文章提出了一种基于单向链表和函数指针的AT命令处理机实现方案,通过结构体存储命令元素、参数和类型信息,利用函数指针表实现命令分发。该方案支持多种AT命令格式解析,包括基础指令、S参数指令和扩展指令,并通过链表结构灵活处理多参数情况。最后以GPS控制为例展示了具体命令的处理流程,体现了该方法的通用性和扩展性。

HanGo_Linker的博客 1118

嵌入式软件架构设计之八:双机通信协议之二进制协议

上章我们介绍了双机通信中的文本协议,和文本协议相对应的是二进制协议,二进制协议是指通信双方通信时使用二进制数据格式构造数据包实现数据交换。

HanGo_Linker的博客 623

STM32CUBE+自平衡车从想法到产品 - 总目录

总目录 博主在本专栏将会从一个想要做平衡车的想法到如何将平衡车的产品做出来,将整个的过程进行详细的讲解。从思路上如何设计,以及我们在对嵌入式软件架构上如何处理,快速的开发、迭代开发。本专栏使用STM32CUBE软件来帮助我们快速的配置底层软件,加快软件开发速度,这种方式也是目前市场上的趋势。 下面是目录,方便大家快速的查看对应的博客。下面蓝字都是传送门,点击进入即可: ...

烛火飞蛾 1026

嵌入式软件架构设计之十三:MCU的固件版本为什么要分离成Bootloader+App两部分?

如果是一台设备的升级,勉强按照上面的操作还能凑合,如果是批量的发货,成千上万台设备,更甚者是几十万、上百万台,亦或是千万级的发货,靠拆壳子飞线,然后手动进行逐台升级,那基本上是不现实的。我们知道对于像MCU这样的芯片进行软件开发时,我们搭建好开发环境,使用集成编译开发环境如Keil或IAR,VSCode等工具进行编译(当然底层实际是用ARM CC/GCC等编译器),通常编译出一个HEX文件,这个HEX文件带有地址信息,使用SWDIO/JTAG等接口,通过J-Flash工具可以进行芯片固件的烧录。

HanGo_Linker的博客 291

嵌入式软件架构设计之七:双机通信及通信协议之字符串协议

在嵌入式产品开发中,经常会遇到需要双机通信的场景,比如设备与PC上位机软件之间的RS232串口通信;智能手表与后端云服务器之间基于TCP的无线通信;蓝牙主机设备(如手机蓝牙APP)与蓝牙从机(如蓝牙智能锁)之间的通信;设备内部不同SOC芯片之间或是功能模块之间的串口通信,例如两个MCU之间的通信,MCU与蓝牙芯片间的通信,这些都属于双机通信。

HanGo_Linker的博客 1241

嵌入式软件架构设计之二:通过uart串口,构建系统log日志打印功能

嵌入式软件架构设计之二:通过串口,构建系统log日志打印功能

HanGo_Linker的博客 716

嵌入式软件架构设计之一:点亮星星之灯,构建最小系统

其实这里的LED主要是在调试过程中,起到一个指示作用,可以很直观的来指示程序的走向。嵌入式软件开发中,最简单的外设应该是GPIO,我们就从GPIO下手,做一个星星之灯,只要灯能点亮,能够控制亮和灭,那么软件最小系统就算是构建完成了,软件v1.0版本就算是构建完成了,我们就可以发布第一版软件了,此后的版本都可以基于此v1.0版本进行迭代,当然这个v1.0是我们自定义的内部调试版本,正式商用的版本号需要根据真实的需求去指定,此处的v1.0版本号是为了标识自己开发版本的迭代过程,通过点滴的功能累计来增加信心。

HanGo_Linker的博客 489

嵌入式软件架构设计之十一:RTC构建系统时间(1/2)

在嵌入式系统中,时间是一个很重要的参数,尤其是在网联设备中,实时时间更是必需的参数。比如系统运行日志携带的时间戳可以帮我们追踪系统出现问题的时间点。物联网终端设备上报给云服务器的数据报文中的时间戳可以让服务器知道设备事件产生的准确时间。接收网络数据时,可以通过数据报文中的时间和设备里的本地时间进行比对,判断网络数据的时延和时效性。其他的诸如系统定时开关机,定时唤醒,日历,定时上报、周期上报等功能都依赖于精确的系统时间。那么系统时间是怎么来的呢?

HanGo_Linker的博客 238

嵌入式软件架构设计之十五:版本升级中的文件完整性校验算法-MD5、SHA256(上位机工具及C语言代码)

MD5 SHA256 计算MD5/SHA256工具 MD5/SHA256-C语言代码。

HanGo_Linker的博客 205

【软考 系统架构设计师】案例分析① 解题技巧

这是一个系统架构设计师的简明教程,可以快速掌握高频考点和应试技巧,适合想要一次通关的同学!

万猫学社 1683

Stm32CubeMx下载及安装详细图文过程

本文介绍了STM32CubeMX的下载与安装步骤。首先需在ST官网注册并下载安装包,安装过程中需确保电脑已安装Java环境。下载完成后双击exe文件按提示完成安装即可使用STM32CubeMX进行项目开发。全文简明扼要地说明了从下载到安装成功的完整流程。

HanGo_Linker的博客 2295

MobaXterm终端工具个人学习版安装包及常用配置备份

资源包含 MobaXterm 个人版的安装包以及日常运维常用的基础配置备份文件。适用于网络工程师及运维人员用于日常的服务器管理、SSH 连接及串口调试。 压缩包内附带了个人整理的软件使用技巧与配置说明(仅供个人学习参考)。请各位同行下载后注意,技术工具请尽量支持官方正版,本资源仅供个人测试与交流使用,切勿用于商业环境。

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

机械臂的「抽风」自救指南:从万向节死锁到毫米级丝滑抓取

CANoe信号传输故障排查指南

本文提供了全面的CANoe信号传输故障排查指南,涵盖从硬件连接、通道配置到软件脚本与数据库加载的全链路诊断。针对常见的通道指示灯不亮、信号无法发送及ECU握手失败等问题,给出了基于CANoe工具和CAPL脚本的详细排查步骤与解决方案,帮助工程师系统化定位并解决实车测试中的通信故障。

ice55的博客 258

学习笔记:物理信息神经网络(PINN)

PINN 的强大在于它打破了传统数值方法的限制,将神经网络的非线性拟合能力与物理方程的严谨性结合起来。它在处理高维、数据稀缺、复杂物理约束的场景下尤其出色。当然,PINN 也有收敛慢、梯度消失等挑战,比如,复杂 PDE 可能导致梯度传播困难,收敛慢(梯度消失)、于具有快速变化特征的系统,如冲击波,标准 PINN 可能精度不足,需要改进策略,比如自适应采样或多尺度特征提取。但随着研究深入,这些问题正在不断被解决。物理或化学方程为什么往往是偏微分方程?什么是物理信息神经网络(PINN)?x_%7Bi%7D。

qq_52635735的博客 1万+

Win10系统蓝屏错误BAD SYSTEM CONFIG INFO的解决方案

BAD SYSTEM CONFIG INFO错误是Win10系统中较为常见的一种蓝屏错误,通常与系统配置文件损坏或丢失有关。本文介绍了三种有效的解决方法:使用系统修复高级选项修复、通过PE修复文件和重装新系统。用户可以根据实际情况选择合适的方法进行操作。同时,建议用户定期备份系统重要文件和数据,以防止类似问题的发生。在遇到问题时,保持冷静并耐心操作,通常可以顺利解决问题。

mmoo_python的博客 7724

Uniapp H5端SEO优化全攻略:提升搜索引擎排名与流量

在移动互联网时代,H5页面因其跨平台、低成本、易传播的特性,成为许多企业的首选。Uniapp作为一款优秀的前端跨端开发框架,能够快速开发H5、小程序、App等多端应用。然而,由于Uniapp默认采用SPA(单页应用)架构,H5端在SEO(搜索引擎优化)方面存在一定劣势,如爬虫难以抓取动态内容、页面标题和描述不易优化等。 本文将系统性地介绍Uniapp H5端的SEO优化方案,涵盖基础优化、SPA优化策略、内容优化、技术优化、外部优化及监测分析,帮助开发者提升网站在搜索引擎中的排名,获取更多自然流量。

vvilkin的学习备忘 1973

视频教程-SAP S4 HANA FICO COPA 获利能力分析-ERP

SAP S4 HANA FICO COPA 获利能力分析 从业超过8年的SA...

weixin_33456805的博客 1442

【STK】手把手教你利用STK进行进行光电红外仿真02-STK/EOIR模块属性之一 传感器选项设置

EOIR传感器可以从空间几何属性、光谱属性、光学属性、辐射属性四个方面进行设置,并且可以设置信号传播路径中的大气特性,包括大气模型、气溶胶模型、气象学可见性和大气湿度。在定义EOIR传感器时,需要Sensor——Definition属性页中,将Sensor Type设置为EOIR。单击下面的按钮打开传感器的EOIR配置页,可以对传感器的属性进行配置,此外,还可以在场景中视情况添加相关的中心体。路径辐射损耗影响上述特性的计算,计算的结果考虑了传感器、目标位置的影响,但是还没考虑地球临边背景的影响。

weixin_44184852的博客 3201

C++高级数据结构算法 | 二叉树的四种遍历算法详解(递归与非递归实现)

二叉树遍历方法 、前序遍历算法 、中序遍历算法 、后序遍历算法 、层序遍历算法

ZY-JIMMY 2565

详解AUTOSAR:AUTOSAR架构中的配置文件(拓展篇—7)

查看AUTOSAR代码包时会发现一些这样格式的文件:xxx_PBcfg.c、xxx_Lcfg.c和xxx_Cfg.h,本篇博文讲一讲这几个配置文件的作用和特点。

不脱发的程序猿 2147

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

上一篇: 嵌入式软件架构设计之三:uart串口接收数据的常见方法
下一篇: cJson-》cJSON_New_Item -》 rt_malloc分配40字节空间失败问题分析结果
μLink
博客等级 码龄5年 123粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值