如何验证烧录的数据是否正确

描述

为验证烧录进去的数据是否正确,我们一般有两种方式:checksum和readout。下面我们以Flashrunner2.0为例,来讲讲两者的区别。

为了缩短烧录时间,使用checksum代替readout很有用。因为readout通常比checksum慢。发生这种情况是因为readout会检查所有编程的存储器,将它从存储器中读取的值与frb中存在的相应值进行比较。readout的工作方式非常简单,从目标存储器中读取一个或多个字节,并将它们与frb中的相应值进行比较。显然,这种类型的验证非常准确,因为它逐个比较了所有已注册的值。如前所述,readout会逐字节进行比较,因此,如果它没有返回错误,则意味着编程已正确完成,没有出错的可能性。

存储器

checksum会向目标设备发送命令,目标设备会计算特定内存部分的校验和。在执行此操作的同时,FlashRunner 2.0 使用 frb 中的值计算该内存位置中预期值的校验和。此时,当两者都完成计算时,将对两个校验和进行比较。如果它们对应,则 FlashRunner 2.0 将继续执行下一个内存部分,直到完成。请注意,checksum作为验证读出命令是不安全的,因为它是基于内存区域计算结果的。因此,如果内存中存在不正确的值,则 FlashRunner 2.0 和设备计算的校验和是不同的,这会导致验证校验和返回错误并中断脚本的执行。

存储器

Cheksum在我们的驱动程序中广泛存在。但在某些情况下可能无用。校验和需要一个实际执行计算的 CPU,因此内存会自动排除。从 FlashRunner 2.0 读取执行目标计算将导致与验证读出方法相同的执行时间。

微控制器还必须在引导加载程序的特定函数中包含启动此计算的可能性。这将通过与目标设备内存计算并行进行 frb 计算来带来加速优势。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分