á áąáŹáááŻááťá¸ááŹá
ááťá˝ááşáŻááşáááŻáˇááááŻááşáááŻááşááŽáááŻááşá¸ááźááˇáş ááąáŹááşá¸ááťáááˇáşá ááşááťáŹá¸áážááááşá áĄáá˝ááşá¸áá˝ááş Raspberry Pi áážááˇáş ááŽá¸ááźáŹá¸ááŻááşáá áşááŻááąáŤáşáá˝ááş ááźááŻá¸áĄááťááŻáˇááŤáážááááşá áĄááźá˝áąá áąáˇáááşááśáá°á ááąááşáááşááśáá°á áááşááááşáá áşáᯠááťáááşáááşááŹá¸áááş... áĄááŹáĄáŹá¸ááŻáśá¸ááᯠáááŻááşáááŻááşááąá¸ááŹá¸ááąáŹ ááááŻááááşááźááˇáş ááááşá¸ááťáŻááşááŹá¸áááşá áĄááŻááşáááááŻááşá¸áá áşááŻááŻáśá¸ááᯠflash drive (MicroSD) áá˝ááş ááťáŹáááşáá˝ááşááąá¸ááŹá¸ááźáŽá¸ áááşá¸áááŻááąááŹááąáˇá áşáá áşááŻáá˝ááşááááşá¸áááşá¸ááŹá¸áááˇáşááŹááŹáááŻáˇáĄááşááŹáááş (USB modem áááŻáĄááŻáśá¸ááźáŻá) áážááááˇáşááąá¸áááŻáˇáááşá áĄááąáŹááşá¸áĄááťááşáĄáááşááᯠ1C áá˝ááş áááşááŹá¸ááźáŽá¸á á áąáŹááˇáşááźááˇáşáááşáĄáá˝ááş áááŻá¸áážááşá¸ááąáŹ áááşáĄááşááŹááąáˇá áşáá áşááŻáááşá¸ áážáááŤáááşá
áááŻáááŻáááşáážáŹá ááťáŹáááşáááş á áŹáááşá¸áááŻááş (áááşáá˝áąá áĄááąáŹááşá¸á áááş) áĄáá˝ááş áĄááąá¸ááźáŽá¸áááş - á áąáŹááˇáşááźááˇáşááźááşá¸ (ááťáážáŻáśá¸áážáŻ áĄááťááŻá¸ááťááŻá¸áážááˇáş áĄááźáŹá¸ááąáŹ ááźááşá¸áááşááąáŹ áĄááźáąáĄááąááťáŹá¸)á ááŤá ááŽá ááşáá˛áˇáááşáááşáá˛áˇ áĄááťááşáĄáááşáĄáŹá¸ááŻáśá¸áááŻáˇ ááźáąáŹáááŻáˇááááşá
ááźáżááŹ
Flash drives ááťáŹá¸áááş áĄáá˝ááşááŻáśááźááşá áááşááťáááąáŹ á ááşáá ášá ááşá¸ááťáŹá¸ááźá áşááźáąáŹááşá¸ áááşááąááźááŤáááşá áááŹáááŻáá˝ááş áážááşáážááşááźááˇáş ááźááŻáá˝ááşá¸ááźáááşá áááşá¸áááş á ááşáááşááąááťáááşáážááˇáş (áĄááźáąáŹááşá¸áá áşááŻááŻááźáąáŹááˇáş áážááşáááşá¸ááᯠáĄá˝ááşáááŻááşá¸áááŻáˇ ááá˝ážá˛ááźáąáŹááşá¸áááŻááşáá˛áˇááŤá) ááąáᏠááŻáśá¸áážáŻáśá¸áá˝áŹá¸á áąáááşá
áááşá¸áááş flash drives ááťáŹá¸áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááááááŻáśá¸áĄáá˝áąáˇáĄááźáŻáśáááŻááşááąá¸ááŽá ááťáŹáááşááᯠUSB flash drive ááťáŹá¸áá˝ááşááááşá¸áááşá¸ááŹá¸áááˇáşááááááŹáá áşááŹááťáąáŹáşáážááááˇáşááąáŹááşáááşáááąáŹááťááşáá áşááŻáážááá˛áˇááąáŹáşáááşá¸á ááŻáśááźááşá áááşááťááážáŻáááŻááşááŹááźáżááŹááťáŹá¸áááşá¸áážááá˛áˇááźáŽá¸ áá áşááŤáá áşááśáá˝ááş áá áşáááťážááş ááĄáąáŹááşááźááşááąáŹá ááşáá ášá ááşá¸áĄááąáĄáá˝ááşáááş áááşááááşá¸áĄáááážááá˛áˇáááşá SLC áááşáááŻááŽááŤáááˇáş áĄáážááşááśááááşááŤáážááááˇáş ááśááááşááťáŹá¸áĄááŤáĄáááş ááá°ááŽááąáŹ flash drive ááťáŹá¸ááᯠááťá˝ááşáŻááşáááŻáˇ á ááşá¸áááşáá˛áˇááźáŽá¸ áĄááťááŻáˇááąáŹ ááąáŹáşáááşááťáŹá¸áááş áĄááźáŹá¸áá°ááťáŹá¸áááş áááŻáááŻá áááşááťáááąáŹáşáááşá¸ flash drive ááťáŹá¸ááᯠáĄá áŹá¸áááŻá¸ááźááşá¸áááş ááźáżááŹááᯠááźáŽá¸ááŹá¸á á˝áŹ áááźáąáážááşá¸áááŻááşáá˛áˇááŤá
áááááąá¸ááźááşá¸! áĄáážááşááźáŽá¸! "ááŹááźáąáŹááˇáşáá˛" ááᯠá áááşááááşá áŹá¸áááş "áááşáááŻ" áá˛áˇáᏠáááˇáşáááˇáşáá˝áŹá¸áááŻááşááŤáááşá ááąáŹááşá¸ááŤá¸á
ááŻáśá¸ááźááşááťááş
áááááŻáśá¸ ááááááááŹáááąáŹáˇ MicroSD ááᯠá á˝ááˇáşáá˝ážááşááźáŽá¸ áĽáááŹá SSD áá áşááŻááᯠáááˇáşáá˝ááşá¸ááźáŽá¸ áááşá¸áááą á áááşáááŻááşááŤá ááŽáĄááŻááŽáĄáááźá áşááąáŹááşá¸ááźá áşáááŻááşááąáŹáşáááşá¸ áĄááąáŹáşááąá¸á áťáąá¸ááźáŽá¸ááźáŽá¸ ááŻáśááźááşá áááşááťáááźááşá¸ááážáá፠(USB-SATA áĄáááşááŹáá áşááŻáááşáááˇáşááŹá¸áááşá áááşááťááş SSD ááťáŹá¸áĄáá˝ááş ááťáážáŻáśá¸áážáŻá áŹáááşá¸áĄááşá¸ááťáŹá¸áážáŹáááşá¸ áĄáŹá¸áá ááŹááážáááŤ)á
USB HDD áááş áĄáá°á¸áá˝á˛ááąáŹááşáážáŻáážáááąáŹ ááźáąáážááşá¸ááťááşáá áşááŻáážááˇáş ááá°ááąá
áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş á¤áá˝áąá¸ááťááşáá˝ááˇáşáááŻáˇ ááąáŹááşááŹáááş- MicroSD ááž boot ááᯠááŹá¸áá˛áˇááŤá áááŻáˇááąáŹáş áááşá¸áááŻáˇááᯠáááşáááş-áááşáááşááŻááşáá˝ááş áĄááŻáśá¸ááźáŻáᏠáĄááŻááşáážááşáááşá¸ááᯠááááşá¸áááşá¸á፠(áážááˇáş ááŽá¸ááźáŹá¸ ááŹáˇááşáᲠáĄá áááşáĄáááŻááşá¸áá áşááŻá áĄááźáŹá¸ááąáŹ áĄááťááşáĄáááş - áĄáážááşá ááş ááśááŤááşá áĄáŹááŻáśááś ááťáááşáážááážáŻááťáŹá¸ á áááşááźááˇáş) áĄááźáŹá¸áá áşááąááŹáá˝ááş ááźá áşáááşá
Raspberry Pi áĄáá˝ááş read-only FS á ááąáŤááşá¸á ááşááᯠáĄáááşáĄáááşá¸ ááąáˇááŹááŹá¸ááźáŽá¸ááźá áşáááşá á¤ááąáŹááşá¸ááŤá¸áá˝ááş áĄááąáŹááşáĄáááşááąáŹáşáážáŻáĄááąá¸á áááşááťáŹá¸ááᯠááťá˝ááşáŻááşáá ááşá¸á áŹá¸ááŤá (ááŤááąáááˇáş á áááşáááşá áŹá¸áááşáááŻáááşááąáŹáˇ ááŽáĄááźáąáŹááşá¸áĄááŹáá˛áˇ áááşáááşááźáŽá¸ ááąáŹááşá¸ááŤá¸áááŻááąá¸áá áşáᯠááąá¸ááźá áşáááŻááşááŤáááş). áááááźáŻá áąáááŻáááˇáş áá áşááŻáááşá¸ááąáŹáĄááťááşáážáŹ áááŻááşáá˝áąáˇ áĄáá˝áąáˇáĄááźáŻáśáĄáááąáŹ áááşá¸ááᯠáĄááąáŹááşáĄáááşááąáŹáşáá°á¸áá°ááťáŹá¸á ááŻáśá¸áááşááťááşááťáŹá¸áĄá ááŻáśááźááşá áááşááťááážáŻáá˝ááş áĄááźááşáĄá á˝ááşá¸ááťáŹá¸ áážáááŤáááşá ááŻááşáááşá ááźááŻáá˝á˛áážáŻáá˝áąááᯠááŻáśá¸ááááşáážáŹá¸áá áşáááŻáˇ áááźá áşáááŻááşááąáááˇáş áá°áááŻáˇáá˛áˇ áĄááźáááşááąááᯠááááááŹáᏠááťážáąáŹáˇááťáááŻáˇ áĄááąáŹáşááąá¸ ááźá áşáááŻááşáááşá áááşááťáŹá¸áááş áá áşá áŻáá áşá ááşá¸áááşá¸ááźá áşááŹááźáŽá¸ áááşááąáŹááşáážáŻáááşáááşá¸ááťáŹá¸áĄáá˝ááş áĄá áŹá¸áááŻá¸áážáŻáážáŹ ááááŹáááşáážáŹá¸á á˝áŹáááŻá¸áážááşá¸á áąáááşá
ááŹáˇááşáá˛áĄá áááşáĄáááŻááşá¸áá áşááŻ
Memory áĄááťááŻá¸áĄá
áŹá¸ - NOR Flash áá˝áąá¸ááťááşáážáŻáážááˇáşáááşáááşá áĄáá°á¸ááśááááźá
áşá
ááŹááážáááŤá
áĄááźááşá¸áá˝áŹá¸áážáŻááťáŹá¸:
- áááŻá¸áážááşá¸ááąáŹááťáááşáááşáážáŻ (ááťáŹá¸ááąáŹáĄáŹá¸ááźááˇáşááťá˝ááşáŻááşáááŻáˇáĄááŻáśá¸ááźáŻááąáŹáĄáá˝áąáˇáĄááźáŻáśáážáááźáŽá¸ááŹá¸ SPI áááşá áşááŹá¸á áááŻáˇááźáąáŹááˇáş hardware ááźáżááŹááťáŹá¸ááťážáąáŹáşáááˇáşáááŹá¸ááŤ)
- áááşá ááŹááąáŹááşá¸ááąáŹá áťáąá¸áážáŻááşá¸;
- á áśáááşáááşáážáŻááááŻáááŻááąáŹ (áĄááąáŹááşáĄáááşááąáŹáşáážáŻáááş kernel áá˝ááşáážáááźáŽá¸ááŹá¸) LinuxáááşáĄáááŻáážáááŤáá ááźááşáááŻáášáááŽáá áşááŻáááŻáá°áááŻááşáááşá áááşá¸áááŻáˇáááşá¸áážáááąáááŻááşáááşá áááŻáˇáááŻááş áááˇáşáááŻááşáááŻááşááąá¸ááŹá¸áááŻááşáááşá ááśááąáŹááşá¸ááąáŹááşáá á˝áŹá áĄááŹáĄáŹá¸ááŻáśá¸áááş áááŻá¸áážááşá¸ááŤáááş)á
- ááŻáśááźááşá
áááşááťááážáŻáážááˇáş áĄáááşá¸áĄááźá
áş-
ááŻáśáážááşááąááŹá áŹáá˝ááşááž- ááąááŹááᯠáĄáážá áş 20 ááááşá¸áááşá¸ááŹá¸ááźáŽá¸ áááąáŹááşáá áşááŻá áŽáĄáá˝ááş 100000 erase cycles;
ááźááşááĄáá˝á˛áˇáĄá ááşá¸ááž áĄáááşá¸áĄááźá áşááťáŹá¸ááž- áĄáá˝ááşááááˇáşááťááąáŹ BERá áĄáážáŹá¸ááźááşáááşáážáŻááŻááşááťáŹá¸ááᯠáááşáážááşááąáŹáşááźáááş ááááŻáĄááşááŤá (áĄááťááŻáˇá áŹáááşá¸ááťáŹá¸á ECC ááᯠNOR ááŻáá°áááąáŹáşáááşá¸ áĄááťáŹá¸áĄáŹá¸ááźááˇáş áááşá¸áááŻáˇáááş MLC NOR áááŻáááŻáááŻáááşá á¤áááŻáˇáááşá¸ ááźá áşáááşáááş).
áááŹááážááˇáş áĄáááşá¸áĄááźá áşáĄáá˝ááş áááŻáĄááşááťááşááťáŹá¸ááᯠáááˇáşáážááşá¸ááźááˇáşááźááŤá ááŻáˇá
ááąááŹááᯠáááşáĄááąáŹáşááźáŹ ááááşá¸áááşá¸ááŹá¸ááźáąáŹááşá¸ ááąááťáŹá áąáááŻááŤáááşá ááťáááşáááşáážáŻááźáżááŹááťáŹá¸áážáááŤá áĄááąáŹááşá¸áážááşáááşá¸áááťáąáŹááşá áąáááş áááşá¸áááş áááŻáĄááşááŤáááşá á¤ááŹááĄáá˝ááş á áááşááᯠáĄáŹááŻáśá ááŻááşááŤáááşá (á ááąá ááááşášááá˝áąáážááˇáş áĄáŹá¸áááşáááşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸ááźááşá¸) ááźáżááŹáááŻááźáąáážááşá¸áááŻááşááŤáááşá
áááşáážááá˝ááş ááťá˝ááşáŻááşáááŻáˇáá˝ááş áá áşááąáˇááťážááş áážááşáááşá¸ 100kb áááˇáş (áážááşáááşá¸ 3-4) áááˇáşáážááááşá áááŻáˇááąáŹáş á¤ááááşá¸ááááşá¸áááş áááźááşá¸ááźááşá¸ ááźáŽá¸áá˝áŹá¸ááŹáááş - áĄááąá¸á áááşáĄááťááşáĄáááşááťáŹá¸ áááŻá¸ááŹáᏠááźá áşáááşáĄáá áşááťáŹá¸ááᯠáááşááąáŹááşá¸ááŤáááşá áááŻáˇáĄááźááşá áá áşááŤáá áşááśáá˝ááş áážááŻááşá¸ááťáŹá¸ áááşááŹáááş (áĽááᏠáĄááťááŻáˇááąáŹ áĄáŹááŻáśááśááááááŹááťáŹá¸áááş áážáŹá¸áá˝ááşá¸ááąáŹ áĄááźáŻáááąáŹááťáŹá¸ááźááˇáş á áááşá¸áááŻáˇááźááşá¸ á áááşáááş)á ááťá˝ááşáŻááşáááŻáˇáááş áá áşááąáˇááťážááş ááŽááŤáááŻááş 10 bytes áážááşáááşá¸ 100 áĄáá˝ááş áá˝ááşááťááşááŤáááşá
á áŻá áŻááąáŤááşá¸á ááąááŹáááˇáşáážááşá¸áážáŻ (ááąáŹááşá¸áá˝ááşá á˝áŹááťáŻáśáˇááŹá¸ááąáŹ) 5MB áážáááŤáááşá áĄá˛ááŤáĄááźááşá (áĄááźááşá¸ááťááşá¸ áááˇáşáážááşá¸ááťááş) áááşááąáŹááşáážáŻááąáᏠ1MB á
áááŻáááŻáááşáážáŹá ááťá˝ááşáŻááşáááŻáˇáááş compression áááŻáĄááŻáśá¸áááźáŻááŤá 8 MB áĄáá˝ááşááťá áşááşáá áşááŻáááŻáĄááşáááşá áááŻáˇáááŻááşááťá˝ááşáŻááşáááŻáˇááźáŻááŻááşááŤá 4 MB áááŻáĄááşáááşá á¤áážááşááŹááşáĄááťááŻá¸áĄá áŹá¸áĄáá˝ááş áĄáá˝ááşáááşáá˝áąáˇááťááąáŹ ááááşá¸ááááşá¸ááťáŹá¸á
áĄáááşá¸áĄááźá
áşáážááˇáşáááşáááşááźáŽá¸ ááťá˝ááşáŻááşáááŻáˇáááş áážááşááŹááşááᯠ5 áááşááťážááş áá
áşááźáááşáááş áááźáŹáááźáŹááźááşááąá¸áááşá
áŽá
ááşááŹá¸ááŤáá áááşááąáŹááşáážáŻ 10 áážá
áşáážááˇáşáĄáááş ááťá˝ááşáŻááşáááŻáˇáááş ááźááşáááşááąá¸ááŹá¸ááźááşá¸á
ááşáááşá¸áá
áşááąáŹááşáĄáąáŹááş ááážááááşááźá
áşáááşá
ááŻááşááŻááşáá°áááş áá
áşááááşá¸ áááááźáŻááźáąáŹááşá¸ áááááąá¸ááŤáá
áąá
NOR vs NAND áĄááźáąáŹááşá¸áĄáááşá¸áááş
ááąááťáŹááŤáááşá ááŽááąáˇá NAND memory á áááŻáá°ááźááŻááşááťáŹá¸ááŤáááşá ááŤááąáááˇáş ááŽáááąáŹááťááşáĄáá˝ááş ááťá˝ááşááąáŹáşááŻáśá¸áážáŹáááŻááşááŤáá°á¸- NANDá NOR áá˛áˇááá°áá˛á áĄáážáŹá¸ááźááşáááşááźááşá¸ááŻááşáá˝áąá áááąáŹááşá¸áá˛áˇáááąáŹááşáááŹá¸ á ááŹáá˝áąááᯠáááźá áşáááąáĄááŻáśá¸ááźáŻáááŻáˇáááŻáĄááşááŤáááşá NAND ááťá áşááşáá˝áąáážáŹ ááťáŹá¸ááąáŹáĄáŹá¸ááźááˇáş áááşááśááŤááşááťáŹá¸á á˝áŹááŤáážáááŤáááşá
NOR á áĄáŹá¸áááşá¸ááťááşááťáŹá¸áážáŹ-
- ááąá¸áááşááąáŹ ááŻáááş (áááŻáˇááźáąáŹááˇáş ááŽááŤáááŻááşáá áşááŻááťážááş ááźááˇáşááŹá¸ááąáŹá áťáąá¸áážáŻááşá¸);
- áá˛áážááşáážáŻááşá¸ áááşá¸ááŤá¸ááźááşá¸ (Serial interface ááᯠáĄááťáŹá¸áĄáŹá¸ááźááˇáş SPI áááŻáˇáááŻááş I2C ááᯠáĄááŻáśá¸ááźáŻááŹá¸ááźááşá¸ááźáąáŹááˇáş)á
- áážáąá¸áá˝áąá¸á á˝áŹ ááťááşááźááşá¸ (áááąáŹááşáĄáá˝ááşáĄá áŹá¸ááąáŤáşáá°áááşá áááşá¸áááş áá áşá áášáááˇáşááĄáááŻááşá¸áĄá ááťáŹá¸ááž á áášáááˇáşááťáŹá¸á á˝áŹááźáŹáááş)á
ááŤáááŻáˇáĄáá˝ááş ááŹáážáĄááąá¸áááźáŽá¸áá°á¸áááşáááşá ááŤááźáąáŹááˇáş ááŤáááŻáˇáááşááŻááşáááşá
áĄááąá¸á áááşáĄááťááşáĄáááşááťáŹá¸ááᯠáááşá áááşáááşá áŹá¸ááŤáá microcircuit áá áşááŻááᯠáá˝áąá¸ááťááşááŹá¸áááşá (áááŻáˇááąáŹáşá áááşá¸áááş ááážááááźá áşáááŻáĄááşáááşá pinout áážááˇáş command system áĄá ááááŹáááźá áşááąáŹ á áťáąá¸áá˝ááşáá˝ááş analog áĄááťáŹá¸áĄááźáŹá¸áážáááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááźáŹá¸ááŻááşááŻááşáá°áážááˇáş/áááŻáˇáááŻááş áĄááźáŹá¸ volume ááž microcircuit áá áşááŻááᯠáááşáááşáááŻááŤáá ááŻááşáááŻáááźáąáŹááşá¸áá˛áᲠáĄááŹáĄáŹá¸ááŻáśá¸áááş áĄááŻááşááźá áşááááˇáşáááş).
ááťá˝ááşááąáŹáş kernel áá˛áážáŹ built-in ááŤáá˛áˇááŹáááŻááŻáśá¸ááŤáááş Linux Raspberry áážáŹ Driver áĄáá˝ááş device tree overlay support ááźáąáŹááˇáş áĄááŹáĄáŹá¸ááŻáśá¸á áĄáááşá¸áááŻá¸áážááşá¸ááŤáááş - compile ááŻááşááŹá¸áá˛áˇ overlay ááᯠ/boot/overlays áá˛áážáŹáááˇáşááźáŽá¸ /boot/config.txt ááᯠáĄáááşá¸áááşááźááşáááşáááŻáˇ áááŻááŤáááşá
dts áááŻááşááĽáááŹ
áááŻá¸áááŻá¸ááŹá¸ááŹá¸ ááźáąáŹááááşááąáŹáˇ áĄáážáŹá¸áĄáá˝ááşá¸ááážá ááąá¸ááŹá¸áááşáááŻáᏠáááąááťáŹááąáááˇáş áĄáááşááźáąááŤáááşá
/*
* Device tree overlay for at25 at spi0.1
*/
/dts-v1/;
/plugin/;
/ {
compatible = "brcm,bcm2835", "brcm,bcm2836", "brcm,bcm2708", "brcm,bcm2709";
/* disable spi-dev for spi0.1 */
fragment@0 {
target = <&spi0>;
__overlay__ {
status = "okay";
spidev@1{
status = "disabled";
};
};
};
/* the spi config of the at25 */
fragment@1 {
target = <&spi0>;
__overlay__ {
#address-cells = <1>;
#size-cells = <0>;
flash: m25p80@1 {
compatible = "atmel,at25df321a";
reg = <1>;
spi-max-frequency = <50000000>;
/* default to false:
m25p,fast-read ;
*/
};
};
};
__overrides__ {
spimaxfrequency = <&flash>,"spi-max-frequency:0";
fastread = <&flash>,"m25p,fast-read?";
};
};config.txt áá˝ááş ááąáŹááşáááşá áŹááźáąáŹááşá¸áá áşááŻ
dtoverlay=at25:spimaxfrequency=50000000Raspberry Pi áážááˇáş microcircuit ááťáááşáááşáážáŻáĄááźáąáŹááşá¸ ááąáŹáşááźááťááşááᯠááťáąáŹáşáá˝áŹá¸ááŤáááşá áá áşáááşáá˝ááşá ááťá˝ááşáŻááşáááş áĄáŽáááşááá˝ááşáá áşáá ášá ááşá¸ááťá˝ááşá¸ááťááşáá°áááŻááşááŤá áĄááźáŹá¸áá áşáááşáá˝ááşá ááťá˝ááşáŻááşáĄáá˝ááşáááş áĄááŹáĄáŹá¸ááŻáśá¸áááş áĄááąá¸áĄáá˝á˛ááźá áşáááş- microcircuit áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááŻáĄááşááąáŹ ááźáąááźááşá ááŤááŤá SPI (CS, SI, SO, SCK) áá˝ááş áááşááśááŤááş 8 ááŻááŹáážááááşá áĄáááˇáşááťáŹá¸áááş Raspberry Pi áážááˇáş áááŻááşáááŻááşáááşá ááąáŹááşáááş áá˝áŹá¸ááťááŻááşá¸áááş ááááŻáĄááşá፠- áááşáážááşááŹá¸ááąáŹ áĄáááşáĄáá˝ááş 6 ááŻááᯠááťáááşáááşááŤá
ááźáżááŹáááŻááŻáśááąáŹáşááźááşá¸
ááŻáśá¸á áśáĄáááŻááşá¸á ááźáżááŹááŻááşááźááşááťááşáááş áĄááźáááşááźáááş áááşááŤáááşááŤááźá áşááąááźáŽá¸ ááąáŹááşáá áşááŻáĄáá˝ááş áĄááťáááşááąáŹááşááźáŽáááşááŤáááşá ááŤááźáąáŹááˇáş áááşáááŻááşááźááĄáąáŹááşá ááąá¸ááźáŽá¸ááŹá¸áá˝áąááᯠá áŻá ááşá¸ááźáŽá¸ áážáąáŹááşááááşáá˛áážáŹ ááťááşááąááąá¸áá˛áˇ áĄááąá¸á áááşáĄááťááşááąá¸áá˝áąááᯠáážááşá¸ááźáááŻááşááźááĄáąáŹááşá
áááŻáˇááźáąáŹááˇáşá áážááşáááşá¸ááᯠSPI NOR Flash áá˝ááş ááááşá¸áááşá¸áááş ááŻáśá¸ááźááşáááŻááşááŤáááşá
ááááá°ááťáŹá¸áĄáá˝ááş NOR Flash áááŻááŹááŹáá˛
áááşá¸áááş áááşááŻááşááąáŹááşáážáŻ ááŻáśá¸ááŻááᯠááŻááşááąáŹááşáááŻááşáááˇáş ááááşááźáááşááąáŹ áážááşááŹááşáá áşááŻááźá áşáááşá
- á
áŹáááşááźááşá¸ -
áĄááŻáśá¸áĄááťáŹá¸ááŻáśá¸á áŹáááşááźááşá¸- ááťá˝ááşáŻááşáááŻáˇáááş ááááşá áŹááᯠááťáąáŹáşááźááşááźáŽá¸ ááťá˝ááşáŻááşáááŻáˇ áááŻáĄááşáááąáŹááş áááŻááşááťáŹá¸á á˝áŹááᯠáááşáááşá - á
áśááťáááş:
NOR flash áá˝ááşááąá¸ááźááşá¸áááş ááŹáááşáá áşááŻáážááˇáşáá°ááąáŹáşáááşá¸ áá°á¸ááźáŹá¸ááťááşáá áşááŻáážááááş- áááşáááş 1 ááž 0 áááŻáˇááźáąáŹááşá¸áááŻááşááąáŹáşáááşá¸ áĄááźááşáĄáážááşáááźáąáŹááşá¸ááŤá áĽáááŹáĄáŹá¸ááźááˇáşá áĄáááşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş 0x55 ááᯠmemory cell áá˝ááş 0x0f ááąá¸ááźáŽá¸ááŤáá 0x05 ááᯠáááŻááąááŹáá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáŽá¸ááźá áşáááşá (áĄáąáŹááşááŤáááŹá¸áááŻááźááˇáşááŤ); - ááťááşáááş-
ááŻááşááŤáááşá ááťá˝ááşáŻááşáááŻáˇáááş áááˇáşááťááşáááşááŻááşááąáŹááşááťááşááᯠááŻááşááąáŹááşáááŻááşáááşáááŻáĄááşáááş - 0 ááž 1 áááŻááźáąáŹááşá¸ááŤá á¤áááşáážáŹ ááťááşááźááşá¸ááŻááşááąáŹááşááťááşáĄáá˝ááşááźá áşáááşá ááááážá áşááŻáážááˇáşááá°áá˛á áááşá¸áááş bytes ááąáŤáşáá˝ááşáááŻááşáᲠblocks ááťáŹá¸áá˝ááşáĄááŻááşááŻááşáááş (áá˝áąá¸ááťááşááŹá¸ááąáŹááťááşá áşáážááĄáááşá¸ááŻáśá¸ááťááşáá áşáááˇáşááááşáááŻáˇáááş 4 KB)á Erase áááş block áá áşááŻááŻáśá¸ááᯠááťááşá áŽá¸á áąááźáŽá¸ áááşá¸áááş 0 ááž 1 áááŻááźáąáŹááşá¸áááş áá áşááŻáááşá¸ááąáŹáááşá¸áááşá¸ááźá áşáááşá áááŻáˇááźáąáŹááˇáş flash memory áážááˇáşáĄááŻááşááŻááşááąáŹáĄááŤá áááźáŹáá data structures ááťáŹá¸ááᯠerase block boundary áááŻáˇááťáááşáážááááş áááŻáĄááşááŤáááşá
NOR Flash áááŻáˇ á áŹááąá¸ááąáááş
áá˝áááąááŹ
áááźá
áş
01010101
áážááşáááşá¸áááşááŹá¸áááşá
00001111
ááźá
áşááŹáááş
00000101
áážááşáááşá¸áááŻááşáááŻááşáááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşáážááşáááşá¸ááťáŹá¸ á áĄáá˝á˛áá áşááŻááźá áşáááşá ááŻáśáážááşáážááşáááşá¸áá áşááŻáááş 30 bytes áááˇáşáážááşáááş (áá áşááŤáá áşááśáážááşáááşá¸ááťáŹá¸áááş ááŽáááŻáááŻááşááťáŹá¸á á˝áŹáážááşááąáŹáşáááşá¸)á á¤ááá ášá áá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸áááŻáˇáážááˇáşáĄáá° áááŻááşáĄá áŻáá áşááŻáĄááźá áşáᏠááŻááşááąáŹááşááąáŹáşáááşá¸ áááşá áááşáááşá áŹá¸ááŤá áážááşáááşá¸ááťáŹá¸áĄáá˝ááşá¸ CBOR ááᯠáĄááŻáśá¸ááźáŻááŤáááşá
áážááşáááşá¸áĄááźááşá áĄááşááááşááŻááşááŹá¸ááźááşá¸ááážáááąáŹá áĄááťááŻáˇááąáŹ "áááşáááş" áĄááťááşáĄáááşáĄááťááŻáˇááᯠááááşá¸áááşá¸áááş áááŻáĄááşáááş- áĄááťááŻáˇááąáŹá
ááşáá
ášá
ááşá¸ IDá áĄáŹááŻáśááśááťáááşáážááážáŻááťáŹá¸á "á
ááşáá
ášá
ááşá¸ááᯠááŹááŽááááşááŹá¸áááş" áĄááśá á
áááşáááŻáˇááźá
áşáááşá
á¤áĄááťááşáĄáááşáááş CBOR áá˝ááşáááşá¸ ááááşá¸áááşá¸ááŹá¸áááˇáş ááąáŹáˇáááşáááŻá¸áážááşáááşá¸ááťáŹá¸ áĄá
áŻáĄááąá¸áá
áşááŻááźá
áşáááşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş á¤áĄááťááşáĄáááş áĄááťáŹá¸áĄááźáŹá¸ááážáá፠(áĄáááşá¸ááŻáśá¸ ááŽáááŻáááŻááşáĄáááşá¸áááş) áážáááźáŽá¸ áááşá¸ááᯠáááźáŹáá áĄááşááááşááŻááşááŤáááşá
ááąáŹááşáá˝ááş áááşá¸ááᯠáááşá
ááşáážáŻáᯠááąáŤáşááŤáááşá
á¤ááąáŹááşá¸ááŤá¸ááᯠáááşáááŻáˇá áááşáá˛áˇáááşááᯠááááááŤáá ááŻáśááźááşá áááşááťáááąáŹ ááąááŹááááşá¸áááşá¸áážáŻááąááťáŹá áąáááş áĄáá˝ááşáĄááąá¸ááźáŽá¸ááźáŽá¸ ááźá áşáááŻááşááŤá ááŹáˇááşáá˛ááťááŻáˇáá˝ááşá¸ááťááş/ááąááŹáááŻáá˝ááşá¸áážáŻááźá áşáá˝áŹá¸áááˇáşáĄááťáááşáá˝ááşáááş ááźá áşáááŻááşááŤá áĄáážáąáŹááşáĄáážááşáááşá¸á á˝áŹ áááşáááşáááŻááşáááşááźá áşáááşá
áááşáááˇáşááźáżááŹááťáŹá¸á áĄáááşá¸áĄááźá áşááťáŹá¸ááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸áááŻááşááááşá¸á
- ááąá¸/ááťááşááźááşá¸ ááŻááşááąáŹááşááťááşááťáŹá¸áĄáá˝ááşá¸ ááŤááŤááźááşááąáŹááşááźááşá¸á áááşá¸áááş "áááąáŹááˇáşááᯠáĄááŹáĄáá˝ááşááážáááąáŹ" áĄááťááŻá¸áĄá
áŹá¸áážááźá
áşáááşá
áĄááťááşáĄáááşáá˝áąáááą stackexchange áá˝ááş- flash ááźááˇáşáĄááŻááşááŻááşááąá ááşááŤááŤááááşááŹá¸ááąáŹáĄááŤá ááťááşáá áşááźááşá¸ (á) ááŻáážááˇáşááąá¸áááş (áááşáážááşááŹá¸áááˇáş 1) áááş áááşáážááşáááŹá¸ááąáŹáĄááźáŻáĄáá°ááŽáááŻáˇ áŚá¸áááşáááş- ááąááŹáááŻááąá¸ááŹá¸áááŻááşáááşá áá áşá áááşáá áşáááŻááşá¸ááąá¸ááŹá¸áááŻááşáááş (áááŻááŤá ááŻáˇá ááťá˝ááşáŻááşáááŻáˇáááş 0 bytes/10 bits ááᯠáá˝ážá˛ááźáąáŹááşá¸ááąá¸ááąáŹáşáááşá¸ 80 bits ááŹááąá¸áááŻááşáááş)á áĄááťááŻáˇááąáŹáá áşááťáŹá¸áááş âreading 45 áááŻáˇáááŻááş áĄáááşáĄáááşâ áĄááąáĄááŹá¸áá˝ááşáĄááŻáśá¸áááşáá˝áŹá¸ááźááşá¸áááşá¸ ááźá áşáááŻááşáááşá - flash memory áá˝ááş áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ áážáááąáááşá
BER áááş áĄáá˝ááşáááşá¸ááąáŹáşáááşá¸ ááŻááážááˇáş áááŽááťážáááŻááşááŤá - áááşá
áşááŹá¸ áĄáážáŹá¸ááťáŹá¸
SPI áážáá áşáááˇáş ááąá¸áááŻáˇááąáŹ ááąááŹááᯠáááşáááˇáşáááşá¸ááźááˇáşááťáž áĄááŹáĄáá˝ááş áááąá¸áááŻááşááŤá áá áşááŻáááşá¸ááąáŹáá áşáĄáážáŹá¸ááťáŹá¸áážááˇáş áááşáá°ááźáŻááźááşá¸áĄáážáŹá¸ááťáŹá¸ - áá áşááťáŹá¸ááŻáśá¸áážáŻáśá¸áážáŻ áááŻáˇáááŻááş áááˇáşáá˝ááşá¸ááźááşá¸ (ááźáŽá¸ááŹá¸ááąáŹááąááŹááŻáśááťááşááźááşá¸áááŻááźá áşá áąááąáŹ) ááąáŹááşá¸á á˝áŹááźá áşááąáŤáşáááŻááşáááşá - áĄááźáŹá¸áĄáážáŹá¸ááťáŹá¸/ááťááŻáˇáá˝ááşá¸ááťááşááťáŹá¸
ááŻááşáĄáážáŹá¸ááťáŹá¸á Raspberry ááťááŻáˇáá˝ááşá¸ááťááşááťáŹá¸á ááźááŻááşááŹá¸áááşááąáŹááşá á˝ááşáááşáážáŻ...
ááŻáśááźááşá áááşááťááážáŻ áážáá áąáááşáĄáá˝ááş ááťá˝ááşáŻááşááááşááźááşáá°áááťááşáĄá ááźááˇáşáááşá¸ááąá¸ááááˇáş áááŻáĄááşááťááşááťáŹá¸ááᯠááąá¸áá˝á˛ááŹá¸ááŤáááşá
- áážááşáááşá¸ááťáŹá¸ááᯠflash memory áá˝ááşááťááşááťááşá¸ááąá¸ááŹá¸ááááşááźá
áşááźáŽá¸á áážáąáŹááˇáşáážáąá¸ááąáŹáĄááąá¸áĄááŹá¸áááŻáááˇáşáá˝ááşá¸á
ááşá¸á
áŹá¸áááşáááŻááşááŤá - áĄáážáŹá¸áĄáá˝ááşá¸áá
áşááŻááźá
áşááąáŤáşááŤáá áááşá¸áááŻáážáŹáá˝áąáá˝áąáˇáážáááźáŽá¸ áááşáááŻááşáááťáž á
áąáŹá
áŽá¸á
á˝áŹááŻááşááąáŹááşáááŤáááşá - ááźá
áşáááŻááşááťážááş á
áá
áşáááş áĄáážáŹá¸ááťáŹá¸ááž ááźááşáááşááąáŹááşá¸áá˝ááşááááşá
(âáááźá áşáááˇáşáá°á¸â áááŻáá˛áˇ áááá˛á áĽáááŹáá áşááŻá áá°áááŻááşá¸ááźáŻáśáá°á¸ááźáááşáááşááŤáááş- áĄááąá¸ááąáŤáşááźááşáá˝ááˇáşááźáŽá¸ááąáŹááşá áááŻááşá áá áşá âááťááşâ ááźáŽá¸ áááşáááşáážáŻá áá áşá boot ááááşááŤáá°á¸)
á áááşáá°á¸áá˝áąá ááťááşá¸áááşáážáŻáá˝áąá áĄáá˝áąá¸áá˝áą
ááŽááźáżááŹááᯠá ááźáŽá¸áá˝áąá¸áá˛áˇáĄááŤá áĽáááŹ- ááąáŤááşá¸áá˛áážáŹ áĄáá˝áąá¸áá˝áą ááąáŤáşááŹáááşá
- ááąááŹááťáŻáśáˇáááŻáĄááŻáśá¸ááźáŻ;
- áážááşáááşá¸áá áşááŻáá˝ááş áĄáážáŹá¸áĄáá˝ááşá¸áá áşááŻáážáááťážááş ááťááşááᯠááźáżááŹááážááᲠáááşáážáŻáááŻááşá áąáááş áážááşáááşá¸ááąáŤááşá¸á áŽá¸ááťáŹá¸ááᯠááŽá¸áááˇáşááááşá¸áááşá¸ááźááşá¸áá˛áˇáááŻáˇááąáŹ áááášááŹááŤá¸áááşááąáŹ ááąááŹáá˝á˛áˇá ááşá¸ááŻáśááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤá
- ááŤááŤááááşáááˇáşáĄá፠ááąá¸ááźááşá¸ááźáŽá¸ááŻáśá¸áážáŻááᯠááááşá¸ááťáŻááşáááş áá áşáĄáá˝ááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤá
- áĄááŹáĄáŹá¸ááŻáśá¸áážááˇáşáá°áááŻááşá¸áĄáá˝ááş checksum ááťáŹá¸áááŻááááşá¸áááşá¸ááŤá
- error-correcting coding ááŻáśá áśáĄááťááŻáˇááᯠáĄááŻáśá¸ááźáŻááŤá
á¤áĄáá°áĄááĄááťááŻáˇááᯠáĄááŻáśá¸ááźáŻáá˛áˇááźáŽá¸ áĄááťááŻáˇáážáŹ á á˝ááˇáşáá áşááśáá˛áˇááááşá áĄá˛ááŤáá˝áąááᯠá áá áşáááť ááźááşáááşá¸ááźááĄáąáŹááşá
ááąááŹáááŻááťáŻáśáˇ
áážááşáááşá¸áá˛áá˝ááş ááťá˝ááşáŻááşáááŻáˇáážááşáááşá¸áááşááŹá¸ááąáŹ áĄááźá áşáĄááťááşááťáŹá¸áááş áĄááąáŹáşááąá¸áá°ááŽááźáŽá¸ áááşááŤááá˛áá˛ááźá áşáááŻááşáááş (âá áá°áááşáááşášááŤá¸ááźáŹá¸âá âááźáąáŹááşá¸áá˛áážáŻáááŻááşáááŻáážáááşáááŻááşáááşâá âŚ)á áááŻáˇááźáąáŹááˇáş compression áááş áĄááąáŹáşááąá¸ ááááąáŹááşáááˇáşáááşá
ááááááşáážáŻááĄááąáŤáşááśáážáŹ áĄááąá¸áááŤá፠(ááťá˝ááşáŻááşáááŻáˇáááááŻáááşááŹáááş áĄáá˝ááşáĄá á˝ááşá¸áááşááŤáááşá ááá Pi áá˝ááş áĄááźáááşááą 700 MHz áážááááˇáş core áá áşááŻáážááááşá áááşáážáááąáŹáşáááşááťáŹá¸áá˝ááş ááźáááşáážáŻááşá¸áá áşáá áşááŤáááşáááşááťáąáŹáşááąáŹ cores áĄááťáŹá¸áĄááźáŹá¸áážááááş)á áááŻáážáąáŹááşáážáŻáážááˇáşáĄáá° ááážááşáážáŻáĄááźááşáážáŻááşá¸áážáŹ ááááˇáşáááş (áá áşá áášáááˇáşááťážááş ááŽááŤáááŻááşááťáŹá¸á á˝áŹ) á áážááşáááşá¸ááťáŹá¸ááĄáá˝ááşáĄá áŹá¸áááş ááąá¸áááşáááşá ááąááŻááťáĄáŹá¸ááźááˇáşá compression áááş á á˝ááşá¸ááąáŹááşáááşáĄááąáŤáş áĄááťááŻá¸áááşááąáŹááşááŤáá áááşá¸áááş áĄááźáŻáááąáŹááŹááźá áşáááşá (ááŻáśá¸á áĄááźá áşáááşááąáááşá áᏠááááŻááŤáá°á¸)áááŻáˇáĄááźááşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş ááááˇáş embedded áá áşáᯠááážááᲠááŻáśáážááşáá áşááŻáᏠáážáááŤáááşá Linux â ááŤááźáąáŹááˇáş áĄááąáŹááşáĄáááşááąáŹáşáááŻáˇ áĄáŹá¸ááŻááşáážáŻ áĄááťáŹá¸ááźáŽá¸ ááááŻáĄááşááŤáá°á¸ (library ááᯠááťáááşáááşááźáŽá¸ áááşá¸ááž function áĄáááşá¸áááşááᯠáĄááŻáśá¸ááźáŻááŻáśáá˛áˇ ááŻáśááąáŹááşááŤáááş)á
áĄááŻááşááŻááşáááˇáşá ááşáá ášá ááşá¸ááž áážááşáááşá¸áĄáááŻááşá¸áĄá (1.7 MBá 70 áážááşáááşá¸ááťáŹá¸) ááᯠáá°ááąáŹááşááźáŽá¸ áá˝ááşááťá°ááŹááąáŤáşáážá gzip, lz4, lzop, bzip2, xz, zstd ááᯠáĄááŻáśá¸ááźáŻá áá˝ááşááźá°ááŹáá˝ááş ááážááááŻááşááąáŹ compressibility áážáááážáááᯠáŚá¸á á˝áŹá á áşááąá¸áá˛áˇáááşá
- gzipá xzá zstd áááş áĄááŹá¸áá°ááááşááťáŹá¸ (40Kb) ááᯠááźááá˛áˇáááşá
áááşáážááşáĄááťááŻáśá¸ xz áááş á¤ááąááŹáá˝ááş gzip áááŻáˇáááŻááş zstd áĄáááˇáşáá˝ááş ááźááá˛áˇááźááşá¸ááźáąáŹááˇáş áĄáśáˇááźááááŤáááşá - ááŻáśááąáááşáááşááťáŹá¸ááźááˇáş lzip áááş áĄáááşá¸áááşáááŻáááŻá¸ááąáŹ ááááşááťáŹá¸áááŻááąá¸áááşá
- lz4 áážááˇáş lzop áááş áĄáá˝ááşááąáŹááşá¸áá˝ááşááąáŹ ááááşááťáŹá¸ááᯠáááźááá˛áˇá፠(150Kb);
- bzip2 áááş áĄáśáˇááźáá˝ááşááąáŹááşá¸ááąáŹ ááááşááťáŹá¸ (18Kb) ááᯠááźááá˛áˇáááşá
ááŤááźáąáŹááˇáş data áá˝áąááᯠcompresses áĄáááşá¸ááąáŹááşá¸ááŤáááşá
ááŤááźáąáŹááˇáş (ááźááşá¸áááşáá˛áˇ ááťááŻáˇáá˝ááşá¸ááťááşáá˝áąááᯠáážáŹááá˝áąáˇáááş) ááááááşáážáŻ áážáááŤááááˇáşáááşá áá°ááŽááąáŹ flash drive áá˝ááşááąááŹááťáŹá¸áááŻáááŻááážáááąáŹááźáąáŹááˇáşááźá
áşáááşá
áĄáŹá¸áááşá¸ááťááşáá˝áąááᯠá ááşá¸á áŹá¸ááźááˇáşááĄáąáŹááşá
áááááźáżááŹ- áážááşáááşá¸áá áşááŻá áŽáááş flash áááŻáˇ ááťááşááťááşá¸áá˝áŹá¸áááˇáşáááşáᯠááťá˝ááşáŻááşáááŻáˇ áááąáŹáá°ááŹá¸ááźáŽá¸ááźá áşáááşá áĄááťáŹá¸áĄáŹá¸ááźááˇáşá archiver áááş output áááŻáˇ á áŹááąá¸áááş áĄááťáááşááąáŹááşááźáŽáᯠááŻáśá¸ááźááşáááşáĄáá input stream ááž áĄááťááşáĄáááşááťáŹá¸ááᯠá áŻááąáŹááşá¸ááŤáááşá ááťáŻáśáˇááŹá¸ááąáŹááąááŹáááąáŹááşáá áşááŻááᯠááťááşááťááşá¸ááá°ááźáŽá¸ ááááşááźáááşááąáŹáážááşááŹááşáá˝ááş ááááşá¸áááşá¸áááşáááŻáĄááşááŤáááşá
áááşá¸áááşá¸ááŻáśá¸ááťááŻá¸ ááźááşááŤáááş
- áĄáááşááąáŹáşááźá፠algorithms ááťáŹá¸áĄá
áŹá¸ áĄááááŹááşááťáŻáśáˇáážáŻááᯠáĄááŻáśá¸ááźáŻá áážááşáááşá¸áá
áşááŻá
áŽááᯠááťáŻáśáˇááŤá
áááşá¸áááş ááŻáśá¸ááĄááŻááşááŻááşáááŻááşááąáŹ áá˝áąá¸ááťááşáážáŻáá áşááŻááźá áşááąáŹáşáááşá¸ ááťá˝ááşáŻááşáááźááŻááşááŤá áááŻáááŻáááˇáşááťáąáŹáşááąáŹ ááťáŻáśáˇáážáŻáĄáááˇáşááᯠááąááťáŹá áąáááşá áĄááááŹááşááᯠááŽá¸ááźáŹá¸ááąááŹáĄáá˝ááş "áĄáśáááşáá˝ááşááť" ááźá áşáááŤáááşá áááşáááˇáşááźáąáŹááşá¸áá˛áážáŻáááᯠcompression áĄáááˇáşááᯠáááŻá¸áá˝áŹá¸á á˝áŹááťáááşá¸á áąááŤáááşá ááŻááşáá˛áˇá áĄááááŹááşááŹá¸áážááşá¸áĄáá áşááᯠáááşááŽá¸ááźááşá¸ááźááˇáş ááźáżááŹááᯠááźáąáážááşá¸áááŻááşáááşá áááŻáˇááąáŹáş áááşá¸áááş ááąáŤááşá¸áááŻááşááźááşá¸ááźá áşáááş- ááťá˝ááşáŻááşáááŻáˇáááş áĄááááŹááşááŹá¸áážááşá¸áĄáŹá¸ááŻáśá¸ááᯠááááşá¸áááşá¸ááŹá¸áááş áááŻáĄááşááŤáááşá áááˇáşáá˝ááşá¸áážáŻáá áşááŻá áŽáá˝ááşá áááşá¸ááᯠááťáŻáśáˇááŹá¸áááˇáş áĄááááŹááşá ááŹá¸áážááşá¸ááᯠáá˝ážááşááźáááş áááŻáĄááşááŤáááşá... - "ááášááááş" áĄááşááááŻááŽáááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻá áážááşáááşá¸áá
áşááŻá
áŽááᯠááááááşááŹá¸ááąáŹáşáááşá¸ áĄááźáŹá¸áá°ááťáŹá¸áážááˇáş ááŽá¸ááźáŹá¸áá˝á˛áááŹá¸ááŤá
áááˇáşáá˝ááşá¸á ááşá¸á áŹá¸ááŹá¸áááˇáş ááááááşáážáŻ áĄááşááááŻááŽáááşááťáŹá¸áááş á¤áĄáá˝ááşáĄá áŹá¸ (áááŻááşáááşááááşá¸) á áážááşáááşá¸ááťáŹá¸áážááˇáş áĄááŻááşááŻááşáááş ááŽáááŻááşá¸ááŻááşááŹá¸ááźááşá¸ áááŻááşáá˛á ááááááşáážáŻáĄááťááŻá¸áááş 1 áááş ááááááŹáᏠááťáąáŹáˇáááşá¸áááş (áááŻáááŻáááşáážáŹ ááťáŻáśáˇáážáŻáĄá áŹá¸ ááąááŹáááŹá áááŻá¸ááŹáááş)á - áááşááąáŹááşáážáŻáááŻááşá¸ááźáŽá¸ááąáŹááş FLUSH ááźáŻááŻááşááŤá
Compression library áĄááťáŹá¸áĄááźáŹá¸áááş FLUSH ááᯠááśáˇáááŻá¸ááąá¸áááşá á¤áááşáážáŹ ááťáŻáśáˇááźááşá¸ááŻááşáááşá¸á ááşáĄáá˝ááş áááˇáşáááşááťááşáá áşáᯠ(áááŻáˇáááŻááş) áážááşáááşá¸áá áşááŻáĄáŹá¸ áááşááśááážáááąáŹáĄááŤáá˝ááş áááşá¸áááş áááŻááşáááŻááťáŻáśáˇááŹá¸ááąáŹá áŽá¸ááźáąáŹááşá¸ááŻáśá áśááźááˇáş ááźááşáááşááá°ááźáŽá¸ááąáŹááş áááşá¸áááş áááşá¸ááĄááźáąááśáá˝ááş ááźááşáááşááá°áááş ááźá áşáááŻááşáááşá áĄáŹá¸ááŻáśá¸ áááşááśááážáááźáŽá¸ááąáŹ ááąááŹááťáŹá¸ááᯠááťáŻáśáˇáááŹá¸ááŤá áᎠanalogsyncáááŻááşá áá áşááťáŹá¸áá˝ááş áááŻáˇáááŻááşcommitsql áá˝ááş
áĄááąá¸ááźáŽá¸ááŹá ááąáŹááşáááşáá˝á˛ compression ááŻááşááąáŹááşááťááşáá˝áąá á áŻááąáŹááşá¸ááŹá¸áá˛áˇ áĄááááŹááşááᯠááŻáśá¸áááŻááşáážáŹááźá áşááźáŽá¸ compression ratio á áĄáááşááŹá¸áážááşá¸áážáŹááąáŹááş áááááŻááşáážáŹ áááŻááşááŤáá°á¸á
áááááá˝áąá¸ááťááşáážáŻááᯠááŤáá˝áąá¸ááťááşáá˛áˇáᏠáááşáážáŹá¸áááşáááŻáˇ ááŤáááşáááşá áĄá˛ááŤááᯠáááŻááźáŽá¸áĄááąá¸á áááşááźááˇáşááĄáąáŹááşá
áá˝áąáˇáááşá zlib áá˝ááş FLUSH áĄááźáąáŹááşá¸á
ááąáŹááşá¸ááŤá¸áááŻáĄááźáąááśá áá°á¸áá áşá ááşá¸áááşáážáŻáá áşááŻááźáŻááŻááşáá˛áˇááźáŽá¸ á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸ 70 KB áážáááąáŹ á ááşáá ášá ááşá¸áá áşááŻááž áážááşáááşá¸áááşááąáŹááşáážáŻ 60 ááᯠááá°áá˛áˇáááşá (ááąáŹááşááž á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸ááᯠááźááşááŹáá˛áˇááŤáááş) áááşááśááážááááş-
áááĽáŽá¸ááąááŹ
ááááááşáážáŻ gzip -9 (FLUSH áááŤáá˛)
Z_PARTIAL_FLUSH ááźááˇáş zlib
Z_SYNC_FLUSH ááźááˇáş zlib
ááŻáááşá Kb
1692
40
352
604
ááááá áşááťááşáá˝ááşá FLUSH áááŻááşááťá ááááşáááş áĄáá˝ááşááźááˇáşááŹá¸ááąáŹáşáááşá¸ áĄáážááşááááşáá˝ááş ááťá˝ááşáŻááşáááŻáˇáá˝ááş ááŻáśá¸ááááťáŻáśáˇáááş áááŻáˇáááŻááş FLUSH ááźááˇáş (áĄááąáŹáşááąá¸ááááááąáŹááşááąáŹááş) ááťáŻáśáˇáááş áá˝áąá¸ááťááşáážáŻáážáŹ ááśáˇááťááşá¸ááŤáááşá ááťá˝ááşáŻááşáááŻáˇáá˝ááş áážááşáááşá¸ááąáŤááşá¸ 70 áážááááşááᯠáááąáˇáááˇáşááŤá Z_PARTIAL_FLUSH ááž ááááşáááşáááˇáş áááşááąáŹááşá¸áááŹááááş áážááşáááşá¸áá áşááŻááťážááş 4-5 bytes ááŹáážááááşá ááźáŽá¸ááąáŹáˇ compression ratio á 5:1 ááŽá¸ááŤá¸ ááźá áşáá˝áŹá¸áááşá áĄá˛ááŤá áĄáááşá¸ááąáŹááşá¸áá˛áˇ ááááşáááş áááŻááŤáááşá
áááşá¸áááş áĄáśáˇááźá ááŹáᯠáááşáááąáŹáşáááşá¸ Z_SYNC_FLUSH áááş áĄáážááşááááş FLUSH ááźáŻááŻááşáááş áááŻáááŻááááąáŹááşááąáŹ áááşá¸áááşá¸ááźá áşáááşá
Z_SYNC_FLUSH áááŻáĄááŻáśá¸ááźáŻááŤá áážááşáááşá¸áá áşááŻá áŽá ááąáŹááşááŻáśá¸ 4 bytes áááş áĄááźá˛áááşá¸ 0x00, 0x00, 0xff, 0xff ááźá áşááááˇáşáááşá áááşá¸áááŻáˇááᯠááááŤá áááşá¸áááŻáˇááᯠááááşá¸áááşá¸áááŻááşáááş áááŻááşááąáŹááźáąáŹááˇáş ááąáŹááşááŻáśá¸áĄáá˝ááşáĄá áŹá¸áážáŹ 324 KB ááŹááźá áşáááşá
ááťá˝ááşááąáŹáş áááˇáşááşááťáááşááŹá¸áá˛áˇ ááąáŹááşá¸ááŤá¸áážáŹ áážááşá¸ááźááťááş áážáááŤáááş-
áĄááťááşá¸áážáŽá¸ááąáŹ áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááŤáážáááąáŹ áĄááťááŻá¸áĄá áŹá¸ 0 ááááşáááŻáˇáážáŻáĄáá áşááᯠááąáŤááşá¸áááˇáşááŹá¸áááşá
áĄááťááşá¸áážáŽá¸ááąáŹ áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááŤáážáááąáŹ áĄááťááŻá¸áĄá áŹá¸ 0 ááááşáááŻáˇááźááşá¸áá˝ááş-
- ááŻáśá¸áá áşááááşáááŻáˇááąáŤááşá¸á áŽá¸;
- byte ááťáááşáážááážáŻáĄáąáŹááşááźááşáááş 0 ááž 7 bits áááş ááŻááážááˇáşááŽáááşá
- four-byte sequence 00 00 FF FF á
áááşáĄáá˝ááşááá°ááźááşáááŻááşáááşáĄáááŻááşá¸á ᤠ4 bytes ááááŻááşááŽááąáŹááşááŻáśá¸áĄáá˝ááşáá˝ááş 3 ááž 10 áá áşááťáŹá¸ááž ááŻááĄáááážááááşá áááŻáˇááąáŹáşá áááşáá˝áąáˇáá˝ááş ááŻááá áş áá ááŻáááşááááşá¸áážáááźáąáŹááşá¸ ááźáááŹá¸áááşá
á¤áá˛áˇáááŻáˇááąáŹ ááąááŹáĄáááŻáĄááŻáśá¸ááťáŹá¸ááᯠáĄááťáŹá¸áĄáŹá¸ááźááˇáş (áĄááźá˛áááşá¸?) áĄááťááŻá¸áĄá áŹá¸ 1 (ááŻáśááąáá áş) ááźááˇáş 7 ááŻááá áşááźááˇáş áĄááŻáśá¸áááşááąáŹ áááąáŹááşáá áşááŻááᯠáĄááŻáśá¸ááźáŻá ááŻááşááŻááşááŹá¸ááąáŹááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş áĄáŹáááśááŹá¸ááąáŹ ááŻááá áş 10-17 áááŻááááŻááşáááş (ááťááşáááş 50%) áááˇáş ááźá áşáááŻááşááźáąáážáááąáŹ ááŻáááźá áşááŤáááşá
áááŻáˇááźáąáŹááˇáşá 100x0á 00x0á 00xffá 0xff ááááŻááşáᎠáĄáážáŻááťáŹá¸á 0% áá˝ááş á ááşá¸áááşááąááŹáá˝ááş ááŻááááŻááşáá áşáᯠáážáááźáŽá¸ ááŻáśá¸ááŻáśáá áşááŻáśááťáąáŹáşáá˝ááş ááŻááááŻááşáážá áşááŻáážááááş (áĄááááĄááťááşáááąáŹáˇ ááťá˝ááşááąáŹáş binary CBOR áááŻááŻáśá¸ááŹááźá áşáááŻááşáááşá á áŹááŹá¸ JSON áááŻááŻáśá¸áááşá áĄááťááŻá¸áĄá áŹá¸ 2 - dynamic blocks áá˝áąáá˛áˇ blocks áá˝áąááᯠáááŻááźáŽá¸ááźáŻáśáá˝áąáˇááááşááŤáááşá 0x00, 0x00, 0xff, 0xff ááááŻááşáááş ááąáŹááşáááş zero bytes áááŤáᲠblocks áá˝áąáá˛áˇ ááźáŻáśáá˝áąáˇáááŤááááˇáşáááş).
á áŻá áŻááąáŤááşá¸á ááážááááŻááşááąáŹ á ááşá¸áááşáážáŻááąááŹááᯠáĄááŻáśá¸ááźáŻá ááťáŻáśáˇááŹá¸ááąáŹááąááŹá 250 KB áĄáąáŹááşáážááˇáş áĄáśáááşáá˝ááşááťááźá áşáááŻááşáááşá
áĄááŻáśá¸áĄáá˛ááťáŹá¸ááźááˇáş ááźá˝áąááŹáááŻááşáááş- ááᯠááťá˝ááşáŻááşáááŻáˇáááş áááąáŹááşáá
áşááŻááĄááŻáśá¸áá˝ááş ááŻááá
áşáĄáááşá¸áááşááŤáááşáážáŻááᯠááťá
áşááťá°áážáŻááŹá¸ááźáŽá¸ áááąáŹááşáá
áşááŻááĄá
áá˝ááş áĄáááşá¸áááşááąáŹáá
áşááťáŹá¸áááşáááşá¸ ááźáąáŹááşá¸áá˛áááşáááŻááşááŤ...
áááŻáˇááąáŹáş á¤ááąááŹáá˝ááş ááťá˝ááşáŻááşáááş áááşáááˇáşáááş á
áááşáĄáŹá¸áááşáááşááąáŹ ááŻáśá¸ááźááşááťááşáá
áşááŻááᯠááťáááŻááşáááşá áááŻááşááŤá á¤áážáŻááşá¸ááźááˇáş ááťá˝ááşáŻááşááááŻááşáááŻááş archiver ááᯠááŽáá˝ááşáááŻááşáááşááźá
áşáááşá
á áŻá áŻááąáŤááşá¸á ááťá˝ááşáŻááşáááş ááťá˝ááşáŻááşáá ááşá¸áááşáážáŻááąááŹááž áážááşáááşá¸áá áşááŻááťážááş 3-4 bytes ááá˛áˇááźáŽá¸á ááťáŻáśáˇáážáŻáĄááťááŻá¸áááş 6:1 áááşáááŻááŤáááşá áááŻá¸áááŻá¸ááŹá¸ááŹá¸ááźáąáŹááááş ááŽáááŻááááşááťááŻá¸ááᯠááťá˝ááşááąáŹáş áááťážáąáŹáşáááˇáşááŹá¸ááŤáá°á¸á ááťá˝ááşááąáŹáˇáşáĄááźááşáĄáá 2:1 áááş áááŻááąáŹááşá¸áá˛áˇ áĄááŹá compression áááŻáĄááŻáśá¸ááźáŻááźááşá¸á áááŹá¸ááťážááá˛áˇááááşááźá áşááąááŤááźáŽá
áĄááŹáĄáŹá¸ááŻáśá¸áááş ááąáŹááşá¸áá˝ááşááąáŹáşáááşá¸ zlib (deflate) áááş áážáąá¸áááŻá¸áááşááąáŹá ááąáŹááşá¸áá˝ááşáááŻááşáááşááźáŽá¸ áĄáááşáááş ááąááşááŽááąáŹ ááááááşáážáŻáááŻááşáᏠáĄááşááááŻááŽáááşáá áşáᯠááźá áşááąáá˛ááźá áşáááşá ááťáŻáśáˇáááŹá¸ááąáŹ ááąááŹá áŽá¸ááźáąáŹááşá¸á ááąáŹááşááŻáśá¸ 32K ááᯠáĄááááŹááşáá áşááŻáĄááźá áş áááąáˇáĄááŻáśá¸ááźáŻááąáááşáá°ááąáŹáĄááťááşááᯠáááąáˇááąááşáá˝ááş áá°á¸áááşá¸ááŻáśááąáŤáşáááş (áááŻáááŻáááşáážáŹá áĄááťááŻáˇááąáŹááąááŹáááąáŹááşáááş áá˝ááşáá˛áˇááąáŹ 40K áá˝ááşáážááá˛áˇáááˇáş input stream áážááˇáş áĄáá˝ááşáááşáá°ááŤáá áááşá¸áááş áááşááśá ááááşá¸áááşá¸ááźááşá¸á áááşáááşááźá áşááźáŽá¸ ááááşáááˇáşáá˝ááşá¸áážáŻááᯠáááşáá˝ážááşá¸áááşáááŻááşááŤ)á ááąááşáááşááąáŹ ááąááşáᎠarchivers ááťáŹá¸áá˝ááş áĄááááŹááşáĄáá˝ááşáĄá áŹá¸ááᯠááŽáááŻáááŻááşáááŻááşáᲠááŽááŤáááŻááşááźááˇáş áááŻááşá¸ááŹááąáˇáážááááşá
áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇá ááąáŹáşáá˝ááşá¸áááŻááşááťáŹá¸á áĄááąá¸á áŹá¸ááŻááąááááᯠáááşáááşááŻááşááąáŹááşááźááŤá ááŻáˇá
áááŻáˇááąáŹááş bzip2 ááᯠá ááşá¸áááşáá˛áˇáááş (FLUSH áááŤáá˛á 100:1 ááŽá¸ááŤá¸ áĄáśáˇááźáá˝ááş ááááááşáážáŻáĄááťááŻá¸ááᯠááźááá˛áˇáááşááᯠááááááŤ)á Alasá FLUSH ááźááˇáş áááşá¸áááş áá°áˇáááŻááşáá° áĄáá˝ááşááśáˇááťááşá¸ááźáąáŹááşá¸ááźááá˛áˇááźáŽá¸á ááťáŻáśáˇááŹá¸ááąáŹááąááŹááĄáá˝ááşáĄá áŹá¸áááş ááťáŻáśáˇáááŹá¸ááąáŹáááŻááşáááş áááŻááźáŽá¸áááşá
ááťáážáŻáśá¸ááá˛áˇ áĄááźáąáŹááşá¸áááşá¸áá˛áˇ áááşáááşááźáŽá¸ ááťá˝ááşááąáŹáˇáşáá˛áˇ áááˇáşáážááşá¸ááťááş
Libbz2 áááş áĄááááŹááşááᯠflush ááŻááşááŹá¸ááŻáśááááş (zlib áá˝ááş Z_FULL_FLUSH áážááˇáş áá°ááŽááąáŹ) flush option áá áşááŻáᏠááąá¸á á˝ááşá¸ááąáŹááźáąáŹááˇáş áááşá¸ááąáŹááşááž ááááąáŹááşááąáŹ compression áĄááźáąáŹááşá¸ááᯠááźáąáŹá ááŹáĄááźáąáŹááşá¸ááážáááŤá
ááąáŹááşááŻáśá¸á ááşá¸áááşááááˇáşáĄááŹáážáŹ zstd ááźá áşáááşá áááˇáşáááşááťááşááťáŹá¸áĄááąáŤáşáá°áááşá áááşá¸áááş gzip áĄáááˇáşáá˝ááşááźá áşá áą ááááááşááŹá¸ááąáŹáşáááşá¸ áááŻáááŻááźááşáááşáááş áááŻáˇáááŻááş gzip áááş áááŻááąáŹááşá¸áááşá
ááśáááąáŹááşá¸á á˝áŹááźááˇáşá FLUSH ááźááˇáşáááşá¸áááş "ááááşáááąáŹááşá¸ááŤ" ááŻáááşá¸ááźááá˛áˇáááş- compressed data ááĄáá˝ááşáĄá áŹá¸áááş 700 KB áááˇáşááźá áşáááşá
ĐŻ github áážá áááąáŹááťááşá áŹááťááşáážáŹáá˝ááşá compressed data áááąáŹááşáá áşááŻá áŽáĄáá˝ááş áááşááąáŹááşáážáŻááąáᏠ10 bytes áĄáá ááąáá˝ááşáááťááŻá¸áááşááźáąáŹááşá¸ áĄááźáąááá˛áˇááźáŽá¸á ááážáááąáŹááááşááťáŹá¸áážááˇáş ááŽá¸á ááşááąáŹááźáąáŹááˇáş áááťáąááááşááźá áşáᏠáááŻááşááťáąáŹááŽáá˝áąáááźá áşáááŻááşááŤá
á¤áĄááťáááşáá˝ááş archivers ááťáŹá¸áážááˇáş á ááşá¸áááşááźááşá¸ááᯠáááşáááş ááŻáśá¸ááźááşáá˛áˇáááş (xz, lzip, lzo, lz4 áááş FLUSH áááŤáᲠá ááşá¸áááşáááˇáşáĄáááˇáşáá˝ááş áááşá¸áááŻáˇáááŻááşáá°áááŻáˇ áááźááąá¸ááźáąáŹááşá¸áážááˇáş áááŻáááŻáá°á¸ááźáŹá¸áááşá¸ááźáŹá¸ááąáŹ ááťáŻáśáˇáážáŻ algorithms ááťáŹá¸ááᯠáá ááşá¸á áŹá¸áá˛áˇááááŤ)á
ááááşá¸áááşá¸ááźááşá¸á ááźáżááŹááťáŹá¸ááᯠááźááşááźááˇáşááĄáąáŹááşá
ááŻááá (áá°áááŻáˇááźáąáŹáááᯠáĄááąá¸áááźáŽá¸ááŤáá°á¸) ááźáżááŹá áĄáááşáĄáááŻááşá¸áá˝áąááᯠáĄáááşáááźááş áááŻá¸ááŹá¸ááŹá¸áá˛áˇ Compressed data áá áşááŻáááşá¸á á áŽá¸ááźáąáŹááşá¸áá áşááŻááŤáá˛á áááŻáˇááźáąáŹááˇáşá compressed data á áĄáááŻááşá¸áĄááťááŻáˇ ááťááşá áŽá¸áá˝áŹá¸ááŤáá áááşá¸áážááˇáş áááşá ááşááąááąáŹ ááťáŻáśáˇáááŹá¸ááąáŹ data block ááťáŹá¸ááŹáá ááąáŹááşáááşáá˝á˛ áĄáŹá¸ááŻáśá¸áááŻá፠ááŻáśá¸áážáŻáśá¸áá˝áŹá¸ááŤáááşá
á¤ááźáżááŹáááŻááźáąáážááşá¸áááşáááşá¸áááşá¸ááťáŹá¸áážááááş-
- ááźáżááŹáááźá áşáá˝áŹá¸á áąáááş ááŹá¸ááŽá¸á፠- áĄáážáŹá¸ááťáŹá¸ááᯠáážáŹáá˝áąáá˝áąáˇáážáááźáŽá¸ ááźááşááąá¸áááŻááşáááş ááťáŻáśáˇááŹá¸ááąáŹááąááŹáá˝ááş áááşááąáŹááşá¸áááˇáşááŤá ááŽáĄááźáąáŹááşá¸ááᯠááąáŹááşáážááźáąáŹáááşá
- ááźáżááŹáá
áşááŻááźá
áşááąáŤáşááŹááŤá áĄááťááŻá¸áááşááťáŹá¸ááᯠááťážáąáŹáˇááťááŤá
ááąááŹáááąáŹááşáá áşááŻá áŽááᯠáĄáážáŽáĄáááŻáááşá¸á á˝áŹ ááťáŻáśáˇáááŻááşáááşáᯠááťá˝ááşáŻááşáááŻáˇááźáąáŹááŹá¸ááźáŽá¸ááŹá¸ááźá áşááźáŽá¸ ááźáżááŹá áá°áˇáĄáááŻááᯠááťáąáŹááşáá˝ááşáá˝áŹá¸ááááˇáşáááş (áááąáŹááşáá áşááŻáááąááŹááťááşá áŽá¸ááźááşá¸áááş á¤áááąáŹááşáá áşááŻáááşá¸áᏠááąááŹááŻáśá¸áážáŻáśá¸áá˝áŹá¸áááş)á áááŻáˇááąáŹáşá á¤áááşáážáŹ áá˝ááşáá˛ááąáŹááá ášá ááźá áşááźáŽá¸á ááąááŹááťáŻáśáˇááźááşá¸áážáŹ ááááąáŹááşáážáŻááážáááŤá áááˇáşááťááşáááşáá˝ááşáá˛- ááťá˝ááşáŻááşáááŻáˇáááťá áşááşá 4 MB áĄáŹá¸ááŻáśá¸ááᯠáá áşááŻáááşá¸ááąáŹ áážááşáááşá¸áĄááźá áş áĄááŻáśá¸ááźáŻááŤá áááşá¸áááş ááťá˝ááşáŻááşáááŻáˇáĄáŹá¸ áĄáá˝ááşááąáŹááşá¸áá˝ááşááąáŹ ááááááşáážáŻááᯠááąá¸á á˝ááşá¸áááŻááşááąáŹáşáááşá¸ ááąááŹááąáŹááşááźááşáážáŻáá˝ááş áááŻá¸áá˝áŹá¸ááąáŹáĄááťááŻá¸áááşááťáŹá¸ááźá áşáááşá
ááŻááşáá˛áˇá ááŻáśááźááşá áááşááťááážáŻáĄá áĄááąá¸áĄáá°áá áşááŻáááŻáááşá áááŻáˇááąáŹáş ááťá˝ááşáŻááşáááŻáˇáááş áĄáá˝ááşááááˇáşááťááąáŹ BER áážááˇáş ááąááŹáááŻáážáąáŹááşáážáŻáááşáááşá¸ááᯠáĄáážá áş 20 ááźááˇáş ááááşááźáááşááąáŹáážááşááŹááşáĄáá˝ááş ááąááŹáááŻáážáąáŹááşáážáŻááŻáśá áśááᯠááąáŹáşááąáŹááşááąááźáąáŹááşá¸ ááááááááşááźá áşáááşá
á
ááşá¸áááşáážáŻááťáŹá¸áĄáá˝ááşá¸ ááťáŻáśáˇáážáŻáĄáááˇáşáá˝ááş ááááŹáááşáážáŹá¸ááąáŹááŻáśá¸áážáŻáśá¸áážáŻááťáŹá¸ 10 KB áááşáááşá¸ááąáŹ ááťáŻáśáˇááŹá¸ááąáŹááąááŹááŻáśá¸ááťáŹá¸ááźááˇáş á
áááşáááşááᯠááťá˝ááşáŻááşáá˝áąáˇáážááá˛áˇáááşá
áĄá
áąáŹáááŻááşá¸áá˝ááş áĄááŻáśá¸ááźáŻáá˛áˇáááˇáş áááşáááŻááŽááᯠá
áŹááťááşáážáŹáá
áşááŻá
áŽáá˝ááş ááąáŹáşááźáá˛áˇááźáŽá¸á áááş "á
áŹááťááşáážáŹáá
áşááťááşáážáŹ - ááťáŻáśáˇááŹá¸ááąáŹááąááŹáá
áşááŻáśá¸" ááźáąááŻáśááᯠáĄááŻáśá¸áááźáŻáááˇáşáááˇáş áĄááźáąáŹááşá¸áááşá¸ááᯠááťá˝ááşáŻááşááá˝áąáˇááŤá
áááŻáááŻáááşáážáŹá áĄáááşá¸ááŻáśá¸ ááťááŻá¸ááźáąáŹááşá¸ááŽááťáąáŹáşááąáŹ á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸áážáŹ 16Kb (áááşááąáŹááşáážáŻáĄááťááşáĄáááşááťáŹá¸áĄáá˝ááş áĄááśáá áşááŻááŤ) ááźá áşáááşá áááŻáˇááąáŹáşá áááŻáá˛áˇáááŻáˇááąáŹ ááąá¸áááşááąáŹ á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸áááş áĄááźááˇáşááŻáśá¸á áśááťáááşáĄáá˝ááşáĄá áŹá¸áĄááąáŤáş ááááŹáááşáážáŹá¸ááąáŹ áááˇáşáááşááťááşááťáŹá¸ ááťáážááşááŹá¸áááşá
compressed form áážáŹ ááŽáááŻáááŻááşáĄáááşá¸áááşáááş áááŻááźáŽá¸áá˛áˇ áážááşáááşá¸áá˝áąáážááááŻáˇ áááťážáąáŹáşáááˇáşááŹá¸ááąáááˇáş 32K á áŹááťááşáážáŹáá˝áąááᯠááŻáśá¸áááŻáˇ ááŻáśá¸ááźááşáááŻááşáááş (áá áşááťááşááᯠ128 á áŹááťááşáážáŹ ááąá¸áááş)á
áĄáážá áşááťáŻááş:
- ááťá˝ááşáŻááşáááŻáˇáááş zlib (deflate);
- áááˇáşáá˝ááşá¸áážáŻáá áşááŻá áŽáĄáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş Z_SYNC_FLUSH ááᯠáááşáážááşáááşá
- ááťáŻáśáˇááŹá¸ááąáŹáážááşáááşá¸áá áşááŻá áŽáĄáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş ááąáŹááşáááŻááşáááŻááşááťáŹá¸ááᯠááťáŻáśáˇáááŻááşááŤáááşá (áĽááᏠ0x00á 0x00á 0xffá 0xff); ááąáŤááşá¸á áŽá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇ ááźááşááąáŹááşááŹá¸ááąáŹ áááŻááşáááşááťážáážááááşááᯠááąáŹáşááźáááşá
- ááąááŹááᯠ32Kb á áŹááťááşáážáŹááťáŹá¸áá˝ááş ááááşá¸áááşá¸ááŤáááşá á áŹááťááşáážáŹáá áşááŻá áŽáá˝ááş ááťáŻáśáˇááŹá¸ááąáŹááąááŹá áŽá¸ááźáąáŹááşá¸áá áşááŻá áŽááŤáážááááşá á áŹááťááşáážáŹáá áşááŻá áŽáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áĄáá áşáá áşáááş compression áááŻá áááşáááşá
compression ááźááˇáşáááźáŽá¸ááŽá áážááşáááşá¸áá áşááŻááťážááş compressed data ááťáŹá¸ááᯠbytes áĄáááşá¸áááşááŹááááŻááşáááşáá°ááąáŹáĄááťááşááᯠáĄáŹááŻáśá ááŻááşá áąáááŻáááşá áááŻáˇááźáąáŹááˇáş áááşááąáŹááşáážáŻáĄááťááşáĄáááşááťáŹá¸ááᯠáááŻá¸áááŹáĄáąáŹááşááźáŻááŻááşáááş áĄáá˝ááşáĄááąá¸ááźáŽá¸ááŤáááşá áá áşáááŻááşáááŻááşá¸áááş á¤ááąááŹáá˝ááş ááąáá˝ááşááŤáááşá
ááąáᏠááąáŤááşá¸á áŽá¸ááťáŹá¸ááᯠááááşá¸áááşá¸ááźááşá¸á
ááťá˝ááşáŻááşáááŻáˇáá˝ááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşáážááşáááşá¸ááťáŹá¸ áážáááąáŹááźáąáŹááˇáşá áážááşáááşá¸ááťáŹá¸á ááąááŹááťááŹá¸/áááşááááááşááťáŹá¸ááᯠáá áşáááşá¸áááşá¸ááźááˇáş ááŻáśá¸ááźááşáááş áááŻáĄááşááŤáááşá
ááťááşá¸áááşáážáŻ ááŻáśá¸ááŻááᯠááŤáááááşá
- áážááşáááşá¸áĄáŹá¸ááŻáśá¸ááᯠá
ááşáááşáááźááşá
áŽá¸ááźáąáŹááşá¸áá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáŽá¸ ááááĄááťáŹá¸ááŤáážáááąáŹ áážááşáááşá¸ááąáŤááşá¸á
áŽá¸á áááŻáˇááąáŹááş áážááşáááşá¸áááŻááşáááŻááş ááááşá¸áááşá¸ááŹá¸áááşá
á¤ááŹá¸áážááşá¸áá˝ááşá ááąáŤááşá¸á áŽá¸áážááˇáş ááąáᏠáážá áşááŻá ááŻáśá¸áááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşáážááááşá
áĄáážá áşááŹááĄáŹá¸ááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááťáááşáááŻááşá¸áĄááŻáśá¸ááźáŻááąáááˇáş áá áşááŻáááşá¸ááąáŹ ááťáááşáááşááŹá¸ááąáŹá áŹáááşá¸ááᯠááážáááŤáááşá - ááąáŤááşá¸á
áŽá¸ááťáŹá¸áážááˇáş áážááşáááşá¸ááťáŹá¸ááᯠáááşá¸áááŻáˇáááŻááşáááŻááş ááŽá¸ááźáŹá¸ááŻááşáá˝ážááˇáşáážáŻááťáŹá¸áá˝ááş ááááşá¸áááşá¸ááŹá¸áááşá
á ááşáááşáááźááş áĄáážááşáážáááąáŹ ááąáŤááşá¸á áŽá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáşá ááąáŤááşá¸á áŽá¸áá áşááŻá áĄááťááˇáşááťááşááźá áŹá¸áážáŻáááş áĄááźáŹá¸áĄááŹááťáŹá¸ááᯠááááááŻááşá áąááźáąáŹááşá¸ ááąááťáŹááŤáááşá
áĄááŹá¸áá°áááşá¸áááşá¸ááᯠáĽáááŹáĄáŹá¸ááźááˇáş áááŻááşá áá áşááťáŹá¸á á˝áŹáá˝ááş áĄááŻáśá¸ááźáŻáááşá - áážááşáááşá¸ááťáŹá¸ááᯠá
ááşáááşáááźááşá
áŽá¸ááźáąáŹááşá¸áá˝ááş ááááşá¸áááşá¸ááŹá¸ááźáŽá¸á áážááşáááşá¸áááşááááááşááᯠáĄáážááşáĄááŹá¸áĄááťááŻáˇ (ááąááŹáááąáŹááşááťáŹá¸áá˝ááş ááŹá¸ááźá
áşááŹá¸áááˇáş áááşášááąá/áĄá
áŽáĄá
áĽáşááťáŹá¸) ááž ááŻáśá¸ááźááşáááşá áážááşáááşá¸áá
áşááŻáĄáá˝ááşá¸ áĄáážááşáĄááŹá¸áá
áşááŻáá˝áąáˇááŤáá áááşá¸ááᯠáĄá
áŽáĄá
áĽáşáĄááťááŻáˇááźááˇáş áĄá
áŹá¸áááŻá¸áááş (ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠáá˝ááşáááşá¸áááş)á
áĄááŹá¸áá°ááťááşá¸áááşáááşá¸ááᯠáĽáááŹáĄáŹá¸ááźááˇáş PPP ááááŻáááŻááąáŹáá˝ááş áĄááŻáśá¸ááźáŻáááşá
áĽáááŹááąá¸ááŤáá áąá
Option ááᯠ1:

