1
0

Pin additons

This commit is contained in:
Aiden
2026-05-25 15:18:47 +10:00
parent cdfb811c28
commit a82f3f6628
10 changed files with 3498 additions and 50 deletions

View File

@@ -4,6 +4,7 @@ import argparse
from pathlib import Path
from .analysis import build_call_graph, collect_labels, linear_sweep, trace
from .board_profile import analyze_board_profile
from .cycles import annotate_cycles
from .data_analysis import analyze_unreached_data
from .dataflow import analyze_dataflow
@@ -16,6 +17,7 @@ from .peripheral_access import analyze_peripheral_access
from .render import format_callgraph_dot, format_listing, write_json
from .rom import Rom
from .sci import analyze_sci
from .sci_protocol import analyze_sci_protocol
from .symbols import discover_symbols
from .timing import summarize_timing
from .vectors import read_dtc_vectors_max, read_dtc_vectors_min, read_vectors_max, read_vectors_min
@@ -40,6 +42,12 @@ def main() -> int:
parser.add_argument("--entry", type=parse_int, action="append", default=[], help="extra entry point to trace")
parser.add_argument("--br", type=parse_int, default=None, help="optional BR value for @aa:8 short absolute operands")
parser.add_argument("--clock-hz", type=parse_int, default=None, help="oscillator clock in Hz for SCI baud inference")
parser.add_argument(
"--board-profile",
choices=("sony_rcp_tx7", "none"),
default="sony_rcp_tx7",
help="emit board-specific annotations for known physical traces",
)
parser.add_argument("--linear", action="store_true", help="linear-sweep the selected range instead of tracing from vectors")
parser.add_argument("--cycles", action="store_true", help="append Appendix A cycle estimates to assembly comments")
parser.add_argument("--timing", action="store_true", help="include straight-line block and loop cycle summaries")
@@ -81,6 +89,12 @@ def main() -> int:
symbols = discover_symbols(instructions, data_candidates=data_candidates)
timing_summary = summarize_timing(instructions, labels, call_graph) if args.timing else None
sci_analysis = analyze_sci(instructions, clock_hz=args.clock_hz)
sci_protocol = analyze_sci_protocol(instructions)
board_profile = (
None
if args.board_profile == "none"
else analyze_board_profile(instructions, board=args.board_profile)
)
peripheral_access = analyze_peripheral_access(instructions)
indirect_flow = analyze_indirect_flow(rom, instructions, labels)
lcd_text = analyze_lcd_text(rom, instructions, start=args.start, end=end)
@@ -101,6 +115,8 @@ def main() -> int:
timing_summary=timing_summary,
show_cycles=args.cycles,
sci_analysis=sci_analysis,
sci_protocol=sci_protocol,
board_profile=board_profile,
peripheral_access=peripheral_access,
indirect_flow=indirect_flow,
dataflow=dataflow,
@@ -122,6 +138,8 @@ def main() -> int:
call_graph=call_graph,
timing_summary=timing_summary,
sci_analysis=sci_analysis,
sci_protocol=sci_protocol,
board_profile=board_profile,
peripheral_access=peripheral_access,
indirect_flow=indirect_flow,
dataflow=dataflow,