2019年春节档有一部黑马电影《流浪地球》,我个人很喜欢。这部电影中有一个悲伤的情节,因为地震杭州被岩浆吞没了。网络上有人调侃,杭州没了,花呗还要还吗?大家也就是搞笑,没想到支付宝官方竟然也跑来凑热闹,告诉大家支付宝三地五中心备份,杭州没了,花呗依然要还。
杭州没了,花呗依然要还,这或许就是分布式模型的魅力。类似这样的模型很多,如著名的比特币分布式网络,面临世界各国政府的轮番制裁,依然稳定运行了十多年,无一秒宕机。回到我们的嵌入式系统,这样的分布式模型对我们会有哪些启发呢?
在真实世界中,大家还是喜欢集中模型,不仅简单,也符合我们的思维习惯。但习惯并不一定总是正确的,很多现实世界的困惑,让我们颇为头疼,如:
- 设备参数太多,解析耗时,导致初始化启动缓慢。
- 用户对开入开出数量的要求越来越多,但IO引脚受CPU限制。
- 计算量越来越大,CPU快爆了。
- 各板件连接不仅成本高,而且易出现接触问题。
- ……
现实世界的诸多困惑,能否从分布式那儿借鉴一定有价值的设计理念呢?
◇◇◇
随着需求的增加,各软件模块都需要相应的参数配置,这也导致了设备中参数文件越来越多。参数文件过多会导致解析耗时,flash组织困难,解析过程中可能需要占用大量珍贵的ram资源等,有没有更好的策略呢?
如果我们仔细思量,会发现参数文件解析这个过程仅在装置上电初始化时运行,那么是否可以将这部分功能分布到其他地方呢?
我在跨国公司做产品研发时,接触到了一个全新的概念——配置软件。在前面的文章中我已经多次提及,配置软件是解决基于平台化研发时各装置差异的一个重要着力点,会依据不同的设备生成相应的参数文件,如果能再往前进一步,将参数文件的解析过程分布到配置软件部分,将会带来意想不到的惊喜。
配置软件会带给我们很多惊喜:
- 参数文件过多,且每个文件大小不确定,会给flash组织增加很多困难。通过配置软件,可以将这些参数文件捏合起来,甚至将程序、现场配置,解析后参数等全部捏合在一起,不仅大幅度节省了flash资源,也方便现场工程维护和程序升级。
- 通过配置软件,可以将参数文件解析为CPU执行时需要的样子,这需要考虑cpu诸多硬件特性,如字节顺序、对齐等。此时,参数文件的解析过程会内化为指针映射过程,可以大幅度提升解析过程。现场工程维护时,我们的产品上电经常是一瞬而过,而其他友商的产品还在蜗牛爬,经常给用户很大的震撼。
- 参数文件中有很大一部分内容是只读信息,基于预解析的参数结构,只读信息可以直接映射到flash空间。这一策略可以大幅度节约ram资源,在工业嵌入式系统中,ram资源一般是紧缺资源。