á¤áá˝ááşáĄááŹáĄáŹá¸ááŻáśá¸áááşáĄáá˝ááşáááŻá¸áážááşá¸ááŤáááş- áážááşáááşá¸ááĄáážááşáááŻááááźááşá¸ááźááˇáşááąáŹááşááąáŤááşá¸á
áŽá¸áááááşá
áŹáááŻáá˝ááşááťááşáááŻááşáááşá áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş 0xff (áĄááá˛áˇ á§ááááŹ) áááŻáˇáááŻááş á
áŹááťááşáážáŹááĄááŻáśá¸áá˝ááş ááźááˇáşááąáááˇáş á§ááááŹááᯠááá˝áąáˇáááťááşá¸ ááąáŤááşá¸á
áŽá¸ááťáŹá¸áážááááˇáş áá˝ážáąáˇááŤá
Option ááᯠ2:

áážááşáááşá¸á ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşááźáąáŹááˇáşá áá
áşááťááşáážáŹááťážááş áááşááťáž áážááşáááşá¸ááťáŹá¸ (áááŻáˇááźáąáŹááˇáş ááąáŤááşá¸á
áŽá¸ááťáŹá¸) áááŻáĄááşáááşááᯠááťá˝ááşáŻááşáááŻáˇ ááźááŻáááş áááźáąáŹáááŻááşááŤá ááąáŤááşá¸á
áŽá¸ááťáŹá¸áážááˇáş ááąááŹááťáŹá¸ááᯠááá°ááŽááąáŹ á
áŹááťááşáážáŹááťáŹá¸áá˝ááş áááşá¸áááŻáˇáááŻááşáááŻááş ááźááˇáşááąáááŻááşááąáŹáşáááşá¸ áĄááźáŹá¸áááşá¸áááşá¸ááᯠááťá˝ááşáŻááşáááŻáážá
áşáááşáááş- ááťá˝ááşáŻááşáááŻáˇáááş ááąáŤááşá¸á
áŽá¸ááťáŹá¸áážááˇáş ááąááŹááťáŹá¸ááᯠá
áŹááťááşáážáŹáá
áşááŻáááşá¸áá˝ááş ááŹá¸áážáááąáŹáşáááşá¸ ááąáŤááşá¸á
áŽá¸ááťáŹá¸ (ááááşá¸ááąáĄáá˝ááşáĄá
áŹá¸) áááş á
áŹááťááşáážáŹááĄá
ááž á
áááşáᏠááąáᏠ(áá˝á˛ááźáŹá¸áááŻááşááąáŹ áĄáážááş) áááş áĄááŻáśá¸ááž á
áááşááŤáááşá áá°áááŻáˇ âáá˝áąáˇááŻáśâ áááşáážááˇáş áááźááŻááşáááş (áážááşáááşá¸áĄáá
áşáĄáá˝ááş ááąááŹáá˝ááşáĄááŻáśáĄááąáŹááşááážáááŤ)á á¤á
áŹááťááşáážáŹááᯠááťá˝ááşáŻááşáááŻáˇ áĄááźááˇáşáĄáá
ááşá¸á
áŹá¸ááŤáááşá
Option ááᯠ3:

