Lines Matching full:efuses
1 # This file includes the common operations with eFuses for chips
20 def add_common_commands(subparsers, efuses): argument
25 self.efuses = kwargs.get("efuses")
27 del kwargs["efuses"]
53 check_arg = base_fields.CheckArgValue(self.efuses, efuse_name)
60 check_arg = base_fields.CheckArgValue(self.efuses, efuse_name)
70 "[{}].".format(", ".join([e.name for e in efuses.efuses])),
74 efuse_choices=[e.name for e in efuses.efuses]
75 + [name for e in efuses.efuses for name in e.alt_names if name != ""],
76 efuses=efuses,
80 help="Suppress an error to burn eFuses",
92 choices=[e.name for e in efuses.efuses if e.read_disable_bit is not None]
95 for e in efuses.efuses
110 choices=[e.name for e in efuses.efuses if e.write_disable_bit is not None]
113 for e in efuses.efuses
134 choices=efuses.BURN_BLOCK_DATA_NAMES,
142 for _ in range(0, len(efuses.BURN_BLOCK_DATA_NAMES)):
149 choices=efuses.BURN_BLOCK_DATA_NAMES,
163 "block", help="Efuse block to burn.", choices=efuses.BURN_BLOCK_DATA_NAMES
177 dump_cmd = subparsers.add_parser("dump", help="Dump raw hex values of all eFuses")
212 help="The efuses to show. If not provided, all efuses will be shown.",
268 def summary(esp, efuses, args): argument
295 for category in sorted(set(e.category for e in efuses), key=lambda c: c.title()):
298 for e in (e for e in efuses if e.category == category):
368 # Remove empty category if efuses are filtered and there are none to show
374 summary_efuse.append(efuses.summary())
375 warnings = efuses.get_coding_scheme_warnings()
391 def dump(esp, efuses, args): argument
407 for block in efuses.blocks:
416 for block in efuses.blocks:
431 for block in efuses.blocks:
437 def burn_efuse(esp, efuses, args): argument
442 "and after 'BURN', these efuses can not be burned in the feature:"
451 burn_efuses_list = [efuses[name] for name in efuse_name_list]
452 old_value_list = [efuses[name].get_raw() for name in efuse_name_list]
457 print("The efuses to burn:")
458 for block in efuses.blocks:
465 efuses.blocks[field.block].get_coding_scheme()
466 != efuses.REGS.CODING_SCHEME_NONE
469 e.name for e in efuses if e.block == field.block
481 print("\nBurning efuses{}:".format(attention))
496 "ENABLE_SECURITY_DOWNLOAD -> 1: eFuses will not be read back "
505 "DIS_DOWNLOAD_MODE -> 1: eFuses will not be read back for "
519 "UART_DOWNLOAD_DIS -> 1: eFuses will be read for confirmation, "
524 if efuses.is_efuses_incompatible_for_burn():
532 if not efuses.burn_all(check_batch_mode=True):
535 print("Checking efuses...")
562 def read_protect_efuse(esp, efuses, args): argument
566 efuse = efuses[efuse_name]
573 and not efuses["ABS_DONE_0"].get()
576 if efuses["ABS_DONE_1"].get():
588 not efuses["XTS_KEY_LENGTH_256"].get()
591 error |= efuses["SECURE_BOOT_EN"].get() and efuse_name in [
600 for block in efuses.Blocks.BLOCKS:
601 block = efuses.Blocks.get(block)
603 if not efuses[block.key_purpose].need_rd_protect(
604 efuses[block.key_purpose].get()
610 # make full list of which efuses will be disabled
613 e for e in efuses if e.read_disable_bit == efuse.read_disable_bit
622 if not efuses.burn_all(check_batch_mode=True):
625 print("Checking efuses...")
628 efuse = efuses[efuse_name]
638 def write_protect_efuse(esp, efuses, args): argument
641 efuse = efuses[efuse_name]
645 # make full list of which efuses will be disabled
648 e for e in efuses if e.write_disable_bit == efuse.write_disable_bit
657 if not efuses.burn_all(check_batch_mode=True):
660 print("Checking efuses...")
663 efuse = efuses[efuse_name]
673 def burn_block_data(esp, efuses, args): argument
680 efuses.force_write_always = args.force_write_always
691 num_block = efuses.get_index_block_by_name(block_name_list[0])
692 block = efuses.blocks[num_block]
706 num_block = efuses.get_index_block_by_name(block_name)
707 block = efuses.blocks[num_block]
726 if not efuses.burn_all(check_batch_mode=True):
731 def burn_bit(esp, efuses, args): argument
732 efuses.force_write_always = args.force_write_always
733 num_block = efuses.get_index_block_by_name(args.block)
734 block = efuses.blocks[num_block]
753 if not efuses.burn_all(check_batch_mode=True):
758 def get_error_summary(efuses): argument
759 efuses.get_coding_scheme_warnings()
760 error_in_blocks = any(blk.fail or blk.num_errors != 0 for blk in efuses.blocks)
764 for blk in efuses.blocks:
767 for field in efuses:
785 def check_error(esp, efuses, args): argument
786 error_in_blocks = get_error_summary(efuses)
789 for block in reversed(efuses.blocks):
795 efuses.confirm(
800 efuses.update_efuses()
801 error_in_blocks = get_error_summary(efuses)
803 raise esptool.FatalError("Error(s) were detected in eFuses")