大家好,我是bug菌~大家应该都经常听到“什么要提升认知”、“人只能赚到个人认知以内的money”等等。认知其实就是当你获取、处理和理解信息的心理过程,包括感知、记忆、思考和决策等,其实做技术一样的也有对技术认知。当面对一个设计、一个bug,会从哪些维度去思考,准备怎样去处理,一些工程师立马就会进去无尽的debug and step,而有些工程师却能不慌不忙的用一些“偏门的”调试技巧和方法就能分析个大概,然后稍加调试就能直击问题的要害,又或者构建的系统中原本就有这种方法,他知道而你却不知道。那在嵌入式软件开发过程中一般会面临哪些技术方面的认知瓶颈呢?1、软件系统复杂性管理系统功能越来越多,软件越来越大,如何有效管理和组织复杂的软件架构成为开发中的一大挑战,如今很多工程师常常只是负责自己那一小部分功能,核心算法功能实现估计都看不到,难以掌控系统的整体结构。2、实时性工业嵌入式系统通常需要满足严格的实时性要求,理解和深入不同实时操作系统的不同模式下的调度策略,以及给自己的任务进行最优的优先级管理是一个难点。3、资源受限嵌入式设备通常只有有限的计算能力和内存,需要在效率和资源使用之间找到平衡,压榨硬件,节省成本,这对设计和优化提出了较高的要求。4、硬件平台抽象化(嵌入式的跨平台)这里并不谈linux与windows所谓的应用程序的跨平台,而是不同硬件平台和架构之间的抽象与统一,否则会导致代码重用性低和维护成本高。5、安全性随着物联网的发展,嵌入式系统面临着越来越多的安全威胁,如何设计安全可靠的系统仍然是一个重大挑战,还有固件会不会被恶意提取,反编译等问题都是一个成功产品需要考量的。6、运行稳定与可靠性24h、72h稳定运行工况,掉电不损坏系统,各异常能够正常捕捉与上报,都成为优秀系统设计中的一大考量点。 7、软件更新与维护嵌入式设备如果在生产后难以进行远程更新,那肯定是一大设计败笔,如何设计便于后期维护和更新的系统架构是一个挑战。8、调试调试工具的熟练度和丰富度,不同的问题和现象采用不一样的调试手段和技巧。9、测试自动化尽管测试对确保软件质量至关重要,但许多嵌入式系统尚未完全实现测试自动化,增加了人工测试的负担。