沦为一个月的嵌入式研发工程师。它是一个艰难的过程,必须开发人员确保和管理系统的每个比特和字节。从规范完备的开发周期到严格执行和系统检查,研发高可靠性嵌入式系统的技术有许多种。
今天给大家讲解7个易操作者且可以持久用于的技巧,它们对于保证系统更为可信地运营并捕捉出现异常不道德大有协助。技巧1——用未知值填满ROM软件开发人员往往都是十分悲观的一群人,只要让他们的代码心目中地长时间地运营就可以了,仅此而已。
微控制器跑出应用程序空间并在非预期的代码空间中继续执行这种情况或许是非常鲜有的。然而,这种情况再次发生的机会远比内存阻塞或错误指针丧失提到较少。它显然不会再次发生!再次发生这种情况后的系统不道德将是不确认的,因为配置文件情况下内存空间都是0xFF,或者由于内存区一般来说没写出过,其中的值有可能只有上帝才告诉。
不过有非常完善的linker或IDE技巧可以用来协助辨识这样的事件并借此完全恢复系统。技巧就是用于FILL命令对加有ROM填满未知的位模式。
要填满并未用于的内存,有很多有所不同的有可能人组可以用于,但如果是想要创建更为可信的系统,最显著的自由选择是在这些方位摆放ISRfaulthandler。如果系统出有了某些差错,处理器开始执行程序空间以外的代码,就不会启动时ISR,并在要求校正行动之前获取储存处理器、寄存器和系统状态的机会。技巧2——检查应用程序的CRC对嵌入式工程师来说一个相当大的益处是,我们的IDE和工具链可以自动产生应用程序或内存空间校验和(Checksum),从而根据这个校验和检验应用程序否完好无损。
有意思的是,在许多这些案例中,只有在将程序代码读取到设备时,才不会中用校验和。然而,如果CRC或校验和维持在内存中,那么检验应用程序在启动时(或甚至对长时间运营的系统定期检验)否依然完好无损是保证车祸之事会再次发生的极佳途径。
现在一个编程过的应用程序再次发生转变的概率是较小的,但考虑到每年交付给的数十亿个微控制器以及有可能险恶的工作环境,应用程序瓦解的机会并不是零。更加有可能的是,系统中的一个缺失有可能造成某一扇区再次发生存储器载入或存储器读取,从而毁坏应用程序的完整性。
技巧3——在启动时继续执行RAM检查为了创建一个更为可信和坚实的系统,保证系统硬件长时间工作十分最重要。却是硬件不会再次发生故障。(幸运地的是软件总有一天会再次发生故障,软件只不会做到代码要它做到的事,不管是准确的还是错误的)。
在启动时检验RAM的内部或外部没问题,是保证硬件可以如预期般运作的一个好方法。有许多有所不同的方法可用作继续执行RAM检查,但常用的方法是载入一个未知的模式,然后等上部分段时间再行回读。
结果应当是所读就是所写出。真凶是,在大多数情况下RAM检查是通过的,这也是我们想的结果。但也有大于的可能性检查不通过,这时就为系统标示出硬件问题获取了极佳的机会。技巧4——用于堆栈监视器对许多的嵌入式开发者而言,堆栈或许是一股非常谜样的力量。
当怪异的事情开始再次发生,工程师再一被难倒了,他们开始思维,或许堆栈中再次发生了什么事。结果是盲目地调整堆栈的大小和方位等等。但该错误往往是与堆栈牵涉到的,但怎能如此确认?却是,有多少工程师知道实际继续执行过最坏情况下的堆栈大小分析?堆栈大小是在编译器时就静态分配好的,但堆栈是以动态的方式用于的。随着代码的继续执行,应用程序必须的变量、回到的地址和其它信息被大大存储在堆栈中。
这种机制造成堆栈在其分配的内存中大大快速增长。然而,这种快速增长有时不会远超过编译器时确认的容量无限大,造成堆栈毁坏邻接内存区域的数据。
意味著保证堆栈长时间工作的一种方法是构建堆栈监视器,将它作为系统“保健”代码的一部分(有多少工程师不会这样做到?)。堆栈监视器不会在堆栈和“其它”内存区域之间创立一个缓冲器区域,并填满未知的位模式。然后监视器不会大大的监控图案否有任何变化。如果该位模式再次发生了转变,那就意味著堆栈快速增长得过于大了,将要要把系统推上黑暗地狱!此时监视器可以记录事件的再次发生、系统状态以及任何其它简单的数据,可供日后用作问题的临床。
大多数实时操作系统(RTOS)或构建了内存保护单元(MPU)的微控制器系统中都获取有堆栈监视器。可怕的是,这些功能配置文件都是重开状态,或者常常被开发人员无意重开。在网络上较慢搜索一下可以找到,很多人建议重开实时操作系统中的堆栈监视器以节省56字节的存储器空间等等,这可是得不偿失的作法!。
本文关键词:BB贝博ballbet,贝博betball体育app下载,贝博ball登录入口艾弗森,BB贝博艾弗森官方网站
本文来源:BB贝博ballbet-www.bbooom.com