firestarter 3.2.3__tar.gz → 3.2.5__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {firestarter-3.2.3/firestarter.egg-info → firestarter-3.2.5}/PKG-INFO +1 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/_version.py +3 -3
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/chip_resolver.py +20 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/data/chip_database.json +928 -54
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/data/pinouts.json +23 -12
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/database.py +50 -14
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/eprom_info.py +3 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/firmware.py +12 -2
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/ic_layout.py +2 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/jumper_table.py +13 -3
- {firestarter-3.2.3 → firestarter-3.2.5/firestarter.egg-info}/PKG-INFO +1 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/scm_file_list.json +4 -0
- firestarter-3.2.5/firestarter.egg-info/scm_version.json +8 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/__snapshots__/test_characterization.ambr +11 -6
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/golden/chip_database_field_inventory.json +33 -27
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/golden/wire_dict.json +500 -805
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_build_db_inclusion.py +84 -13
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_build_db_pinout_fork.py +82 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_characterization.py +4 -4
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_database_field_inventory.py +4 -3
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_resolver.py +41 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test.py +1 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_datasheet_overrides.py +1 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_eprom_database.py +62 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_extra_chips_supplement.py +64 -2
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_firmware_install.py +30 -1
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_ic_layout.py +24 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_info_vpp_and_erase.py +3 -3
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_jp5_gate.py +3 -3
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_jumper_table.py +10 -7
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_lock_status_class_partition.py +76 -66
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_programming_vcc_census.py +117 -79
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_vpp_rail_classification.py +205 -116
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_blank_guard_pinning.py +8 -0
- firestarter-3.2.3/firestarter.egg-info/scm_version.json +0 -8
- {firestarter-3.2.3 → firestarter-3.2.5}/LICENSE +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/MANIFEST.in +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/README.md +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/__init__.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/address_parser.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/avr_tool.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/channel.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/chip_test.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/cli_handlers.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/codec.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/compare.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/config.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/constants.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/diagnostic_report.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/dip24_2816_erase_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/eprom_operations.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/erase_support.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/exceptions.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/flash4_erase_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/frame_parser.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/fw_release_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/hardware.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/jp5_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/lock_status.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/log_capture.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/logging_utils.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/main.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/messages.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/page_size_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/protection_readability.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/py32_dfu.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/sdp_capability.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/sdp_honesty.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/serial_comm.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/submit.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/timestamps.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/transport_counters.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/utils.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/vpp_display.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter/write_blank_guard.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/SOURCES.txt +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/dependency_links.txt +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/entry_points.txt +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/requires.txt +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/firestarter.egg-info/top_level.txt +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/pyproject.toml +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/setup.cfg +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/__init__.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/conftest.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fake_chip.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/part_number_delta.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/report_shapes.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/at28c256-full-all-ok-sdp.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/attr01-status-axis-transport-fault.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/gh20-at28c256-fail.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/gh23-w27e257-fail.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/gh28-m27c512-fail.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/gh47-sst27sf512-pass.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/m27c512-full-all-ok.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/m27c512-full-blank-check-bad.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/m27c512-full-canonical-name.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/m27c512-full-comma-joined-name.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/m27c512-full-runs-1.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/prune03-synthesized-fingerprint-match.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/sst27sf512-full-all-ok.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/sst27sf512-six-step-readback-gated.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/sst27sf512-six-step.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/synthetic-arm4-empty-results.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/synthetic-arm4-no-ok.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/uv-slot-write-pass.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/reports/w27e257-full-all-ok.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/shape_ids.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/fixtures/synthetic_nonzero_chip_id.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/golden/build_db_part_specific_constants.json +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/plan_corpus.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_address_parser.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_b15_page_size_corroboration.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_blast_radius_invariance.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_boot_block_hint.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_budget_failure_render.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_bug_characterization.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_build_db_constant_census.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_build_db_interpret_timing.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_canonical_part_number.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_name_resolution.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test_blank_check_order.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test_cycle.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test_sdp_leg.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test_timing.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_chip_test_uv_slot_write.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_cli_handlers.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_click_group_gate_hook.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_cobs.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_codec.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_codec_format_message.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_compare.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_config.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_config_band_refusal.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_connect_cost_harness.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_consistency_check.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_coverage_floor_v18.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_database_conversion.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_decoder.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_derive_plan_no_drop_sweep.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_derive_plan_structural_sentinel.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_dev_group_channel_gating.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_dev_test_cmd.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_dev_tools_channel_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_devtest_firmware_error_propagation.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_dfu_opcode_anchors.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_diagnostic_report.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_dip24_2816_erase_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_endpoint_constants.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_eprom_info.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_eprom_operations.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_erase_blank_step_nonregression.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_erase_flag_invariants.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_error_code_seam.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_even_block.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_flash4_erase_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_list_failure_vs_empty.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_port_targeting_and_blind_install.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_release_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_update_dead_endpoint.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_update_path_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fw_version_guard.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_fwguard.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_hardware.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_hw_revision_gate.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_lock_status_cli.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_lock_status_wire.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_log_capture.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_logging_utils.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_matrix_artifact.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_page_size_alignment_refusal.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_page_size_invariants.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_page_size_write_refusal.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_parse_devtest_issue.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_probe_spurious_setup_ack.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protect_flags_doc_measurements.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protection_resolution.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protection_status_catalog.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protection_table_citations.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protocol_not_implemented.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_protocol_not_implemented_production_path.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_provenance.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_pulse_us_override.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_py32_channel_gating.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_py32_dfu.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_py32_flash_map_host.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_py32_pyusb_absent.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_pyusb_api_surface.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_sdp_capability.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_sdp_db_invariant.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_sdp_honesty.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_serial_characterization.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_serial_comm.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_session_lease.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_setup_refusals.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_submit.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_timestamps.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_transport_counters.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_utils.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_uv_mask.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_validate_family_cmd.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_validate_oracle.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_validated_parts_regression_surface.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_vcc_margin_rail.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_vpp_decode_table.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_wire_dict_equivalence.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_blank_guard.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_guard_port_pinning.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_progress.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_response_budget.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_skip_erase_0x0d.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_skip_sdp_unlock.py +0 -0
- {firestarter-3.2.3 → firestarter-3.2.5}/tests/test_write_verify.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: firestarter
|
|
3
|
-
Version: 3.2.
|
|
3
|
+
Version: 3.2.5
|
|
4
4
|
Summary: EPROM programmer software for the Relatively Universal ROM Programmer
|
|
5
5
|
Author-email: Henrik Olsson <henols@gmail.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/henols/firestarter_app
|
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '3.2.
|
|
22
|
-
__version_tuple__ = version_tuple = (3, 2,
|
|
21
|
+
__version__ = version = '3.2.5'
|
|
22
|
+
__version_tuple__ = version_tuple = (3, 2, 5)
|
|
23
23
|
|
|
24
|
-
__commit_id__ = commit_id = '
|
|
24
|
+
__commit_id__ = commit_id = 'g75046d7'
|
|
@@ -9,7 +9,7 @@ Single chokepoint between CLI dispatch and the EPROM database lookup/conversion.
|
|
|
9
9
|
|
|
10
10
|
from typing import Any
|
|
11
11
|
|
|
12
|
-
from firestarter.database import EpromDatabase
|
|
12
|
+
from firestarter.database import ROM_CE, ROM_OE, EpromDatabase
|
|
13
13
|
from firestarter.exceptions import (
|
|
14
14
|
AmbiguousChipNameError,
|
|
15
15
|
ChipNotFoundError,
|
|
@@ -129,4 +129,23 @@ def resolve_chip(name: str, db: EpromDatabase | None = None) -> dict[str, Any]:
|
|
|
129
129
|
f"{name}: the chip entry gives 0 for {', '.join(zero_fields)}. "
|
|
130
130
|
"The programmer cannot use a value of 0 there."
|
|
131
131
|
)
|
|
132
|
+
|
|
133
|
+
# A pin map with fewer address lines than the chip's size needs would
|
|
134
|
+
# repeat one window of the chip across the whole operation, silently.
|
|
135
|
+
bus = data.get("bus-config", {}).get("bus")
|
|
136
|
+
# The shield wires one socket pin to its CE driver and one to its OE
|
|
137
|
+
# driver. get_bus_config gives an address pin there the ROM_CE / ROM_OE
|
|
138
|
+
# sentinel, which is not a bus line the firmware can drive.
|
|
139
|
+
if bus and {ROM_CE, ROM_OE} & set(bus):
|
|
140
|
+
raise ChipNotImplementedError(
|
|
141
|
+
f"{name}: its pin map puts an address line on a socket pin that the "
|
|
142
|
+
"shield drives as CE or OE. The programmer cannot drive that "
|
|
143
|
+
"address line."
|
|
144
|
+
)
|
|
145
|
+
if bus and data["memory-size"] > 1 << len(bus):
|
|
146
|
+
raise ChipNotImplementedError(
|
|
147
|
+
f"{name}: its pin map has {len(bus)} address lines, which reach "
|
|
148
|
+
f"{1 << len(bus)} of its {data['memory-size']} bytes. The programmer "
|
|
149
|
+
"cannot address the rest of the chip."
|
|
150
|
+
)
|
|
132
151
|
return data
|