24小时联系电话:18217114652、13661815404
中文
技术专题
智能自检流程可优化嵌入式系统的加电
智能自检流程可优化嵌入式系统的加电
为什么加电自检很重要
在典型的嵌入式系统中,微控制器连接到PCB上的各种组件。它依靠内存芯片来存储关键参数或历史记录。参数的每一位都可能影响功能算法的结果。
使工业设备自动化的嵌入式系统还依靠输入来激活某些阀门或电动机。在大多数情况下,输入是从连接到PCB的传感器获得的模拟信号。确保系统加电时传感器正常运行是很重要的。
随着世界拥抱物联网,嵌入式系统可以通过更广泛的技术相互通信。无论使用哪种接口,传统活动(如基本握手协议或简单的状态检查)对于确保系统以正确的方式通电仍然至关重要。
当然,有人会争辩说,可靠的固件将确保在执行算法之前评估正确的输入或参数。那么,为什么还要进行一系列的自检呢?
对系统故障采取行动的最佳时间是在加电期间。
在大多数应用中,嵌入式系统由设备附近的技术人员供电。与在执行某些逻辑之前发现的异常相比,启动期间发现的任何异常都可以立即采取行动,这可能需要几天或几周的时间。
除此之外,由于电源故障而中断的嵌入式系统可能没有机会完成其最后的操作。他们可能在断电之前已部分存储了交易记录。在某些情况下,在电源恢复后,嵌入式系统根本就没有准备好应对这种情况。
有用的嵌入式系统自检程序
就像嵌入式系统的设计可能有所不同一样,所需的自检程序也可能有所不同。根据我在开发用于商业和工业应用的嵌入式系统方面的经验,以下是一些在加电期间要执行的最自检:
1.内存检查
嵌入式系统通常将参数或历史日志存储在闪存,铁磁随机存取存储器(FRAM)和静态随机存取存储器(SRAM)等存储器中。这些存储芯片通常通过内部集成电路(I2C)或串行外围接口(SPI)协议连接到微控制器。
执行读取命令时SPI的问题在于,即使相应的存储芯片出现故障,您也可能会收到无效的0xFF十六进制值。这可能导致微控制器执行错误的算法。
因此,请谨慎确保在启动过程中PCB中使用的每个存储芯片都可以正常工作。例如,在FRAM和SRAM中分配一个虚拟字节以比较“读”和“写”值或从闪存中检索设备ID。
通过快速自检,确保所有内存芯片在启动过程中均正常运行。
2.数据库检查
在历史记录对应用程序至关重要的嵌入式系统中,确保电源恢复后存储任何记录之前数据库处于良好状态是一种很好的做法。与软件应用程序中的SQL副本相比,嵌入式系统中的数据库相当原始。
嵌入式系统数据库通常是自定义构建的,并且可能存在潜在的漏洞,无法通过测试。需要对记录指针进行基本检查,以确保它们在其指定的扇区内。这样可以防止由于覆盖不同数据类型之间的扇区而导致数据库损坏。
3.输入检查
用于工业自动化的嵌入式系统在很大程度上依赖于数字和模拟输入来执行相关功能。对于微控制器,在启动主算法之前,请确保连接安全开关的数字输入端提供正确的值,这是一个好习惯。
在使用4-20 mA模拟传感器的应用中,微控制器可以快速检查传感器是否正确连接。等效模拟值小于4 mA表示传感器有故障,应立即警告技术人员。
4.通讯检查
在某些情况下,嵌入式系统通过有线或无线通信连接到其他设备。让微控制器在这些设备上启动状态检查是在系统开始运行之前识别任何故障设备的好方法。
虽然我们乐观地期望第三方设备是完美的,但我的经验证明了事实并非如此。我有一些有时会拒绝正确启动的工业条码打印机。通过在启动过程中进行的快速调查,我可以确保立即解决所有紧迫的问题,并且不会有生气的客户在我的脖子上喘不过气来。