上海昆山网站公司哪家好,产品设计软件有哪些软件,中国网站建设网,seo服务工程背景 产品研发和项目研发有什么区别#xff1f;一个令人发指的问题#xff0c;刚开始工作时项目开发居多#xff0c;认为项目开发和产品开发区别不大#xff0c;待后来随着自身能力的提升#xff0c;逐步感到要开发一个好产品还是比较难的#xff0c;我认为项目开发的目的…背景 产品研发和项目研发有什么区别一个令人发指的问题刚开始工作时项目开发居多认为项目开发和产品开发区别不大待后来随着自身能力的提升逐步感到要开发一个好产品还是比较难的我认为项目开发的目的是满足项目需求只要满足了需求就达到了目的。产品开发就不太一样产品开发更像是终身制的项目要解决随时在不同项目中使用时出现的问题也要能满足不同应用场景下的使用。 嵌入式软件基本分为了两个流派从技术层面来讲一个是基于MCU来开发的一个是基于MPU来开发的当年我有很多同事都不理解你一个搞MCU的开发个产品有什么难的还一个团队十来个人搞这么长时间有这种想法的人一般都是搞项目开发的高手不管是基于MCU还是基于MPU只要是开发产品都不是个很简单的事情。 早些年都是基于MCU来开发产品资源有限处理能力有限经常会有很多需求无法实现或者实现起来太麻烦没法站在开源的巨人肩膀上走的更远。正好在搞项目开发时公司提出来一个看似不太明确的产品需求却有明确的项目交期在这种情况下只能用最保险的方式最大的扩展方式来实现产品的开发。
需求
宽电压供电DC9~35V支持两路百兆以太网支持4G/5G/Wifi通讯可外接北斗2/3进行卫星通讯支持LoRa本地组网支持继电器控制/数字量采集/CAN总线/RS232总线/RS485总线支持MQTT标准协议支持Onenet阿里云等物联网平台支持外接TF卡支持网络摄像头
技术难点
最大的难点是需求不明确不清楚使用场景宽电压范围这个还好说国产电源芯片可以满足基于新唐的NUC980来实现内置DDR减少了硬件工程师的一个风险官方提供Linux 4.4的内核基于Linux系统这些外设的驱动实现也是个问题好在疫情期间跟原厂的工程师建立了微信群全部协调解决了软件的扩展性在这里很重要用它来应对多变的需求。 设计时没有急于开工首先通过分析来将功能进行了划分拆分架构时参考了冯·诺依曼架构是现代计算机的基础的理论对设备采集数据处理数据存储数据上传数据等进行类拆分。再加上一些现在开发软件时微服务的概念将设备内部分成了多个小程序然后利用TCP协议在设备内部进行交互。 大体功能模块的划分如下
Linux系统为各个小程序的执行提供运行基础采集程序负责前端传感器数据采集支持周期性采集触发采集数据处理程序负责将采集到数据转化为标准数据协议处理程序负责将上下行的数据解析处理并周期性打包数据上传接收服务的下行指令的解析处理中心调度程序负责将各个子任务的数据进行转发监控各个子任务的执行情况并负责维护各个子任务的执行状态数据管理程序负责启用数据库将历史数据存入数据库并对其它程序提供数据查询服务通讯程序负责建立对应的通讯链路并维护链路的链接配置程序负责对外提供web页面用户可通过web页面对系统的参数应用程序的参数等进行配置并对运行过程的数据进行查看 内部的小程序之间通讯都是基于TCP进行的设备可以实现集群部署可以单台设备实现其中的部分功能来增加整个系统的性能。 产品对外接口有各种灵活性具体配置如下 产品内置web服务器配置界面如下所示 配置界面如下所示 内部应用程序如下图所示
关于架构层面的设计以后慢慢逐步展开。