ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

节点模型在嵌入式系统中的应用

节点模型在嵌入式系统中的应用 概述说明嵌入式系统最主要的目标就是并行处理各种任务。由于各种外设的事务到达时间的差异导致容易出现一段时间内出现大量的任务处理需求。对于FPGA来说还好但是对于ARM来说就是多个中断的同时处理容易出现问题。而且驱动之间的通信往往也需要进行并行处理所以选择一个可以并行运行的模型很重要。 之前一般是通过函数进行区分但是对于复杂的任务无法满足需求。后续通过技术储备学习找到了一个相对通用的模型节点模型。节点将每个模块划分为节点对象和输入输出以及连线。通过可视化的节点连接去描述设计的关系可以提高对象的封装程度可以大幅提高程序的一致性和稳定性。 节点系统的实现方法很多QT中有QtNode现成的框架实现RTOS可以封装C的信号与槽实现固定的节点系统。FPGA本身就是并行节点只需要用SV完成封装即可。目前通过一个[开源项目](https://gitcode.com/m0_46570640/logic)基本验证了节点模型在嵌入式的大部分场景下的封装效果。后续的设计说明基本上也是基于这个节点模型的开发验证。节点模型的组成节点对象一般在原型设计阶段会对设计进行功能划分划分出来的就是节点对象。这里顺带推荐一个软件drawio用于绘制原型设计非常高效后续在嵌入式设计流程中会详细说明如何从头到尾开发一个嵌入式系统。这个属于嵌入式系统的功能定义的内容不过在采用节点模型后在节点定义的时候更加追求封装性这样对洗头膏划分的准确性要求也有所提高这个在后续的设计中会有所体现。输入输出在可视化节点中输入输出就是节点和其他节点的交互接口。对于非可视化的节点则是具体的总线端口。ARM一般是一个指针加上数据长度对于QT则是信号和槽对于FPGA则是一组封装好的interface。统一的输入节点输出是节点系统标准化的关键所以一般尽可能精简输入输出将特殊逻辑集中到节点内部完成。节点连线可视化节点一般采用现有的UI框架直接手动连线而对于非可视化节点直接连接信号与槽就可以。通过精简的信号去表达节点之间的连接关系也是设计封装性的体现。实际设计中保证输入输出之间的连线兼容性就可以提高灵活性但是会提高设计复杂度需要根据嵌入式系统的复杂度进行详细细分。节点模型部署方法QtNodeQtNode是基于QT6的一个开源项目可以可视化完成节点的设计提供内置的节点封装模型。节点的各个要素都可以在QT中完成。还有一个python的节点系统的版本这个在算法开发部分会涉及到。两个节点系统效果是等效的开发区别就是一个C一个Python两者在开发嵌入式系统的交互系统具备很好的效果。QT5一些嵌入式设备会搭建linux系统一般部署的都是一些低版本的QT进行图形界面的开发。这个时候一般直接适用QT的信号与槽去实现节点舍弃可视化节点的灵活性以换取性能。QT5的信号与槽天然就可以作为节点的输入和输出而OOP的设计方法就可以完成节点的封装。在实际使用中Qt5实现的固化节点系统基本上可以满足大部分的嵌入式系统开发的需求。RTOS相较于完整的linux操作系统的支持RTOS对于C的支持偏弱而且靠近终端的嵌入式系统也不大会去部署C的程序。所以在RTOS上实现节点系统会稍微麻烦一点需要在底层封装信号与槽的基础结构以及基于C的OOP设计方法。根据实际实现的效果用结构体可以完成节点系统的封装以及信号与槽的实现。不过信号与槽之间的仲裁需要内置在节点内这个需要内置模板去提高设计效率。System VerilogSV对于OOP的支持较高但是那个是用于仿真的在RTL设计中interface在一定程度上替代了class的作用。目前实测可以用interface实现类似C的OPP效果然后配置自带的输入输出的效果就可以完成节点系统的部署。与PS设计不同PL天然的并行性对于节点系统的开发是简化了的。这里PL由于全部作为通用的bit数据处理所以可以使用兼容性更广的总线完成节点模型的灵活性的提高。节点模型的标准化从上章可以看出节点在不同的嵌入式系统中实现的方法差异都比较大要想实现标准化的输出则需要在基本的节点要求下增加一些设计的约束以保证每个节点系统实现的框架基本一致。节点子系统subsystem一般的嵌入式系统都包含很多基础的子系统比如升级和存储等。所以节点模型一般作为节点子系统加入设计负责应用层的功能统一开发。将节点划分为子系统可以和一些其他的子系统完成并行存在可以更好满足嵌入式系统的功能需求。节点模块mdle节点模块就是节点的集合将节点进行分类开发主要目标是提高节点的继承性和标准性。对于支持OOP的程序构建一个基类节点去实现特定类型的节点需求是合理的。这个实际设计中也具备较高的价值QtNode这类可视化节点则强制要求每个节点模块都包含一个基类。节点对象node完成节点定义的类或者类似的语法结构主要是节点的所有功能都封装为节点对象以及输入输出。这个也是节点开发拓展的基础单元其他的模块都需要围绕这个对象进行展开。总线定义interface输入输出的标准化单元可以完成节点输入输出的兼容性保证。一般是由统一的数据结构加上数据结构的解析方法构成可以体现节点之间是否可以相互连接的关系是节点标准化处理的关键。总结说明本文主要是描述节点模型的定义以及部署的方法为后续的实战总结做好准备。节点模型是后面所有设计的方法学基本上所有的设计都会用这个方法学进行展开所以将这篇文章作为嵌入式设计的第二篇。后续如果在设计中有了对于节点模型新的感悟会多节点模型的方法进行进一步补充本次主要是对现有设计的方法进行总结以保证可以按照这个模型的方法进行新的功能开发。
返回列表