ááąáŤááşá¸á
áŽá¸áážá ááąááŹáááşááąááŹáážááˇáş áááşáááşááąáŹ áĄáážááş áááŻáˇáááŻááş áĄááźáŹá¸áĄááťááşáĄáááşááťáŹá¸ááᯠááááşá¸áááşá¸áááş ááááŻáĄááşááŤá áážááşáááşá¸ááťáŹá¸á áááşááááááşááťáŹá¸ááᯠáá˝ážááşááźáááˇáş áĄáážááşáĄááŹá¸ááťáŹá¸áááş ááŻáśááąáŹááşááŤáááşá áááŻáˇááąáŹáş á
áŹááąá¸/áááşáááˇáşáĄá፠ááąááŹááᯠá
áŽááśááąáŹááşáá˝ááşááááşá
áĄáážááşáĄááŹá¸áĄááźá
áş 0xff (á
áŹááťááşáážáŹááᯠááťááşááźáŽá¸ááąáŹááş ááźááˇáşááŹá¸áááş)á áááŻáˇááźáąáŹááˇáş áĄááá˛áˇá§ááááŹááᯠááąááŹáĄááźá
áş áážááşáá°áááşáááŻááşááŤá
áážááŻááşá¸áážááşáááŹá¸-
option ááᯠ1
option ááᯠ2
option ááᯠ3
áĄáážáŹá¸ááᯠáááşá¸ááśááŤá
-
+
+
ááááşáááşá¸á
+
-
+
áĄááąáŹááşáĄáááşááąáŹáşáážáŻáážáŻááşáá˝áąá¸
*
**
**
áá˝áąá¸ááťááşáážáŻ 1 áá˝ááş áááŻá¸áá˝áŹá¸ááąáŹ ááťááŻáˇáá˝ááşá¸ááťááşáá
áşáᯠáážááááş- ááąáŤááşá¸á
áŽá¸áá
áşáᯠááťááşá
áŽá¸ááŤá ááąáŹááşáááşáá˝á˛áá˝ááşá¸áááşáá
áşááŻááŻáśá¸ ááťááşá
áŽá¸áá˝áŹá¸áááşááźá
áşáááşá áĄááźáŹá¸áá˝áąá¸ááťááşáážáŻááťáŹá¸áááş áááˇáşáĄáŹá¸ ááźáŽá¸ááŹá¸ááąáŹááťááşá
áŽá¸ááŻáśá¸áážáŻáśá¸áážáŻáážááˇáşáááş ááąááŹááá
áşá
áááşáá
áşáááŻááşá¸ááᯠááźááşáááşááá°áááŻááşáááşá
áááŻáˇááąáŹáş á¤ááąááŹáá˝ááş ááąááŹááᯠááťáŻáśáˇááŹá¸ááąáŹááŻáśá
áśááźááˇáş ááááşá¸áááşá¸áááş ááŻáśá¸ááźááşáá˛áˇáááşááᯠáážááşááŹá¸áááş áááˇáşááťáąáŹáşááźáŽá¸ áááşáááŻáˇáááşááźá
áşá
áą âááťááŻá¸â á
áśááťáááşáááşááźáŽá¸ááąáŹááş á
áŹááťááşáážáŹááąáŤáşáážá ááąááŹáĄáŹá¸ááŻáśá¸ ááŻáśá¸áážáŻáśá¸áá˝áŹá¸ááąáŹááźáąáŹááˇáş áááŹá¸áá˝ááş áĄááŻááşááášáááŹáážáááąáŹáşáááşá¸ áááşá¸ááᯠáááˇáşáá˝ááşá¸á
ááşá¸á
áŹá¸áááşáááŻááşááŤá
ááťá áşáá áşáážáŻ-
- ááááá˝áąá¸ááťááşáážáŻáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş ááąáŤááşá¸á áŽá¸áá˝ááş áĄááťáŹá¸ááᯠááááşá¸áááşá¸áááşááŹáááŻáááşá áĄáááşá ááťá˝ááşáŻááşáááŻáˇáááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹáĄááťáŹá¸-ááááşá¸ááźááˇáşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤáá ááá ášá áĄááťáŹá¸á áŻáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áá áşáááŻááşááźááˇáş ááááŻááşáááşá
- ááŻááááá˝áąá¸ááťááşáážáŻáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş á áááşááááşá áŹáážááˇáş áĄáážááşááᯠááááşá¸áááşá¸áááş áááŻáĄááşáááşá áážááşáááşá¸áááş ááááşá¸ááąáĄáá˝ááşáĄá áŹá¸ááźá áşááááşá áážááşáááşá¸áá áşááŻááťážááş 4 bytes (áĄáąáŹáˇááşáááşáĄáá˝ááş áážá áşáááŻááşá áĄáážááşáĄáá˝ááş áážá áşáááŻááş)
- áááááá˝áąá¸ááťááşáážáŻáážáŹ áĄááśáá˝ááşá¸ááźááşá¸ááĄá ááᯠáá˝ážááşááźáááş ááŹááşááąáŹááşáá áşááŻáᏠáááŻáĄááşááźáŽá¸ á áá á áşááźááşá¸ááźáąáŹááˇáş áĄááśáá˝ááşá¸ááźááşá¸áááŻááşáááŻááş 1-2% áááŻá¸ááŹáááşááźá áşáááşá ááąááŻááťáĄáŹá¸ááźááˇáşá áááşá¸áááş ááááá˝áąá¸ááťááşáážáŻáážááˇáş áááşá¸áá°ááźá áşáááşá
áĄá áááąáŹáˇ ááŻááááá˝áąá¸ááťááşáážáŻááᯠáááşááá áşááŻáĄááźá áş áááşáážááşáá˛áˇáááş (áĄááąáŹááşáĄáááşááąáŹáşáážáŻáá áşááŻááąáŹááş ááąá¸áá˛áˇáááş)á ááąáŹááşááŻáśá¸ááąáŹáˇ Compression áááŻááŻáśá¸áááŻáˇ ááŻáśá¸ááźááşááźáŽá¸áážáᏠáĄá˛ááŤááᯠá á˝ááˇáşáá˝ážááşáá˛áˇáááşá
áá áşááąáˇááťáááş ááŽáááŻáá˝áąá¸ááťááşáážáŻááťááŻá¸ááᯠááťá˝ááşááąáŹáşááŻáśá¸áááŻááşááŤááááˇáşáááşá áĽáááŹáĄáŹá¸ááźááˇáşá áĄáááşá ááťá˝ááşáŻááşáááş ááášááŹáážááˇáş áĄááşášááŤááźááŻááşááźáŹá¸ áá˝áŹá¸ááŹááąááąáŹ áááşášááąáŹáĄáá˝ááş ááąááŹáááŻáážáąáŹááşáážáŻáážááˇáş áááşáááşáááťážááş - ááŻáśááźááşá áááşááťááážáŻá á ááźáŹáá áŹááąáŹááşááźááşáĄáá˝ááş áááŻáĄááşááťááşááťáŹá¸á ...
áááááá˝áąá¸ááťááşáá˝ááˇáşáĄáá˝ááşá áĄááąáŹááşáĄáááşááąáŹáşáážáŻá áážáŻááşáá˝áąá¸áážáŻáĄáá˝ááş ááźááşáážá áşáá˝ááˇáşááᯠááťá˝ááşáŻááşáááş ááźáąá¸áá˝ážáŹá¸ááźááşá¸á ááŻááşáááşá¸á ááşáá˝ááş áĄáážááşááźáąáŹááşá¸ááźááşá¸á áááşáááŻáˇááᯠáááźááŻááşááąáŹááźáąáŹááˇáş ááźááşáážá áşáá˝ááˇáşááᯠááąá¸áá˛áˇááŤáááşá ááŻááşáááşá áááşáááŻááşáážáŻááźá áşáááŻááşááąáááˇáş ááŻááşáááŻááąá¸áááŤááááˇáşáááş - áááŻááşáááźááŻááşáá˛áˇáĄááŹááᯠááŹááźáąáŹááˇáş áĄáááşá¸ááŻááşáááŻááşá¸ááŹáá˛á
áĄáážá áşááťáŻááş: áááşá¸áááááąáŹááşáážáŻáážááˇáş áĄááąáŹááşáĄáááşááąáŹáşááá˝ááşáá°áážáŻááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş âáĄááťáŹá¸áážááˇáş ááąáŤááşá¸á áŽá¸-ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşááąááŹâ áá˝ááşá¸áááşááťáŹá¸ááŻáśá áś áááŻáážáąáŹááşáážáŻáá˝áąá¸ááťááşáážáŻááᯠáá˝áąá¸ááťááşááŤáááşá
á áŹááąá¸ááźááşá¸ááŻááşáááşá¸áĄáąáŹááşááźááşáážáŻááᯠá áąáŹááˇáşááźááˇáşáááş áá áşáĄáá˝ááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááźááşá¸á
áĄááźáśáĄá
ááşááᯠáááşáááá˛áˇááŹáá˛áááŻáᏠáĄááŻááž ááážááşááááąáŹáˇááąáááˇáş ááŤá ááŽáááŻááťááŻá¸ áá˝áąáˇááááşá
áááˇáşáá˝ááşá¸áážáŻáá
áşááŻá
áŽáĄáá˝ááşá ááťá˝ááşáŻááşáááŻáˇáááş áĄááśááťáŹá¸áááŻááááşá¸áááşá¸áááş áá
áşááťáŹá¸á
á˝áŹááᯠáá˝á˛ááąááąá¸ááŤáááşá
áĄá
áąáŹáááŻááşá¸áá˝ááş ááťá˝ááşáŻááşáááŻáˇááźáąáŹáá˛áˇáááˇáşáĄáááŻááşá¸á ááťááşááźáŽá¸ááąáŹááş bits áĄáŹá¸ááŻáśá¸ááᯠ1 áážááˇáşááźááˇáşááźáŽá¸ 1 ááž 0 áááŻáˇááźáąáŹááşá¸áááŻááşááąáŹáşáááşá¸ áĄááźááşáĄáážááşáááźáąáŹááşá¸ááŤá ááŤááźáąáŹááˇáş "flag not set" áĄáá˝ááş 1á "flag set" - 0 ááᯠááŻáśá¸ááŤáááşá
á¤áĄááŹáááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşáážááşáááşá¸ááᯠflash áá˝ááş áááˇáşáá˝ááşá¸ááźááşá¸áá˛áˇáááŻáˇ ááźá áşáááŻááşááŤáááşá
- "áĄáážááşáážááşáááşá¸áááşááźááşá¸á áááşáááş" áĄááśáááŻáááşáážááşááŤá
- áĄáážááşááᯠááťááąá¸ááŤá
- âááąááŹáážááşáááşá¸áááşááźááşá¸ á áááşááźáŽâ áĄááśááᯠáááşáážááşááŤá
- ááŤáááŻáˇáááşááąááŹáááŻááąá¸;
- ááťá˝ááşáŻááşáááŻáˇáááş "áážááşáááşá¸áááşááźááşá¸ááźáŽá¸ááŻáśá¸áááş" ááŻáĄááśáááşáážááşááŹá¸áááşá
áááŻáˇáĄááźááşá á áŻá áŻááąáŤááşá¸áá áşáĄááś 4 ááŻáĄáá˝ááş "áĄáážáŹá¸áá áşááŻááźá áşáá˝áŹá¸áá˛áˇáááş" áĄááśáá áşááŻáážááááşá
á¤áĄááźáąáĄááąáá˝ááş ááťá˝ááşáŻááşáááŻáˇáá˝ááş â1111â áááşááźáááşááąáŹááźááşáááşáážá áşááŻáážááááş â áĄááśáá˝ááşá¸ááźááşá¸áá áááşááąá¸áᲠâ1000â â áážááşáááşá¸áááşááźááşá¸áĄáąáŹááşááźááşááŤáááşá áážááşáááşá¸áááşááźááşá¸ááŻááşáááşá¸á ááşá áááťážáąáŹáşáááˇáşáᲠááźááşááąáŹááşáá˝áŹá¸ááąáŹáĄááŤáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş áĄáááşáĄáááşááźááşáááşááťáŹá¸ááᯠáážáŹáá˝áąáá˝áąáˇáážááááŻááşááźáŽá¸ ááąáŹááşáááŻááşá¸áá˝ááş ááŻááşááąáŹááşáááŻááşáááşááźá áşáááşá
ááťááşá¸áááşáážáŻáááş á áááşáááşá áŹá¸á ááŹááąáŹááşá¸áááşá áááŻáˇááąáŹáş áááşá¸áááş ááŻááşááááş ááŹááşáĄáŹá¸ááźááşááąáŹááşáážáŻáážááˇáş áĄááŹá¸áá°ááťáážáŻáśá¸áážáŻááťáŹá¸áááŻáᏠááŹáá˝ááşááąá¸áááşá áááşá¸áááş áĄááąá¸ááźáŽá¸áááşá áááŻáˇááąáŹáş áááşá¸áááş ááźá áşáááŻááşááťáąáážáááąáŹ ááŻáśá¸áážáŻáśá¸áážáŻááťáŹá¸áĄáá˝ááş áá áşááŻáááşá¸ááąáŹ (áĄááááĄááźáąáŹááşá¸áááşá¸áááŻááş) áážááˇáş ááąá¸ááŤáááşá
áĄáážá áşááťáŻááş: áĄááźáąááąáŹááşá¸ááᯠáážáŹááźááˇáşááĄáąáŹááşá
áá˝áąá áŹáááşá¸ááťáŹá¸
Checksums áááş ááťá˝ááşáŻááşáááŻáˇ ááąá¸ááŹá¸áááşááᯠáĄáááĄááťáááşááąáááş (ááťááŻá¸ááźáąáŹááşá¸ááŽááťáąáŹáş ááźá áşáááŻááşááźáąáážáááąáŹ) ááᯠáĄáááşááźáŻáááş áááşá¸áááşá¸áááŻáááşá¸ ááąá¸ááŤáááşá áĄáááşáá˝ááş áá˝áąá¸áá˝áąá¸ááŹá¸ááąáŹ áááşáááşááťáŹá¸áážááˇáş ááá°áá˛á áááşá¸áááŻáˇáááş áĄááźá˛áááşá¸ áĄááŻááşááŻááşááŤáááşá
áĄáááşáá˝ááş áá˝áąá¸áá˝áąá¸áá˛áˇáááˇáş ááźáżááŹááťáŹá¸á ááźá áşáááŻááşááźáąáĄáááşá¸áĄááźá áşááťáŹá¸á áŹáááşá¸ááᯠááŻáśá¸áááşááŤáá checksum áááş áááşá¸áááŹá áşááźá áşááᯠááá˝á˛ááźáŹá¸áᲠáĄáážáŹá¸áá áşááŻááᯠáĄáááĄáážááşááźáŻáááŻááşáááşá (ááźá áşááąáŹááşá¸ááźá áşáááŻááşá áááąáŹááşá¸ááąáŹááźááŻááşááŹá¸ááťáŹá¸áážáá˝á˛á - áá°áááŻáˇáááş checksum áááŻáááşá¸áĄááŻáá°áááŻááşáááş).
áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇááááşáážááşá¸ááťááşáááş ááąááŹááááŻáĄáááŻááşá¸ááźá áşááźáąáŹááşá¸ á á áşááąá¸áááşááźá áşááŤáá checksums áááş ááąáŹááşá¸áá˝ááşááąáŹáĄááźáśáĽáŹááşáá áşááŻááźá áşáááşá
checksum áá˝ááşááťááşááźááşá¸áĄáá˝ááş algorithm ááá˝áąá¸ááťááşáážáŻáááş áááşáááˇáşááąá¸áá˝ááşá¸ááž áááąáŤáşááąáŤááşáá˛áˇá፠- CRCá áá
áşáááşáá˝ááşá áááşášááťáŹááŻááşááášááááťáŹá¸áááş áĄááťááŻáˇááąáŹáĄááťááŻá¸áĄá
áŹá¸ááťáŹá¸á áĄáážáŹá¸ááťáŹá¸ááᯠ100% áááşá¸áá°áááŻááşá
áąáááşá áĄááźáŹá¸áá
áşáááşáá˝ááş - ááťáááşá¸ááąááŹáá˝áẠᤠalgorithm áááş ááťáŹá¸ááąáŹáĄáŹá¸ááźááˇáş ááŽáĄááŻááŽáááˇáşáááşááťááşáááş ááťáŹá¸á
á˝áŹáááźááˇáşááŹá¸áᲠáááŻááşáááážáŻááźá
áşáááŻááşááźáąááᯠááźáááş
. áááşá¸áááş áĄááťááşááźááşááŻáśá¸ áĄááşááááŻááŽáááşáááŻááşááŤá áááşá¸áááş áĄááźá˛áááşá¸ áááŻááşáááážáŻ áĄáááşá¸ááŻáśá¸ááźá
áşáááŻááşááąáŹáşáááşá¸ áááşá¸áá˝ááş áĄáá˝ááşáĄááąá¸ááźáŽá¸ááąáŹ áĄáááşáĄáá˝áąá¸áá
áşáᯠáážááááş- ááťá˝ááşáŻááşááźáŻáśáá˝áąáˇáá˛áˇáááąáŹ á
ááşá¸áááşáážáŻááťáŹá¸áá˝ááş ááźááşááźááşááŹá¸ááŹá¸ ááťáážáŻáśá¸áááˇáşááŻáśá
áśááťáŹá¸ ááážááá˛áˇááŤá á¤ááá
ášá
áá˝ááş áááşááźáááşáážáŻáááş áĄááá áĄáááşáĄáá˝áąá¸ááźá
áşáááşá
volumetric ááąáˇááŹáážáŻá áĽáááŹ- , (narod.ru áááŻáˇáááˇáşááşááťáŹá¸á ááąáŹááşá¸áááşááŤáááş).
áááŻáˇááąáŹáşá checksum áááŻáá˝áąá¸ááťááşááźááşá¸áááŹáááşáááşáááźáŽá¸ááąá¸ááŤá CRC áááş checksums ááááŹá¸á áŻáá áşááŻááźá áşáááşá áĄáážááşááᯠááŻáśá¸ááźááşááźáŽá¸ ááááşá¸ááááşá¸áá áşááŻááᯠáá˝áąá¸ááťááşááŤá
checksum áĄáážááşáááŻáá˝áąá¸ááťááşááźááşá¸áááş ááááá áşááťááşáá˝ááş áááşáááá˛áˇáááŻáˇ áááŻá¸áážááşá¸ááąáŹááąá¸áá˝ááşá¸áááŻááşááŤá
áĽáááŹááąá¸ááŤáá
áąá
byte áá
áşááŻá
áŽáá˝ááş error ááźá
áşáááŻááşááźáąáážáááźááŤá
ááŻáˇ
áážááˇáş á
áśááź checksum áááş áážááşáááşá¸ááąáŤááşá¸ áááşá¸áá
áşááąáŹááşááťážááş ááťááşá¸ááťážáĄáážáŹá¸áĄáá˝ááşá¸ áĄááąáĄáá˝ááşááᯠáá˝ááşááťááşáááş-
ááąááŹá áááŻááş
Checksumá byte
ááááááŻááşááąáŹ áĄáážáŹá¸ááťáŹá¸
áážáŹá¸áá˝ááşá¸ááąáŹ áĄááźáŻáááąáŹááąáŹááşááąáŹ áĄáážáŹá¸áážáŹáá˝áąáážáŻááťáŹá¸
áážáŹá¸áá˝ááşá¸ááąáŹ ááŻáśáˇááźááşáážáŻ á
áŻá
áŻááąáŤááşá¸ áĄááąáĄáá˝ááş
1
0
1000
0
1000
1
1
4
999
1003
1
2
0
1997
1997
1
4
0
3990
3990
10
0
9955
0
9955
10
1
39
990
1029
10
2
0
1979
1979
10
4
0
3954
3954
1000
0
632305
0
632305
1000
1
2470
368
2838
1000
2
10
735
745
1000
4
0
1469
1469
áĄááŹáĄáŹá¸ááŻáśá¸áááŻá¸áážááşá¸ááŻáśááááş - ááŹáá˝ááşááŹá¸ááąáŹááąááŹáááźáŹááťáááşááąáŤáşáá°áááşá áážáŹá¸áá˝ááşá¸ááąáŹáĄááťááşááťáŹá¸áĄáááşá¸ááŻáśá¸ááźááˇáş checksum ááĄáážááşáááŻáá˝áąá¸ááťááşá፠- ááźáŽá¸ááŤááźáŽá
áááŻáˇááąáŹáşá áááŻááąáŹááşá¸ááąáŹ checksums ááťáŹá¸áá˝ááş ááźáżááŹáá áşááŻáážááááş- áááşá¸áááŻáˇáááş áá áşááŻáááşá¸ááąáŹ bit error ááťáŹá¸áááŻáážáŹáá˝áąááŹáá˝ááş ááąáŹááşá¸áá˝ááşááąáŹáşáááşá¸á áááşá¸áááŻáˇáááş áĄáá˝ááşááźááˇáşááŹá¸ááąáŹááźá áşáááŻááşááźáąááźááˇáş ááŻáśá¸ááŻáśá¸ááťáááşá¸ááąááŹááᯠáĄáážááşáĄáááŻááşá¸áááşááśáááŻááşáááşá Habr áá˝ááş ááąáŹáşááźáááˇáş ááąáŹááşá¸ááŤá¸áá áşááŻááş áážááážááˇáşááźáŽá¸ááźá áşáááşá .
áááŻáˇááźáąáŹááˇáşá ááťáááşá¸ checksum áááş áááźá áşáááŻááşáááąáŹááş áááŻááşááŽá áąáááşá 32 bits áááŻáˇáááŻááş áááŻáááşáááŻááąáŹ checksums ááᯠáĄááŻáśá¸ááźáŻáááˇáşáááşá (64 bits áááşááźáŽá¸ááąáŹ áĄáážááşáĄáá˝ááşá cryptographic hash ááŻááşááąáŹááşááťááşááťáŹá¸ááᯠáĄááťáŹá¸áĄáŹá¸ááźááˇáş áĄááŻáśá¸ááźáŻáááş).
ááŻááşááťá ááááşáĄáŹá¸ááŻáśá¸áĄáá˝ááş ááąááŹááťá˝áąááŹáááŻáˇáááŻáááşáááŻáˇ á áąáŹá áąáŹáááąá¸áá˛áˇááąáá˛áˇá 32-bit checksum (16 bits á áááŻáśááąáŹááşáá°á¸á áááŻááşáááážáŻááźá áşáááŻááşááźáąá 0.01% áááş áááŻááťáŹá¸áááşá áá°áááŻáˇááźáąáŹáááᯠ24 bits á ááŽáážáŹááąáŹ áááŻáážáŹááąáŹ ááážááá°á¸)á
á¤ááąááŹáá˝ááş áááˇáşáá˝ááşáážáŻáá áşáᯠááźá áşááąáŤáşááŹáááŻááşáááş- ááᯠ4 bytes ááᯠáá áşááźááŻááşáááş ááąá¸áááŻááşáááş compression ááᯠáá˝áąá¸ááťááşááŹáá˝ááş áááŻááşáááŻááşá¸ááᯠááááşá¸áááşá¸ááŹá¸ááŤáááŹá¸á ááťáŻáśáˇááźáŽá¸ ááťááşáááşááááˇáşáᏠáááŻááąáŹááşá¸áážáŹ áááŻááşáá°á¸ááŹá¸á áážáááşáážáŻááážáááŹááąáŹáˇ áááŻááşááŤáá°á¸á ááááŻáááŻááŤááááŹááá á áşááąá¸áááş ááááŻáĄááşááŤá
polynomial áá
áşááŻááᯠáá˝áąá¸ááťááşáááˇáşáĄá፠ááŽá¸ááᯠááźááşáááşáá˝ááşá¸ááśáááşáááŻááşááąáŹáşáááşá¸ áááŻáá°ááźááŻááşááťáŹá¸ááąáŹ CRC-32C ááᯠáá°ááŤáááşá
á¤ááŻááşáááş 6 bytes áĄáá packet ááťáŹá¸áá˝ááş 22 bit áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ (ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááş áĄááźá
áşááťáŹá¸ááŻáśá¸ ááźá
áşááąáŹááşá¸ááźá
áşáááŻááşáááş)á 4 bytes áĄáá packet ááťáŹá¸áá˝ááş 655 bit áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ (ááťá˝ááşáŻááşáááŻáˇáĄáá˝ááşáááşá¸ ááźá
áşáááŻá¸ááźá
áşá
ááşáá
áşááŻ)á ááťááŻá¸ááźáąáŹááşá¸ááŽááťáąáŹáşááąáŹ áĄáážááşáážá packets ááťáŹá¸áá˝ááş odd number of bit áĄáážáŹá¸áĄáá˝ááşá¸ 2 áᯠáááŻáˇáááŻááş odd number of bit error áá
áşááŻááŻááᯠá¤ááŻááşá áá˝áąáˇáážáááŤáááşá
áĄááąá¸á áááşááᯠá áááşáááşá áŹá¸áá°áážááááş
CRC áĄááźáąáŹááşá¸á
áĄááąáŤáş - ááášááŹááąáŤáşáážá ááááşáááşá¸ CRC ááťá˝ááşá¸ááťááşáá°ááźá áşáááŻááşáááşá
Đ ááźá áş ááťá˝ááşáŻááşáááŻáˇáážááˇáşáááşáááŻááşáááˇáş áááşáááşáĄáážááşááťáŹá¸áĄáá˝ááş áĄáááşá¸áááşáááŻááąáŹááşá¸ááąáŹ ááąáŹááşááťáŹá¸ááᯠááśáˇáááŻá¸ááąá¸ááąáŹá áááŻáˇááąáŹáş ááźáŹá¸ááŹá¸ááťááşááᯠááááŹáááşáážáŹá¸á á˝áŹ áá ááşá¸á áŹá¸áá˛áˇáá˛á á áśáážáŻááşá¸áážááˇáş ááąáŹááşá¸áá˝ááşá á˝áŹ ááŻááąááááźáŻááŹá¸áááˇáş á áśáážáŻááşá¸áĄá áŹá¸ á áááşááźááŻááşááŻááşááᯠáá˝áąá¸ááťááşáááş ááŻáśááąáŹááşááąáŹ áĄáááşáĄááťááşá¸ááážááᯠááťá˝ááşááąáŹáş ááá°ááá˛áˇááŤá
ááťá˝ááşáŻááşáááŻáˇáááąááŹááᯠááťáŻáśáˇááŹá¸ááąáŹááźáąáŹááˇáş ááąá¸áá˝ááşá¸ááąáŤáşááŹáááş- ááťá˝ááşáŻááşáááŻáˇáááş ááťáŻáśáˇááŹá¸ááąáŹ áááŻáˇáááŻááş ááťáŻáśáˇáááŹá¸ááąáŹááąááŹá checksum ááᯠáá˝ááşááťááşáááˇáşááŤáááŹá¸á
ááťáŻáśáˇáááŹá¸ááąáŹááąááŹá checksum ááᯠáá˝ááşááťááşáááş áĄááźáąáŹááşá¸ááźááťááşááťáŹá¸-
- ááťá˝ááşáŻááşáááŻáˇáááş ááąáŹááşááŻáśá¸áá˝ááş ááąááŹááááşá¸áááşá¸ááźááşá¸á ááąá¸áááşá¸áážáŻááᯠá á áşááąá¸áááş áááŻáĄááşáááş - áááŻáˇááźáąáŹááˇáş ááťá˝ááşáŻááşáááŻáˇáááş áááşá¸ááᯠáááŻááşáááŻááşá á áşááąá¸ááźááşá¸ (áá áşááťáááşáááşá¸áá˝ááşá ááááááşáážáŻ/ááťáŻáśáˇááťá˛áˇááźááşá¸á áĄááąáŹááşáĄáááşááąáŹáşáážáŻáá˝ááş ááźá áşáááŻááşááąáŹ áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸á áááąáŹááşá¸áá˛áˇ áážááşááŹááşááźáąáŹááˇáş ááťááşá áŽá¸ááźááşá¸ á áááşááźááˇáş á á áşááąá¸áá˝áŹá¸ááŤáááş)á
- zlib áážá deflate algorithm áááş áĄááąáŹáşáĄáááş áááˇáşááťááşááąáŹ áĄááąáŹááşáĄáááşááąáŹáşáážáŻáážááˇáş áážáááŤáááşá áááąá¸áááşáˇááŤáááş "ááąáŹááşáá˝áąá¸ááąáŹ" áááˇáşáá˝ááşá¸áážáŻááąááŹáážááˇáşáĄáá° ááťáááşá¸áá˝áŹá¸áááşá áááŻáˇáĄááźááşá áááşá¸áááş áááźáŹáááááŻáááᯠinput stream áá˝ááş áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ááᯠááŽá¸ááźáŹá¸áážáŹáá˝áąáá˝áąáˇáážááááŻááşááźáŽá¸ áĄáážáŹá¸áá áşááŻáĄáŹá¸ ááąáŹáşááŻááşááźááşá¸á áĄááŻáśá¸á áŻáśááźá áşáááŻááşááźáąááᯠááťážáąáŹáˇááťáááŻááşáááş (ááťá˝ááşááąáŹáşáááş áážááşáááşá¸áááŻáá áşááŻáĄáá˝ááşá¸ áá áşáá áşááŻá ááźáąáŹááşá¸ááźááşáážááşáážáŻááźááˇáş á ááşá¸áááşáážáŻáá áşááŻááᯠááźáŻááŻááşáá˛áˇááźáŽá¸á zlib áááş ááźá áşáááşááťáŹá¸á ááŻáśá¸ááŻáśáá áşááŻáśáááˇáşáá˝ááş áĄáážáŹá¸áá áşááŻáá˝áąáˇáážááá˛áˇáááş)á
ááťáŻáśáˇáááŹá¸ááąáŹ ááąááŹááťáŹá¸á checksum ááᯠáá˝ááşááťááşááźááşá¸áĄááąáŤáş ááźááşá¸ááŻáśááťááşááťáŹá¸-
- CRC áááş flash memory áĄáá˝ááş ááŻáśáážááşááźá áşááąáŹ bit error áĄáááşá¸áááşáĄáá˝ááş ááŽá¸áááˇáşááźá áşáááş ( compressed stream áá˝ááş bit error áááş output stream áá˝ááş ááźáŽá¸ááŹá¸ááąáŹááźáąáŹááşá¸áá˛áážáŻááźá áşá áąáááŻááşááźáŽá¸á ááŽáĄááŻááŽáááşáááşááźááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş collision áááŻáááşá¸áááŻááşáááş)
- ááťááşáá˝áŹá¸áááŻááşáá˛áˇ data áá˝áąááᯠdecompressor áážáŹ ááťá˝áąá¸áᏠáááźááŻááşáá°á¸á áá°áááşáááŻááŻáśáˇááźááşááá˛á
á¤áááąáŹááťááşáá˝ááş ááťá˝ááşáŻááşáááş ááťáŻáśáˇáááŹá¸ááąáŹ ááąáᏠááťááşáááşáážááşááᯠááááşá¸áááşá¸ááźááşá¸á ááŻáśáĄááąáˇáĄáááž áááşáá˝áŹáááş ááŻáśá¸ááźááşáá˛áˇáááşá
áĄáážá áşááťáŻááş: ááťá˝ááşáŻááşáááŻáˇáááş CRC-32C áááŻáĄááŻáśá¸ááźáŻáááşá áááşá¸áááŻáˇááᯠflash áááŻáˇááąá¸ááŹá¸ááŹá¸ááąáŹááŻáśá áś (ááťáŻáśáˇááźáŽá¸ááąáŹááş) ááąááŹááž checksum áááŻáá˝ááşááťááşáááşá
áááŻááťáŹá¸ááźááşá¸á
ááááŻáĄááşááąáŹ coding áááŻáĄááŻáśá¸ááźáŻááźááşá¸áááş ááąááŹááŻáśá¸áážáŻáśá¸áážáŻááᯠáááşáážáŹá¸ááąá¸áááşáááŻááşááąá áááŻáˇááąáŹáşáááşá¸á áááşá¸áááş ááźááşáááşááźáŻááźááşáááááąáŹ ááąááŹááŻáśá¸áážáŻáśá¸áážáŻ ááźá áşáááŻááşááźáąááᯠ(áááźáŹáá ááźááşá¸áĄáŹá¸ááťáŹá¸á á˝áŹááźááˇáş) ááááááŹáᏠááťážáąáŹáˇááťáááŻááşáááşá
áĄáážáŹá¸ááťáŹá¸áááŻááźááşáááş áá˝á˛ááźáŹá¸ááąáŹ áááşááąááąáŹáĄááťááŻá¸áĄá
áŹá¸ááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻáááŻááşáááşá
Hamming ááŻááşááťáŹá¸áááş áá
áşááŻáááşá¸ááąáŹ áĄáážáŹá¸ááťáŹá¸ááᯠááźááşááąá¸áááŻááşáááşá Reed-Solomon ááŻááşááťáŹá¸áááş áááşášááąáááťáŹá¸á checksums ááťáŹá¸áážááˇáşáĄáá° ááąááŹáááášáá°ááťáŹá¸á
á˝áŹá áááŻáˇáááŻááş RAID-6 áá˛áˇáááŻáˇ ááŻááşááśááŤááşááťáŹá¸áááş ááźáŽá¸ááŹá¸ááąáŹ áĄááťááˇáşááťááşááźá
áŹá¸áážáŻááźá
áşáá˝áŹá¸áááˇáşáááŻááş ááąááŹááźááşáááşááá°áááş áá°ááŽááąá¸áááŻááşááŤáááşá
áĄá
áááŻááşá¸áážáŹááąáŹáˇ error-correcting coding ááᯠáá˝ááşáá˝ááşááťááşááťááş áĄááŻáśá¸ááźáŻááąáá˛áˇáááşá ááŤááąáááˇáş áĄáážáŹá¸áĄáá˝ááşá¸áá˝áąááᯠááŹáá˝ááşáááŻáá˛áˇ áĄááźáśáĽáŹááşáá
áşááŻáážááááŻáˇ áááŻáĄááşááźáŽá¸ coding ááᯠáá˝áąá¸ááťááşáááŻáˇ áááŻáĄááşáááşáááŻááŹááᯠáĄá
áááąáŹáˇ ááŹá¸áááşáá˛áˇááŤáááşá
áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ááᯠáááşáááŻááşáááťáž áĄááźááşááąáŹáşááŻááşáááş áááŻáĄááşááźáąáŹááşá¸ áĄá áąáŹáááŻááşá¸áá˝ááş ááźáąáŹááźáŹá¸áá˛áˇááŤáááşá áááşáĄááťááşáá˝áąáážáŹ áĄáážáŹá¸áĄáá˝ááşá¸áá˝áą ááźáŻáśááááŻááşááá˛á
- áááźáŽá¸ááŻáśá¸ááąá¸ááąáŹ áĄááśáá˝ááşá¸ááźááşá¸ (áĄááźáąáŹááşá¸áá
áşááŻááŻááźáąáŹááˇáşá áááŻááşáá°á¸ááąá
ááş ááŤááŤááźááşáá˝áŹá¸áááşá Raspberry áĄáąá¸áá˛áá˝áŹá¸áááşá ...)
ááśáááąáŹááşá¸á á˝áŹáá˛á áááŻáá˛áˇáááŻáˇááąáŹ áĄáážáŹá¸áĄáá˝ááşá¸áá áşááŻáĄáá˝ááşá áá áşááŻáááşá¸ááąáŹáá˝áąá¸ááťááşáážáŻáááş ááážááşáááşááąáŹáážááşáááşá¸ááťáŹá¸ááᯠááťá áşááťá°áážáŻááźáŽá¸ ááťáąáŹááşááŻáśá¸áá˝áŹá¸ááąáŹááąááŹááᯠáááˇáşáá˝ááşá¸á ááşá¸á áŹá¸áááşááźá áşáááşá - áĄáážáŹá¸ááťáŹá¸ ááąá¸á፠(áĄááźáąáŹááşá¸áá
áşááŻááŻááźáąáŹááˇáşá ááąá¸ááŹá¸áááˇáşáĄááŹáážáá˝á˛á áĄááźáŹá¸áá
áşááŻááŻááᯠflash memory áááŻáˇ ááąá¸ááŹá¸áááş)
áážááşáááşá¸áááşááźáŽá¸ááźáŽá¸ááťááşá¸ ááááşá¸ááťáŻááşáááşáážáŻááźááşá¸ááᯠááŻááşááąáŹááşááŤá áááŻáá˛áˇáááŻáˇááąáŹ áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸ááᯠááťááşááťááşá¸áááážááááŻááşáááşááźá áşáááşá - ááááşá¸áááşá¸á ááşáĄáá˝ááşá¸ áážááşááŹááşáá˛áá˝ááş ááąááŹááťááşá áŽá¸ááźááşá¸á
- á
áŹáááşááźááşá¸áĄáážáŹá¸ááťáŹá¸
áĄáážáŹá¸áááŻááźááşáááşá checksum áážááˇáşááááŻááşááŽááŤáá áĄááźáááşááťáŹá¸á á˝áŹááźááşáááşáááşááŻáśááąáŹááşáááşá
áááŻáááŻáááşáážáŹá áááááĄááťááŻá¸áĄá áŹá¸á áĄáážáŹá¸ááťáŹá¸ (áááŻáážáąáŹááşáážáŻáĄáá˝ááşá¸ ááąááŹááťáŹá¸ áĄáááŻáĄááťáąáŹááş ááąáŹááşááźááşááźááşá¸) áááş error-correct coding áááŤáᲠááźáŻááźááşáááááŤá áááŻáááŻáˇááąáŹ áĄáážáŹá¸ááťáŹá¸áááş áĄáá˝ááşááźá áşáááŻááşááťáąáážááááşáᯠáááşááźááşááŤáááşá
áĄáážá áşááťáŻááş: ááááŻáĄááşááąáŹ coding ááᯠá á˝ááˇáşáá˝ážááşáááş ááŻáśá¸ááźááşáá˛áˇáááşá áááŻáˇááąáŹáş ááŻááşááąáŹááşááťááşáááş á¤ááŻáśá¸ááźááşááťááşá áážáŹá¸áá˝ááşá¸áážáŻááᯠááźáááŤá ááźáżááŹááᯠááŻáśá¸áááşááźááşá¸áááŻáˇ ááźááşáá˝áŹá¸áááş (áĄááąáŹááşá¸ááŻáśá¸ááąáŹ coding áĄááťááŻá¸áĄá áŹá¸ááᯠáá˝áąá¸ááťááşáá˝ááˇáşááźáŻáááˇáş ááťááşáá˝ááşáážáŻááťáŹá¸áááŻááşáᏠááááşá¸ááááşá¸ááťáŹá¸ á áŻá ááşá¸ááŹá¸ááźáŽá¸ááźá áşáááş)á
ĐŃĐžŃоо
ááŻááşááŤáááşá ááąáŹááşá¸ááŤá¸áááąáŹáşáááşáááş ááąáŹáşáááşáážá bit áááŻááşá¸ááᯠáááŹá¸ááťážáá áąáááş áá˝ááˇáşáááźáŻááŤá (á፠áá˝ááşáĄáŹá¸áá˝áą ááŻááşááąááźáŽ)ááŤááźáąáŹááˇáş á áąáŹá áąáŹá ááááááá˛áˇ áĄááťááşáááťááŻáˇááᯠáĄááťááşá¸ááťáŻáśá¸ááźáŽá¸ ááźáąáŹááźááŤáááşá
- á
áŹááťááşáážáŹáĄáŹá¸ááŻáśá¸ááᯠ"áááşá¸áá°" ááŻááşáááş ááŻáśá¸ááźááşáá˛áˇáááşá
áááŻáááŻáááşáážáŹá áááşááŹááąááŹá ááŽá¸ááźáŹá¸á áŽá¸ááźáąáŹááşá¸ááťáŹá¸ á áááşáááŻáˇááŤáááˇáş áĄáá°á¸á áŹááťááşáážáŹááťáŹá¸ áážááááşáááŻááşááŤá áááşá¸áĄá áŹá¸ á áŹááťááşáážáŹáĄáŹá¸ááŻáśá¸ááᯠáĄáážááˇáşááť ááźááşááąá¸áááˇáş stream áá áşááŻáááşá¸áážáááŤáááşá
áááşá¸áááş á áŹááťááşáážáŹááťáŹá¸ áááşáááşááźááşá¸áááŻáááş ááąááťáŹá áąáááşá áážáŻáśá¸ááááˇáşáážáŻá áá áşááŻáááşá¸ááąáŹáĄááťááşááážáá - ááąáŹáşáááşá áá°áá˝á˛áĄáá˝ááş ááśáˇáááŻá¸ááąá¸áááş áĄááąá¸ááźáŽá¸áááşá
ááąáŤááşá¸á áŽá¸áážá ááŹá¸áážááşá¸ááśááŤááşáááŤááąáŹ ááąáŹáşáááşáááş áááąáŹááşá¸ááŤá
áĄááŻáśá¸ááźáŻááŹá¸ááąáŹ ááąáŹáşáááşááŹá¸áážááşá¸ááᯠáá˝ážááşááźáááˇáş á áŹááťááşáážáŹ ááąáŤááşá¸á áŽá¸áá˝ááş áĄááťááŻáˇááąáŹ Magic Number (áááşáážááş) ááŤááąáŹ áĄáá˝ááşáá áşááŻááᯠáááˇáşáááş ááŻáśááąáŹááşááŤáááşá (áááşáá˝áąáˇáážáŹ áá áşááŤáááşááąáŹááşááąáŹááş áážááááşááááşáá°á¸); - áážááşáááşá¸ááťáŹá¸áĄáá˝ááş ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşááąáŤááşá¸á áŽá¸ááᯠáĄááŻáśá¸ááźáŻá፠(áĄááťáŹá¸áĄááźáŹá¸áážááááˇáşáĄáááş)á ááá ášá áĄááťáŹá¸á áŻáá˝ááş áááşá¸ááᯠ1 byte áážááşá áąáááş ááźááŻá¸á áŹá¸ááŤá
- ááąáŤááşá¸á áŽá¸áĄáážááşáážááˇáş ááťáŻáśáˇááŹá¸ááąáŹ áážááşáááşá¸á ááźááşááąáŹááşááŹá¸ááąáŹ áĄáááŻááşá¸á áĄáážááşááᯠááŻááşááŻááşáááşá ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄááťáŹá¸-áĄááťáŹá¸ áá˝áááŻááşááťáŹá¸ááᯠáĄááŻáśá¸ááźáŻááŤá
áĄáá˝ááşáĄááąáŹááşáĄáá°ááźá áşáá˛áˇáááşá Huffman ááŻááşááťáŹá¸ áááá áşáĄáááşá¸áááşáĄáá˝ááşá¸ áááŻáĄááşááąáŹ ááźáąáŹááşá¸áá˛áááŻááşááąáŹ-áĄáážááşááŻááşááťáŹá¸ááᯠáá˝áąá¸ááťááşáááŻááşáá˛áˇáááşá
ááąááŹáááŻáážáąáŹááşáážáŻááŻáśá áśá áážááşá¸áááşá¸ááťááş
áááŻááşáĄáąáŹáş
áá áşáááŻááşáááş áááŻááźáŽá¸ááąáŹ áĄáá˝ááşááťáŹá¸ááᯠbig-endian ááąáŹáşáááş (áá˝ááşáááş áááŻááşáĄáážáŹá áŹ) ááźááˇáş ááááşá¸ááŹá¸áááşá áááŻáááŻáááşáážáŹ 0x1234 ááᯠ0x12, 0x34 áĄááźá áş ááąá¸ááŹá¸áááşá
á áŹááťááşáážáŹááťáŹá¸áá˝á˛ááŤá
flash memory áĄáŹá¸ááŻáśá¸ááᯠáĄáá˝ááşáĄá áŹá¸áá° á áŹááťááşáážáŹááťáŹá¸áĄááźá áş áááŻááşá¸ááźáŹá¸ááŹá¸áááşá
áá°áááşá¸á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸áážáŹ 32Kb ááźá áşááąáŹáşáááşá¸ áááşáááŻááŽááťá áşááşá á áŻá áŻááąáŤááşá¸áĄáá˝ááşáĄá áŹá¸á 1/4 áááş ááááŻá፠(4MB ááťá áşááşáĄáá˝ááşá áááşá¸áážáŹ 128 á áŹááťááşáážáŹááźá áşáááş)á
á áŹááťááşáážáŹáá áşááŻá áŽáááş áĄááźáŹá¸á áŹááťááşáážáŹáá áşááŻááž áĄááťááşáĄáááşááťáŹá¸ááᯠáĄááźáŹá¸á áŹááťááşáážáŹáá áşááŻááž ááąááŹááᯠáááşáá˝ážááşá¸ááźááşá¸ááážáááŤ)á
á áŹááťááşáážáŹáĄáŹá¸ááŻáśá¸ááᯠáááŹááĄá ááşáááŻááş (ááááşá áŹááťáŹá¸á áááşá ááşáĄáááŻááş) ááśááŤááş 0 ááźááˇáş á áááşáááş (ááŻáá áŹááťááşáážáŹáááş ááááşá Ꮰ0 áážááˇáş á áááşáááşá ááá- 32Kb áážááˇáş ááŻááá- 64Kb á áááşááźááˇáş)
áááşáááŻááŽááťá áşááşááᯠring buffer áĄááźá áşáĄááŻáśá¸ááźáŻáááşá áááŻáááŻáááşáážáŹá ááááŚá¸á á˝áŹáážááşáááşá¸áááşááźááşá¸áááş á áŹááťááşáážáŹááśááŤááş 0 áááŻáˇáá˝áŹá¸áááşá áááŻáˇááąáŹááş á áŹááťááşáážáŹááśááŤááş 1á ...á ááąáŹááşááŻáśá¸á áŹááťááşáážáŹáááŻááźááˇáşááąáŹáĄááŤá á ááşáááŻááşá¸áĄáá áşáá áşááŻá áááşááźáŽá¸ á áŹááťááşáážáŹááŻáááž áááşáááşáážááşáááşá¸áááşáááşá
á áŹááťááşáážáŹáĄáá˝ááşá¸áááŻááşá¸

