为验证烧录进去的数据是否正确,我们一般有两种方式: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 计算来带来加速优势。
-
存储器
+关注
关注
38文章
7420浏览量
163482 -
内存
+关注
关注
8文章
2959浏览量
73789 -
程序
+关注
关注
116文章
3753浏览量
80720 -
命令
+关注
关注
5文章
672浏览量
21961 -
烧录
+关注
关注
8文章
251浏览量
35492
发布评论请先 登录
相关推荐
评论