{"id":154504,"date":"2024-10-22T16:56:37","date_gmt":"2024-10-22T08:56:37","guid":{"rendered":"https:\/\/www.opteeq.com\/en\/?p=154504"},"modified":"2024-10-22T16:57:29","modified_gmt":"2024-10-22T08:57:29","slug":"expert-discussion%e4%b8%a8how-to-ensure-the-accuracy-and-integrity-of-the-programmed-data","status":"publish","type":"post","link":"https:\/\/www.opteeq.com\/en\/news\/expert-discussion%e4%b8%a8how-to-ensure-the-accuracy-and-integrity-of-the-programmed-data\/","title":{"rendered":"Expert Discussion\u4e28How to ensure the accuracy and integrity of the programmed data?"},"content":{"rendered":"\n<div class=\"wp-block-themepark-block-themepark-wright content-super-p\" style=\"font-size:16px;line-height:28px;color:#666666;background-color:#ffffff;padding:10px 15px;\"><h3 class=\"content-super-p-title\" style=\"font-size:27px;color:#ffffff;background-color:#24b6b1;padding:10px 5px;\"><i class=\"fas fa-bullhorn\"><\/i>\uff1aHow to ensure the accuracy and integrity of the programmed data?<\/h3>\n<div class=\"wp-block-column\">\n<p><\/p>\n\n\n\n<p style=\"font-size:18px\">The most basic and important function of a programmer is to <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">program data (source file) correctly and completely into the chip<\/mark>. But how do we understand the so-called &#8216;correctness and completeness&#8217;? It is generally believed that the simplest and &#8216;rough&#8217; method is to read back the programmed data and compare it with the source file (verification). If they are &#8216;consistent&#8217;, it is considered that the programming process is correct and complete, and if they are &#8216;inconsistent&#8217;, it is considered that there is a problem with the programmer. However, things are far from that simple, and we should not understand &#8216;correctness and completeness&#8217; so simply.<\/p>\n\n\n\n<p class=\"has-monte-grey-color has-text-color\" style=\"font-size:18px\"><strong>In order to discuss this issue, let us first clarify the following definitions:<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-black-color has-text-color has-medium-font-size\">Definition of source files, programming files and reading files<\/h2>\n\n\n\n<p class=\"has-monte-grey-color has-text-color\"><strong>1.Source Files<\/strong><\/p>\n\n\n\n<p>The source file is usually generated by the customer using a compiler, and the file formats include <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">HEX, BIN, S19, ocfg<\/mark>, etc. The data of the source file needs to be programmed into the chip.<\/p>\n\n\n\n<p class=\"has-monte-grey-color has-text-color\"><strong>2.Programming Files<\/strong><\/p>\n\n\n\n<p>The OPTEEQ programmer (taking SG400 as an example) will first convert the &#8216;source file&#8217; into a &#8216;programming project file&#8217; (<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">suffix .opj<\/mark>) through the accompanying &#8216;programming management software&#8217;. This &#8216;programming project file&#8217; is composed of a &#8216;programming file&#8217; (<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">bin file format<\/mark>) with <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">a suffix of .opd<\/mark> and a &#8216;configuration file&#8217; with <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">a suffix of .sct<\/mark>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file-1024x558.jpg\" alt=\"\" class=\"wp-image-154505\" srcset=\"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file-1024x558.jpg 1024w, https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file-300x163.jpg 300w, https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file-768x418.jpg 768w, https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file-600x327.jpg 600w, https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/programming-file.jpg 1131w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"has-monte-grey-color has-text-color\"><strong>3.Reading Files<\/strong><\/p>\n\n\n\n<p>Reading file refers to the file generated after the chip is read by the programmer after the programming is completed.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-themecolor-2-color has-text-color has-normal-font-size\">*The following figure helps you understand the definitions of the three files above:<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"533\" height=\"541\" src=\"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/\u7406\u89e3\u5b9a\u4e49.jpg\" alt=\"\" class=\"wp-image-154506\" srcset=\"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/\u7406\u89e3\u5b9a\u4e49.jpg 533w, https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/\u7406\u89e3\u5b9a\u4e49-296x300.jpg 296w\" sizes=\"auto, (max-width: 533px) 100vw, 533px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-black-color has-text-color has-medium-font-size\">The content of the reading file is inconsistent with the source file or the programming file?<\/h2>\n\n\n\n<p class=\"has-text-align-center\">Customers often read the chip content after programming and compare the read content with the source file to determine whether the programmed content is correct. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">Usually this method is effective, but in some cases, although the programming process is correct and complete, the content of the read file is inconsistent with the source file or the programmed file.<\/mark><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-monte-grey-color has-text-color\">The inconsistency between the &#8216;source file&#8217; and the &#8216;programming file&#8217; may be caused by the following reasons:<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">&#8216;Source file&#8217; consists of multiple files<\/mark><\/li>\n<\/ul>\n\n\n\n<p>Sometimes, a &#8216;source file&#8217; is composed of multiple files. When creating a project, the OPTEEQ programming management software will merge multiple source files into one &#8216;programming file&#8217;. During the merging process, <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">if the file content overlaps<\/mark> (multiple source files contain the same address) or the address exceeds the chip&#8217;s available address range, data inconsistency may occur.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">Inconsistent filling data<\/mark><\/li>\n<\/ul>\n\n\n\n<p>During the merging process, some area data (according to the chip manual requirements) will be filled with 0x00 or 0xFF. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">When some chips do not specify the filling format<\/mark>, the &#8216;source file&#8217; and &#8216;programming file&#8217; may be inconsistent due to different filling values.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-black-color\">There is an irreversible scenario<\/mark><\/li>\n<\/ul>\n\n\n\n<p>The process of converting &#8216;source file&#8217; to &#8216;programming file&#8217; may cause irreversible situations, such as<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\"> virtual address<\/mark>, <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">data overlap<\/mark>, <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">data beyond the chip range<\/mark>, etc.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-monte-grey-color has-text-color\">The inconsistency between &#8216;programming file&#8217; and &#8216;reading file&#8217; may be caused by the following reasons:<\/h2>\n\n\n\n<p>1.Dynamic data (such as serial number, etc.) is added during the programming process;<\/p>\n\n\n\n<p>2.There are special areas in the chip (such as HSM area);<\/p>\n\n\n\n<p>3.There are special registers in the chip;<\/p>\n\n\n\n<p>4.<mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">After the chip is programmed, it will automatically run the program that was just programmed in after it is powered on again.<\/mark> This program is likely to modify the data in the storage unit. If you read the contents of the chip at this time, the read contents may not be consistent with the &#8216;programmed file&#8217;.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<p class=\"has-text-align-center has-themecolor-2-color has-text-color\" style=\"font-size:20px\"><strong>Therefore, even if there is no problem with the programming process, the &#8216;source file&#8217;, &#8216;programming file&#8217; and &#8216;reading file&#8217; are often inconsistent. So, how to verify the &#8216;correctness and integrity&#8217; of the programming process?<\/strong><\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-monte-grey-color has-text-color\">There are generally three ways to verify programming<\/h2>\n\n\n\n<div class=\"wp-block-buttons has-custom-font-size has-normal-font-size\">\n<div class=\"wp-block-button has-custom-width wp-block-button__width-25 is-style-outline is-style-outline--1\"><a class=\"wp-block-button__link has-monte-grey-color has-text-color wp-element-button\"><strong>1.Checksum <\/strong><\/a><\/div>\n\n\n\n<div class=\"wp-block-button has-custom-width wp-block-button__width-25 is-style-outline is-style-outline--2\"><a class=\"wp-block-button__link has-monte-grey-color has-text-color has-background wp-element-button\" style=\"background-color:#feffff\"><strong>2.CRC<\/strong><\/a><\/div>\n\n\n\n<div class=\"wp-block-button has-custom-width wp-block-button__width-25 is-style-outline is-style-outline--3\"><a class=\"wp-block-button__link has-monte-grey-color has-text-color has-text-align-center wp-element-button\"><strong>3.Read-back Check<\/strong><\/a><\/div>\n<\/div>\n\n\n\n<h2 class=\"wp-block-heading has-monte-grey-color has-text-color\">Checksum &amp; CRC<\/h2>\n\n\n\n<p>Both Checksum and CRC are calculated by the chip <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">after programming<\/mark> and put into a fixed register. The programmer &#8216;grabs&#8217; this check value and compares it with the check value of the &#8216;programming file&#8217; to determine whether the programmed data is correct. These two verification methods are highly reliable, with an error rate of almost 0.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img decoding=\"async\" src=\"http:\/\/www.opteeq.com\/wp-content\/uploads\/2024\/10\/942105137.png\" alt=\"\" class=\"wp-image-154594\"\/><\/figure>\n\n\n\n<p class=\"has-themecolor-1-color has-text-color\">**We also added the CRC value of the source file in the project to facilitate tracking<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-monte-grey-color has-text-color\">Read-back Check<\/h2>\n\n\n\n<p>If you want to ensure that the data is completely consistent, you can choose read-back check: read the data in the chip storage unit <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">during the programming process (not after the programming is completed)<\/mark> and then compare it with the data in the &#8216;programming file&#8217; one by one. <mark style=\"background-color:rgba(0, 0, 0, 0)\" class=\"has-inline-color has-vivid-cyan-blue-color\">We believe that this method has the highest reliability. <\/mark>However, the disadvantage of read-back check is that the entire programming process will take a lot longer. Because compared with the two steps of &#8216;erasing&#8217; and &#8216;programming&#8217;, the &#8216;reading&#8217; operation is the slowest.<\/p>\n\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center has-black-color has-text-color has-medium-font-size\">Summary<\/h2>\n\n\n\n<p>Finally, let me share our experience: 1. Most customers will choose Checksum or CRC, because on the one hand, the verification efficiency is high, and on the other hand, there are functional tests and other links behind the production line to verify the integrity and correctness of the programming. 2. In most cases, customers reported that incorrect programming caused the circuit board to malfunction. After investigation, many reasons pointed to problems with the \u2018source file\u2019 itself (such as using the old version of the source file, or the source file of other products). Therefore, using MES systems to strengthen the control of source files can effectively avoid such misjudgments.<\/p>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":64,"featured_media":154508,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"themepark_post_bcolor":"#f5f5f5","themepark_post_width":"1022px","themepark_post_img":"","themepark_post_img_po":"left","themepark_post_img_re":false,"themepark_post_img_cover":false,"themepark_post_img_fixed":false,"themepark_post_hide_title":false,"themepark_post_main_b":"","themepark_post_main_p":100,"themepark_paddingblock":false,"footnotes":""},"categories":[22],"tags":[],"class_list":["post-154504","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-news"],"metadata":{"_edit_lock":["1729587451:64"],"views":["104"],"_edit_last":["64"],"catce":["sidebar-widgets4"],"_thumbnail_id":["154508"]},"medium_url":"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/ensure-300x128.jpg","thumbnail_url":"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/ensure-150x150.jpg","full_url":"https:\/\/www.opteeq.com\/en\/wp-content\/uploads\/sites\/2\/2024\/10\/ensure.jpg","_links":{"self":[{"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/posts\/154504","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/users\/64"}],"replies":[{"embeddable":true,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/comments?post=154504"}],"version-history":[{"count":1,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/posts\/154504\/revisions"}],"predecessor-version":[{"id":154507,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/posts\/154504\/revisions\/154507"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/media\/154508"}],"wp:attachment":[{"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/media?parent=154504"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/categories?post=154504"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.opteeq.com\/en\/wp-json\/wp\/v2\/tags?post=154504"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}