B7A: QMI DMS time vs VNIIFTRI NTP (DMS = UTC - 0.28 s, sigma 1 ms; NITZ = DMS truncated to 1 s). B7B: a 1970 -> 2026 date -s step is harmless for the modem stack. B7C: aurora-modem probes DMS/NITZ along the start flow and steps CLOCK_REALTIME once at the first valid sample (REG registered/attached), never RTC; background SNTP check (query only) after START OK. 3/3 class-A cold boots PASS (residual +0.04/+0.36/+0.84 s), cache 14fe453a written (B7C_WRITE_VERIFIED) and verified by a normal power-on (V1, +0.26 s). Also publishes the prerequisite R2 (boot-hang / lk eMMC investigation, T4 telnet baseline that B7C builds on) and R3 (autonomous cold boot, NCM loss) material, and extends tools/publish-sanitize.py to r2/, r3/, b7/. Binary images, initramfs, busybox and raw logs stay out (see b7/*/SHA256SUMS).
22 lines
1.4 KiB
Python
22 lines
1.4 KiB
Python
import re,glob,os,sys
|
|
# per SBL1 boot: B-times and D-deltas of key markers
|
|
keys=["SBL1, Start","pm_device_init","boot_flash_init","boot_config_data_table_init","sbl1_ddr_set_params","Pre_DDR_clock_init","pm_driver_init","batt_voltage","clock_init","QSEE Execution","SBL1, End","SBL1, Delta"]
|
|
for f in sorted(glob.glob(sys.argv[1]+"/*.log")):
|
|
L=open(f,errors="replace").read().splitlines()
|
|
cur=None
|
|
def flush():
|
|
if cur: print(os.path.basename(f)[:26], cur["ln"], cur["ts"], " ".join(f"{k}={v}" for k,v in cur["v"].items()), "| next:", cur["after"][:90])
|
|
for i,l in enumerate(L):
|
|
if "Format: Log Type" in l:
|
|
flush(); cur={"ln":i+1,"ts":l[:12],"v":{},"after":""}
|
|
continue
|
|
if not cur: continue
|
|
m=re.search(r"([BD]) -\s+(\d+) - (.*?)(, (Start|Delta|End))?\s*$",l)
|
|
if m:
|
|
name=m[3]; kind=m[5] or ""
|
|
short={"SBL1":"sbl","pm_device_init":"pmdev","boot_flash_init":"flash","boot_config_data_table_init":"cdt","sbl1_ddr_set_params":"ddr","Pre_DDR_clock_init":"preddr","pm_driver_init":"pmdrv","clock_init":"clk","QSEE Execution":"qsee"}.get(name,None)
|
|
if name.startswith("batt_voltage"): cur["v"]["batt"]=name.split("=")[1]; cur["v"]["tbatt"]=m[2]
|
|
elif short: cur["v"][short+("S" if kind=="Start" else "E" if kind=="End" else "d")]=m[2]
|
|
elif "UART_DM" in l or "welcome to lk" in l:
|
|
if not cur["after"]: cur["after"]=l[13:]
|
|
flush()
|