嵌入式框架设计

1. 数据的通信

1.1 基于环形队列的数据缓冲

嵌入式系统将需要发送的数据写入队列,而上位机则从队列中读取数据。由于环形队列的特性,可以实现先进先出的数据传输机制,保证数据的顺序性和完整性。这种通信方式适用于需要存储和传输大量数据的场景,能够有效地解耦嵌入式系统和上位机之间的数据传输,提高通信效率。

注意:

1.在多线程的队列读写,应在读写时加锁来保护。

2.环形队列读的速度慢于写时,一旦写的地址到达了读的地址时,队列将被清空。

  • 优点:保持了数据的顺序性和完整性,有效解耦了生产者和消费者,实现了解耦的通信方式。
  • 适用场景:适用于需要高效地存储和传输大量数据的场景,能够提高通信效率和保证数据传输的顺序性。

C程序设计:环形队列_环形队列c实现-CSDN博客

1.2 基于超时机制的数据收发模式

嵌入式系统和上位机之间通过设定超时时间来进行数据的发送和接收。嵌入式系统在发送数据后等待上位机的回复,在设定的超时时间内如果没有收到回复,则进行相应的处理,比如重新发送数据或者进行错误处理。这种通信方式能够有效地处理因网络或其他原因导致的数据丢失或超时的情况,提高通信的可靠性和稳定性。

  • 优点:能够有效处理数据传输过程中出现的超时情况,提高通信的可靠性和稳定性。
  • 适用场景:适用于对通信过程中的及时性要求较高的场景,能够及时处理因网络或其他原因导致的数据丢失或超时的情况。

2. 任务调度框架的设计

2.1 状态机+链表事件(适用与单线程框架)

任务之间的切换使用状态机来实现, 外部消息使用事件的方式来下发到任务中。

流程:主线程中:

系统消息事件出队,获取当前最新的消息(任务切换,数据事件,中断事件,无事件等)。

然后用当前运行的状态中的任务去处理这个事件。

更新当前的状态。

根据新的状态执行固定的task.

C程序设计:状态机_状态机编程-CSDN博客

C程序设计:基于循环双向链表的事件管理器_事件链表-CSDN博客

2.2 基于状态机的多任务调度框架(多线程)

类似上诉方法,只是状态任务都设计为单独线程,使用消息队列来进行消息的传递和任务的切换。

2.3 基于c++设计模式

C++ 程序设计:四大模式(工厂+装饰+策略+观察者)_c++四种模式-CSDN博客

3.数据维护的设计

3.1 运行时易变的参数

例如:

1.当前的运行模式。

2.当前的模板。

3.当前的算法选择等。

4.时间。

5.日志。

3.2 系统配置参数,可通过上位机修改的。

例如:SN号等,一些加密等级,通信方式等。

3.3 系统配置参数,不可修改的。

例如:固定的设备版本号,设备型号等。

3.4 modify

合理的利用modify维护在程序中,容易改变的变量,保证程序中的变量不会发生突变。

通过这种方式,我们可以降低程序的耦合性,提高程序的可维护性和可拓展性。当需要对程序进行调整或优化时,只需要修改这些 modify 变量的值,而不用改动大量代码。这样做有助于降低代码修改的风险,并提高代码的可读性和可维护性。

4.OTA的设计

单片机中实现bootloader功能_单片机bootloader-CSDN博客

5.日志系统的设计

freeRTOS:基于(队列+线程)的日志系统设计-CSDN博客

6.flash擦写平衡的设计

C程序设计:基于双向链表的flash磨损平衡算法_flash均衡擦写算法 c语言-CSDN博客

7.内存管理设计

单片机实现动态内存管理_单片机内存池设计-CSDN博客

相关推荐
RFG20123 小时前
20、详解Dubbo框架:消费方如何动态获取服务提供方地址?【微服务架构入门】
java·人工智能·后端·微服务·云原生·架构·dubbo
Tadas-Gao8 小时前
基于规范驱动开发的下一代软件工程范式:从理论到实践
驱动开发·架构·系统架构·大模型·llm·软件工程
御坂10101号10 小时前
从暴力扫图到成本估算:SpiceDB 如何重构 ReBAC 性能引擎
算法·性能优化·架构·database
黄俊懿11 小时前
【架构师从入门到进阶】第一章:架构设计基础——第一节:架构设计的目的
架构·系统架构·架构设计
utmhikari12 小时前
【架构艺术】治理后端稳定性的一些实战经验
java·开发语言·后端·架构·系统架构·稳定性·后端开发
礼拜天没时间.13 小时前
Docker与Harbor迁移实战:从入门到生产级完整指南
linux·运维·docker·容器·架构·centos
黄俊懿14 小时前
【架构师从入门到进阶】第一章:架构设计基础——第二节:架构设计原则
分布式·后端·中间件·架构
技术传感器14 小时前
赋能智慧空间:看本体论如何破解城市更新运营难题
人工智能·深度学习·架构
小冷coding14 小时前
【项目】医疗数字化升级:基于Spring生态的合规化微服务架构实践
spring·微服务·架构
wzqllwy15 小时前
深入剖析微服务架构与 Spring Cloud
spring cloud·微服务·架构