á
áŹááťááşáážáŹááĄá
áá˝ááş 4-byte á
áŹááťááşáážáŹááąáŤááşá¸á
áŽá¸ááᯠááááşá¸áááşá¸ááŹá¸ááźáŽá¸á áááŻáˇááąáŹááş ááąáŤááşá¸á
áŽá¸á
á
áşááąá¸áážáŻáá
áşáᯠ(CRC-32C)á áááŻáˇááąáŹááş áážááşáááşá¸ááťáŹá¸ááᯠ"headerá dataá checksum" ááŻáśá
áśááźááˇáş ááááşá¸áááşá¸ááŹá¸áááşá
á áŹááťááşáážáŹ ááąáŤááşá¸á áŽá¸ (ááŻáśááźááşá¸áá˝ááş á áááşá¸á ááŻáá áşáááş) ááŤáááşáááş-
- two-byte Magic Number áĄáá˝ááş (ááąáŹáşáááşááŹá¸áážááşá¸ áá˝ážááşááźááťááşááŻáááşá¸ ááąáŤáşáááş)
áááşáážáááŹá¸áážááşá¸áĄáá˝ááş áááşá¸ááᯠááąáŹáşáááşáĄááźá áş áááşáážááşáááşá0xed00 â Đ˝ĐžĐźĐľŃ ŃŃŃаниŃŃ; - two-byte counter "Page Version" (memory rewrite cycle number)á
á áŹááťááşáážáŹááąáŤáşáážá áážááşáááşá¸ááťáŹá¸ááᯠááťáŻáśáˇááŹá¸ááąáŹááŻáśá áś ( deflate algorithm ááᯠáĄááŻáśá¸ááźáŻá ) ááááşá¸áááşá¸ááŹá¸áááşá á áŹááťááşáážáŹáá áşááŻááąáŤáşáážá áážááşáááşá¸áĄáŹá¸ááŻáśá¸ááᯠááŻááşáá˝ážááˇáşáážáŻáá áşááŻáá˝ááş (ááŻáśáĄááááŹááşáá áşááŻáĄááŻáśá¸ááźáŻá) ááťáŻáśáˇááŹá¸ááźáŽá¸ á áŹááťááşáážáŹáĄáá áşáá áşááŻá áŽáá˝ááş ááááááşáážáŻáĄáá áşá áááşáááşá áááŻáááŻáááşáážáŹá áááşáááˇáşáážááşáááşá¸áááŻáááᯠááťáŻáśáˇáááşá á¤á áŹááťááşáážáŹááž ááááşáážááşáááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠ(á¤á áŹááťááşáážáŹáážááŹááťážááş) áááŻáĄááşááŤáááşá
áážááşáááşá¸áá
áşááŻá
áŽááᯠZ_SYNC_FLUSH áĄááśááźááˇáş ááťáŻáśáˇááŹá¸ááźáŽá¸á ááááşáĄááąááźááˇáş 4 bytes 0x00, 0x00, 0xff, 0xff, XNUMX bytes XNUMXxXNUMX, XNUMXxXNUMX, XNUMXxff, XNUMXxff, áá
áşáᯠáááŻáˇáááŻááş áážá
áşááŻáááşáááŻá ááŻááááŻááşááťáŹá¸áážáąáˇáá˝ááş ááźá
áşáááŻááşááŤáááşá
flash memory áááŻáˇ á
áŹááąá¸áááˇáşáĄá፠ᤠsequence (4á 5 áááŻáˇáááŻááş 6 bytes áážááş) ááᯠá
á˝ááˇáşáá
áşááŤá
áážááşáááşá¸ááąáŤááşá¸á áŽá¸áááş 1á 2 áááŻáˇáááŻááş 3 bytes ááźá áşááźáŽá¸á ááááşá¸áááşá¸áááş-
- áážááşáááşá¸áĄááťááŻá¸áĄá áŹá¸ááᯠáá˝ážááşááźááąáŹ áá áşáá áş (T) - 0 - áááşá ááşáá ášá ááşá¸á 1 - áážááşáááşá¸;
- ááźáąáŹááşá¸áá˛áááŻááşááąáŹ áĄáážááşáĄáá˝ááş (S) áááş 1 ááž 7 áá áşáĄááá ááŻááşáááŻá¸ááźááşá¸áĄáá˝ááş áážááşáááşá¸áá˝ááş áááˇáşááááˇáş ááąáŤááşá¸á áŽá¸ááĄáážááşáážááˇáş "áĄááźáŽá¸" ááᯠáááşáážááşááźááşá¸á
- áážááşáááşá¸áĄáážááş (L)á
S áááşáááŻá¸ááťáŹá¸ áááŹá¸-
S
ááąáŤááşá¸á
áŽá¸áĄáážááşá áááŻááşááťáŹá¸
áááŻááşáážáŹ ááąá¸ááźáŽá¸ áá˝ážááˇáşáá
áşáááŻááşáááşá
0
1
5 (00 00 00 ff ff)
10
1
6 (00 00 00 00 ff ff)
110
2
4 (00 00 ff ff)
1110
2
5 (00 00 00 ff ff)
11110
2
6 (00 00 00 00 ff ff)
1111100
3
4 (00 00 ff ff)
1111101
3
5 (00 00 00 ff ff)
1111110
3
6 (00 00 00 00 ff ff)
áááŻááşááąáŹáşáááŻáˇ ááźááŻá¸á
áŹá¸áá˛áˇáááşá áááşááąáŹááş áážááşá¸áá˝áŹá¸áᲠááááá°á¸á

á¤ááąááŹáá˝ááş áĄááŤááąáŹááşáááş T áĄáá˝ááşááᯠáá˝ážááşááźáááşá áĄááźá°ááąáŹááşáááş S áĄáá˝ááşááᯠáá˝ážááşááźáááşá áĄá
áááşá¸ááąáŹááşáááş L (ááťáŻáśáˇááŹá¸ááąáŹááąááŹá áááŻááşáĄááťáŹá¸)ááᯠáá˝ážááşááźáááşáá áĄááźáŹááąáŹááşáááş ááťáŻáśáˇááŹá¸ááąáŹááąááŹááᯠáá˝ážááşááźáááşá áĄááŽááąáŹááşáááş flash memory áááŻáˇáááąá¸ááŹá¸ááąáŹ compressed data á ááąáŹááşááŻáśá¸ bytes ááᯠáá˝ážááşááźáááşá
áááŻáˇááźáąáŹááˇáşá ááťá˝ááşáŻááşáááŻáˇáááş áá áşáááŻááşáá˝ááş áĄááŻáśá¸áĄááťáŹá¸ááŻáśá¸ áĄáážááş (63+5 bytes áĄáá) áážááşáááşá¸ááťáŹá¸á ááąáŤááşá¸á áŽá¸ááťáŹá¸ááᯠááąá¸áááŻááşáááşá
ááąá¸ááźáŽá¸áááŻááşá¸á ááááş checksum á ááźáąáŹááşá¸ááźááşáááşáááŻá¸ááᯠáááŚá¸áááşáááŻá¸ (init) áĄááźá áş áĄááŻáśá¸ááźáŻáááˇáş CRC-32C checksum ááᯠááááşá¸áááşá¸ááŹá¸áááşá
CRC áá˝ááş "ááźáŹááťáááş" ááááŻááşáááŻááşáážáŻáá˝ááş áĄáąáŹááşááŤááąáŹáşááźá°áᏠáĄááŻááşááŻááşáááş (ááŻááşáááşá¸á
ááşáá˝ááş áĄááąáŤááşá¸ áááŻáˇáááŻááş áĄááŻááşáá
áşááźáąáŹááşá¸ááźááşáážááşááźááşá¸)á
.
áááŻáááŻáááşáážáŹá á¤á
áŹááťááşáážáŹáážá ááááş header bytes áážááˇáş data áĄáŹá¸ááŻáśá¸á CRC ááᯠáĄáážááşááááş áá˝ááşááťááşááŤáááşá
checksum ááźáŽá¸ááąáŹááşááťááşááťááşá¸ááąáŹááşáážááşáááşá¸áááąáŤááşá¸á áŽá¸ááźá áşáááşá
ááąáŤááşá¸á áŽá¸áááş áááşá¸áááááááŻááşáĄáŹá¸ 0x00 áážááˇáş 0xff áááŻáˇáážááˇáş áĄááźá˛áá˝áŹááźáŹá¸ááąá áąáááş ááŽáááŻááşá¸ááŻááşááŹá¸ááŤáááşá (ááťá˝ááşáŻááşáááŻáˇáááş ááąáŤááşá¸á áŽá¸áááááááŻááşáĄá áŹá¸ 0xff áážááˇáş ááźáŻáśáá˝áąáˇáááŤá áááşá¸áážáŹ áĄááŻáśá¸áááźáŻááąáŹá§ááááŹááźá áşáááşá 0x00 áááş áĄáážáŹá¸áĄáá˝ááşá¸áá áşááŻááźá áşááźáąáŹááşá¸ áĄááťááşááźáááş)á
ááá°áᏠalgorithms
flash memory áážáááşááźááşá¸á
áááşáááˇáşá
áŹáááşááźááşá¸áááŻáááᯠchecksum á
á
áşááąá¸ááźááşá¸ááźááˇáş áá˝á˛ááąá¸ááŤáááşá
checksum ááááŻááşááŽááŤáá áážááşáááşááąáŹááąááŹáááŻáááşáááşááťážáąáŹáşáááˇáşááťááşááźááˇáş áĄááźáááşááąáŤááşá¸ááťáŹá¸á
á˝áŹ áááşááŤááá˛áá˛áááşáážáŻááŤá
(ááŤá áĄáááášááŤááşáážááááşá Linux NOR Flash ááž áááşáážáŻááťáŹá¸ááᯠáááşáážáşáááŻááşááŤá áĄáááşááźáŻááźáŽá¸ááźá áşáááş)
flash memory áá˝ááş á áŹááąá¸ááźááşá¸á
ááťá˝ááşááąáŹáşáááŻáˇá áĄááťááşáĄáááşáá˝áąááᯠááťááąá¸áááşá
áĄá˛ááŤáá˝áąááᯠáááşááźááˇáşááĄáąáŹááşá
áááşááźáŽá¸ááąáŹááąááŹáááş ááąá¸ááŹá¸ááąáŹááąááŹáážááˇáş ááááŻááşááŽááŤáá ááťá˝ááşáŻááşáááŻáˇáááş á§ááááŹááᯠááŻáááźááˇáşááźááˇáşááźáŽá¸ áĄáážáŹá¸áá áşááŻááᯠáĄááťááşááźááŤáááşá
áááşáááşáááşáĄáá˝ááş microcircuit áĄáá áşááᯠááźááşáááşááąááŤáááşá
áĄá
ááźáŻááźááşá¸áĄáá˝ááşá ááŹá¸áážááşá¸ 1 ááŤááąáŹ ááąáŤááşá¸á
áŽá¸ááᯠááá (áááŻáˇáááŻááş áááŻáˇáááşáááŻá ááááááťááťá ááŻá) á
áŹááťááşáážáŹáááŻáˇ ááąá¸ááŹá¸áááşá
áááşá¸ááąáŹááşáá˝ááşá áááŚá¸áĄááźáąáŹááşá¸áĄááŹááᯠá¤á
áŹááťááşáážáŹáá˝ááş ááąá¸ááŹá¸ááŹá¸ááŤáááş (áááşá¸áá˝ááş á
ááşá UUID áážááˇáş ááŻáśááąáááşáááşááťáŹá¸ááŤáážááááş)á
ááŤáá˛á flash memory á áĄááŻááşááźá áşááąááŤááźáŽá
á ááşááᯠáááşááąá¸áááşá
áááşáááˇáşáĄááŤá á
áŹááťááşáážáŹáá
áşááŻá
áŽá áááááŻáśá¸ 8 bytes (ááąáŤááşá¸á
áŽá¸ + CRC) ááᯠáááşááźáŽá¸ áĄáááşááá Magic ááśááŤááş áááŻáˇáááŻááş ááážááş CRC ááŤááąáŹ á
áŹááťááşáážáŹááťáŹá¸ááᯠááťá
áşááťá°áážáŻááŹá¸áááşá
"áážááşáááşááąáŹ" á
áŹááťááşáážáŹááťáŹá¸áážá áĄááťáŹá¸ááŻáśá¸ááŹá¸áážááşá¸ááŤááąáŹ á
áŹááťááşáážáŹááťáŹá¸ááᯠáá˝áąá¸ááťááşááźáŽá¸ áááşá¸áááŻáˇáá˛ááž ááśááŤááşáĄááťáŹá¸ááŻáśá¸áážáááąáŹ á
áŹááťááşáážáŹááᯠáá°áááşá
ááááážááşáááşá¸ááᯠáááşááźáŽá¸ CRC áááş áážááşáááşáážáŻáážáááážá á
á
áşááąá¸ááźáŽá¸ "áááşá
ááşáážáŻ" áĄááśááᯠá
á
áşááąá¸ááŹá¸áááşá áĄáŹá¸ááŻáśá¸áĄáááşááźáąááŤá á¤á
áŹááťááşáážáŹááᯠáááşáážááĄááźá
áş áááşáážááşáááşá áááŻááşááŤá "áááŻááşáááŻááş" á
áŹááťááşáážáŹááᯠáážáŹááá˝áąáˇáááťááşá¸ ááááşá
áŹááťááşáážáŹáááŻáˇ ááźááşáážááˇáşááŤá
áá˝áąáˇáážáááąáŹá
áŹááťááşáážáŹáá˝ááş ááťá˝ááşáŻááşáááŻáˇáááş âáĄááźáąáŹááşá¸áĄááŹâ áĄááśááźááˇáş ááťá˝ááşáŻááşáááŻáˇáĄááŻáśá¸ááźáŻáááˇáş áážááşáááşá¸ááťáŹá¸áĄáŹá¸ááŻáśá¸ááᯠáááşááŤáááşá
zlib áĄááááŹááşááᯠááááşá¸áááşá¸á፠(á¤á
áŹááťááşáážáŹáááŻáˇ áááˇáşáááş áááŻáĄááşááŤáááş)á
ááŤáá˛á loading ááźáŽá¸áá˝áŹá¸ááźáŽá context áááŻááźááşáá°á áááşáĄááŻááşááŻááşáááŻááşááŤáááşá
áážááşáááşá¸áá áşááŻáááˇáşáá˝ááşá¸ááźááşá¸á
ááťá˝ááşáŻááşáááŻáˇáááş Z_SYNC_FLUSH ááᯠáááşáážááşááąá¸áᏠáážááşáááşááąáŹáĄááááŹááşááźááˇáş áážááşáááşá¸ááᯠááťáŻáśáˇááŤáááşá ááťáŻáśáˇááŹá¸ááąáŹ áážááşáááşá¸áááş áááşáážáá
áŹááťááşáážáŹáážááˇáş áááŻááşááŽáážáŻáážáááážáááᯠááťá˝ááşáŻááşáááŻáˇ ááźááˇáşáážáŻááŤáááşá
áĄáááşá áááşá¸áááş áĄáááşáááźáąááŤá (áááŻáˇáááŻááş á
áŹááťááşáážáŹááąáŤáşáá˝ááş CRC áĄáážáŹá¸áĄáá˝ááşá¸ááťáŹá¸áážáááąááŤá) á
áŹááťááşáážáŹáĄáá
áşáá
áşááŻá
áááşá፠(áĄáąáŹááşáá˝ááşááźááˇáşááŤ)á
ááťá˝ááşááąáŹáşáááŻáˇ CRC áá˛áˇ áážááşáááşá¸ááąá¸áááşá áĄáážáŹá¸áĄáá˝ááşá¸áá
áşááŻááźá
áşááąáŤáşááŤá ááťá˝ááşáŻááşáááŻáˇáááş á
áŹááťááşáážáŹáĄáá
áşááᯠá
áááşáááşá
á áŹááťááşáážáŹáĄáá áş
áĄááááˇáşááŻáśá¸ááśááŤááşááŤááąáŹ áĄááá˛áˇá
áŹááťááşáážáŹááᯠááťá˝ááşáŻááşáááŻáˇ áá˝áąá¸ááťááşáááş (ááťá˝ááşáŻááşáááŻáˇáááş ááąáŤááşá¸á
áŽá¸áá˝ááş ááážááşááąáŹ á
á
áşááąá¸áážáŻáá
áşááŻááŤáááˇáş á
áŹááťááşáážáŹ áááŻáˇáááŻááş áááşáážá áĄááá˛áˇááźá
áşáááŻááşááąáŹ ááŹá¸áážááşá¸áááşááááˇáşááąáŹ ááŹá¸áážááşá¸ááźááˇáş á
áŹááťááşáážáŹáá
áşááŻááᯠááťá˝ááşáŻááşáááŻáˇ á
ááşá¸á
áŹá¸áááş)á áááŻáááŻáˇááąáŹ á
áŹááťááşáážáŹááťáŹá¸ ááážáááŤáá áááşáážá ááŹá¸áážááşá¸áážááˇáş áá°ááŽááąáŹ ááŹá¸áážááşá¸áážááááˇáş áĄáááşá¸ááŻáśá¸ ááśááŤááşáážáááąáŹ á
áŹááťááşáážáŹááᯠááťá˝ááşáŻááşáááŻáˇ áá˝áąá¸ááťááşááŤáááşá
áá˝áąá¸ááťááşááŹá¸ááąáŹ á
áŹááťááşáážáŹááᯠááťá˝ááşáŻááşáááŻáˇ ááťááşáá
áşááŤáááşá áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááᯠ0xff áážááˇáş áážááŻááşá¸áážááşááŤáááşá áá
áşááŻááŻáážáŹá¸ááąááŤáá ááťá˝ááşáŻááşáááŻáˇáááş ááąáŹááşá
áŹááťááşáážáŹááᯠáĄááá˛áˇáá°áááşá á
áááźááˇáşá
ááťá˝ááşáŻááşáááŻáˇáááş ááťááşááŹá¸ááąáŹá
áŹááťááşáážáŹáááŻáˇ ááąáŤááşá¸á
áŽá¸áááŻááąá¸áááşá ááá entry áááş áĄááźáąáŹááşá¸áĄááŹá áááşáážááĄááźáąáĄááąááźá
áşááźáŽá¸ ááąáŹááşáá
áşááŻáááş áááąá¸ááŹá¸ááąáŹ log entry (áá
áşááŻáážáááťážááş) ááźá
áşáááşá
ááąáŹáşáááşá áĄááŻáśá¸ááťáááŻááşáážáŻ
ááťá˝ááşáŻááşááĄááźááşáĄáá á¤áááşáážáŹ NOR Flash áá˝ááş áááŻáááşá¸ááąáŹ áĄááťááşáĄáááşá áŽá¸ááźáąáŹááşá¸ááťáŹá¸ (áááŻá¸áááŻá¸á áŹááŹá¸á JSONá MessagePacká CBORá ááźá áşáááŻááşááźáąáážáááąáŹ protobuf) ááᯠááááşá¸áááşá¸áááşáĄáá˝ááş ááąáŹááşá¸áá˝ááşááąáŹááąáŹáşáááşáá áşááŻááźá áşáááşá
ááŻááşááŤáááşá ááąáŹáşáááşáááş SLC NOR Flash áĄáá˝ááş "ááťá˝ááşáááşáááş" ááźá áşáááşá
áááşá¸ááᯠNAND áááŻáˇáááŻááş MLC NOR áá˛áˇáááŻáˇááąáŹ ááźááˇáşááŹá¸ááąáŹ BER ááŽááŽááŹááťáŹá¸áá˝ááş áĄááŻáśá¸áááźáŻáááˇáşááŤá (áááŻáá˛áˇáááŻáˇááąáŹ memory áááş ááąáŹááşá¸áááşáááşáážáááŤáááŹá¸á áĄáážáŹá¸ááźááşááŻááşááťáŹá¸áá˝ááş áááşá¸ááᯠááąáŹáşááźááźááşá¸ááťáŹá¸áááŻáᏠááźááşáá°á¸áááş).
áááŻáˇáĄááźááşá áááşá¸ááᯠáááşá¸áááŻáˇááááŻááşáááŻááş FTL ááźá áşáááˇáş USB flashá SDá MicroSD á áááşáááŻáˇááŤáážááááˇáş á ááşááťáŹá¸áá˝ááş áĄááŻáśá¸áááźáŻáááˇáşááŤá (áááŻáá˛áˇáááŻáˇááąáŹáááşáááŻááŽáĄáá˝ááş ááťá˝ááşáŻááşáááş á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸ 512 bytesá á áŹááťááşáážáŹáá áşááŻá áŽááĄá áá˝ááş áááşáážááşáážááˇáş áá°á¸ááźáŹá¸ááąáŹáážááşáááşá¸ááśááŤááşááťáŹá¸ááᯠááąáŹáşáááşááźáŻááŻááşáá˛áˇáááş - áá áşááŤáá áşááśáá˝ááş áááşáááŻááşáááşááŻáśááźááˇáş "ááťááŻáˇáá˝ááşá¸ááąááąáŹ" flash drive ááž áĄááťááşáĄáááşáĄáŹá¸ááŻáśá¸ááᯠááźááşáááşááá°áááŻááşáááş).
áĄááŻááşááťáŹá¸ááąáŤáşáá°áááşá 128Kbit (16Kb) ááž 1Gbit (128Mb) flash drive ááťáŹá¸áá˝ááş ááźáąáŹááşá¸áá˛áážáŻááážááᲠááąáŹáşáááşááᯠáĄááŻáśá¸ááźáŻáááŻááşááŤáááşá ááášááážáááŤá áááşá¸ááᯠáááŻááźáŽá¸áááˇáş ááťá áşááşááťáŹá¸ááąáŤáşáá˝ááş ááŻáśá¸áááŻááşááąáŹáşáááşá¸ á áŹááťááşáážáŹáĄáá˝ááşáĄá áŹá¸ááᯠááťáááşáážááááş áááŻáĄááşááŤáááşá (ááŤááąáááˇáş ááŽááąááŹáážáŹ á áŽá¸áá˝áŹá¸ááąá¸ááźá áşáááŻááşááźáąááᯠááąá¸á ááŹáážáááŹááŤáááşá ááŻáááşááźáŽá¸ááŹá¸áá˛áˇ NOR Flash áá˛áˇá áťáąá¸áážáŻááşá¸á áĄáŹá¸áá ááŹááážáááŤáá°á¸á).
áá áşááąáŹááşááąáŹááşá á áááşáááşá áŹá¸á ááŹááąáŹááşá¸áá˛áˇ format áááŻáá˝áąáˇááźáŽá¸ open source áááąáŹááťááşáážáŹ ááŻáśá¸ááťááşáááş ááťá˝ááşááąáŹáˇáşááᯠá áŹááąá¸ááŤá áĄááťáááşáážáŹááŤá ááŻááşááᯠááťááşááźáŽá¸ github áážáŹ áááşáááŻááşááŤá
ááąáŹááşááťááş
ááťá˝ááşáŻááşáááŻáˇááźááşáááŻááşáááşáĄáááŻááşá¸á áĄááŻáśá¸áá˝ááş format áááşáááŻá¸áážááşá¸ááŤáááşá ááťááşá¸á áᏠááąáŹááşá¸áááşá.
ááąáŹááşá¸ááŤá¸áá áşááŻááşáá˝ááş ááťá˝ááşáŻááşááĄááźááşá áááˇáşáá˛ááźá áşá ááşááᯠáááşáááşáááş áááşáá˛ááąáŹáşáááşá¸ ááťá˝ááşáŻááşááᯠááŻáśááźááşááŤ- áĄá áááŻááşá¸áá˝ááş ááťá˝ááşáŻááşáááş áĄááŽá¸áááş ááťá°áááŽá¸ááŹá¸ ááąáŤááşáá˝á˛ááźáŽá¸ááąáŹááşáá˝ááşáááş áážááşáááşáááŻááşáááˇáş áááşá¸ááźáŹá¸ááąáŹá ááťááşááŽá¸áááááąáŹá áážááşáááşáááŻááşáááˇáş áĄááŹáá áşááŻááᯠáááşááŽá¸áááŻááŤáááşá áááŻáˇááąáŹáşá áĄááźáąáŹááşá¸ááźááťááş (ááťážáąáŹáşáááˇáşááťááş) áááş áĄáąáŹááşááźááşááąáá˛ááźá áşááźáŽá¸ áŚá¸á áŹá¸ááąá¸áĄááŹááťáŹá¸áááş áááŻá¸áážááşá¸áážáŻáážááˇáş ááťá áşáá áşááááşáááşá¸áážáŻááŽáááŻáˇ áááźááşá¸ááźááşá¸ ááźáąáŹááşá¸áá˛áá˝áŹá¸áá˛áˇáááşá
áĄáážáŹá¸ááŻááşáááááŻáˇ ááźá áşáááŹá¸á ááŻááşááŤáááşá áĄáááşáĄáá˝áąá¸ááááˇáş áááŻááşááááŻá áá˝ááşáĄááŻááşááťáŹá¸ááᯠáááşáá°áá˛áˇááźááşá¸ ááźá áşáááŻááşáááşá áááŻáˇáááŻááş áĄááźáŹá¸ááąáŹ áĄááźáąáŹááşá¸áá áşááŻááŻááźáąáŹááˇáş á ááşáá ášá ááşá¸áááş ááŻáśááźááşá áááşááťááážáŻ áááşáážááşááťááşááťáŹá¸áážááˇáş ááááŻááşááŽááŤá
ááŽáĄáá˝ááş ááťá˝ááşááąáŹáˇáşáážáŹ áĄá áŽáĄá ááşáážáááŤáááŹá¸á ááąáŹááşá¸ááŤá¸áááŻáááşááźáŽá¸áááş áĄá áŽáĄá ááşáážááááşáááŻáᏠááśááááźá áşá áᏠááááŻáá°á¸áááŻáˇáááşááŤáááşá áá áá áá áá áá áá á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á á
áĄáááşá¸áááşáááŻááąá¸áááşá áąáááşá ááąáŹáşáááşááᯠáĄááŻááşáá˝áąá¸ááťááşáážáŻáĄááźá áşáážááˇáş "áĄá ááşá¸ááŽá¸ááŻáśá¸ááťáś" áĄááźá áş áážá áşááťááŻá¸ááŻáśá¸ áááşááŽá¸áá˛áˇáááşá
ááąáŹááąáŹáááşáá˝ááşá áĄááŹáĄáŹá¸ááŻáśá¸áááş á áŹá¸áá˝á˛ááąáŤáşáá˝ááş áĄáááşááźáąááąááźáŽá¸á áĄááźáąááᯠáááşáĄáááşá¸áááşáĄáá˝ááşá¸ áááşáá˝áąáˇáĄááŻáśá¸ááťáááŻááşáááşááźá áşáááşá (áááˇáşáážááşá¸ááźáąáĄáŹá¸ááźááˇáş) á ááşáá ášá ááşá¸áá áşááŹááąáŤáşáá˝ááş "áááŻááşáááŻááşááąá¸" á á áşáááşááąá¸áá˝ááş ááŹááźá áşáááşááᯠááźááˇáşááźááŤá ááŻáˇ (ááśááąáŹááşá¸ááąáŹááşáá á˝áŹá ááąáŹáşáááşáááş ááťáážáŻáśá¸áážáŻááťáŹá¸ááᯠááŻáśááźááşá áááşááťáááąáŹ ááąáŹááşáážááşá¸áááŻááşá áąáááş áá˝ááˇáşááźáŻááąá¸áááşá áááŻáˇááźáąáŹááˇáş á áŹáááşá¸áááŹá¸áĄááźááˇáşáĄá áŻáśááᯠá áŻááąáŹááşá¸áááŻááşááááˇáşáááş)á ááĄáááşá¸áááşáĄáá˝ááşá¸ ááąáŹááşááťááşáá˝á˛áááŻááşáááşááźá áşáááşá (áááşááśáááąáŹááşá¸ááŤáá á áąáŹá áąáŹááááş).
áááşá¸áááŻáĄááŻáśá¸ááźáŻááźáŽá¸ááąáŹááş áááŻá¸áá˝áŹá¸ááąáŹááźáżááŹááťáŹá¸ááᯠáážáŹáá˝áąáá˝áąáˇáážáááźáŽá¸ áááŻá¸áááşáážáŻááťáŹá¸ áááŻáĄááşááŤáá ááťá˝ááşáŻááşáááş áááşá¸áĄááźáąáŹááşá¸ááᯠááťáááşá¸ááąááąá¸ááŹá¸ááŤáááşá
á áŹááą
áážááşááťáŹá¸ááźáŽá¸ ááźáŽá¸áá˝áąáˇá ááŹááąáŹááşá¸áá˛áˇ áááŻá¸ááŹá¸áážáŻá áŹáááşá¸ááᯠááááşááŽá¸ááťááşááŤáá°á¸á áĄáŹá¸ááŻáśá¸áá˛á áá°áááŻááşá¸áážáŹ Google áážááááşá
á¤áá˝ááş ááťá˝ááşáŻááşáĄáá˝ááş áĄáá°á¸á áááşáááşá áŹá¸áá˝ááşááąáŹááşá¸ááŻáśáááąáŹ áážáŹáá˝áąáá˝áąáˇáážááážáŻá áŹáááşá¸ááᯠááťááşááŹá¸áááş ááŻáśá¸ááźááşáá˛áˇáááşá áááŻáˇááąáŹáş áááźááşá¸ááźááşá¸áážááˇáş áááşá¸áááŻáˇáááş ááąáŹááşá¸ááŤá¸áá áŹááŹá¸áááŻáˇ áááŻááşáááŻááşááźáąáŹááşá¸áá˝ážáąáˇáá˝áŹá¸ááźáŽá¸ á áŹáááşá¸áá˛áá˝ááş áĄááźáąáŹááşá¸áĄááŹáá áşááŻáᏠááťááşáážáááąáŹáˇáááş-
- áĄááŻáśá¸áááşáááş zlib ááąá¸ááŹá¸áá°ááśáážá áááşá¸áááş deflate/zlib/gzip ááąáŹáşáá˝ááşá¸áááŻááşááťáŹá¸á áĄááźáąáŹááşá¸áĄááŹááťáŹá¸ááᯠáážááşá¸áááşá¸ááąáŹááŻáśá áśááźááˇáş ááźááááŻááşáááşá deflate (áááŻáˇáááŻááş gzip) ááąáŹáşáááşá áĄáá˝ááşá¸áááŻááşá¸áá˝á˛áˇá ááşá¸ááŻáśáážááˇáş áááŻááşáá˝ááşááźáąáážááşá¸áááş áááŻáĄááşááŤáá áááşá¸ááᯠááťá˝ááşáŻááş áĄáá°á¸áĄááźáśááźáŻáááŻááŤáááşá
source: www.habr.com
