diff --git a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-filtered/counters-ipc-filtered.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc-full/counters-ipc-full.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr index a3c5a4879..5e5f7c5f7 100644 --- a/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc/counters-ipc.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr b/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr index a3c5a4879..dafe26544 100644 --- a/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/counters-ipc/counters-ipc.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility counters failed: no IPC counters found +humility counters failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr index ca2a9d884..62fb6d696 100644 --- a/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/host-panic/host-panic.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility host failed: Could not find host boot variables under any known name; is this a Gimlet image? +humility host failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr b/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr index ca2a9d884..fafa51b6e 100644 --- a/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/host-panic/host-panic.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility host failed: Could not find host boot variables under any known name; is this a Gimlet image? +humility host failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr index da2ede4a0..0b204bcff 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout index 976d2d20c..e69de29bb 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.stdout @@ -1,12 +0,0 @@ -kern::arch::arm_m::TICKS (0x200012b8) = [ - AtomicU32 { - v: UnsafeCell { - value: 0x20000fc0 - } - }, - AtomicU32 { - v: UnsafeCell { - value: 0x7861f - } - } -] diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml index 8fe89e157..f8e1d6c6b 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 readvar TICKS" - +status.code = 1 diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr index da2ede4a0..791c16af1 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility readvar failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout index 448db7742..e69de29bb 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.stdout @@ -1,12 +0,0 @@ -kern::arch::arm_m::TICKS (0x200012b8) = [ - AtomicU32 { - v: UnsafeCell { - value: 0xed8bc - } - }, - AtomicU32 { - v: UnsafeCell { - value: 0x0 - } - } -] diff --git a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml index 95c42e285..1b45eae2f 100644 --- a/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/readvar-ticks/readvar-ticks.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 readvar TICKS" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr index da2ede4a0..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout index 4fae8622c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.stdout @@ -1,106 +0,0 @@ -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml index 9bae8bb73..d71cef9ae 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf i2c" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout index 90ae58ddf..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.stdout @@ -1,82 +0,0 @@ -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None diff --git a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml index de6f8cbfa..f9b5d4d25 100644 --- a/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf-arg/ringbuf-arg.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf i2c" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr index 17900c3e9..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stderr @@ -1,5 +1,2 @@ humility: attached to dump -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout index b01ec2b4c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.stdout @@ -1,202 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 29 468 8514 1 WaitISR(0x20012) - 30 438 8514 1 Rx(0x4a) - 31 468 8514 1 WaitISR(0x10012) - 32 438 8514 1 Rx(0x0) - 33 286 8514 1 Start(exchange, (0x2, 0x4)) - 34 404 8514 1 Tx(0x2) - 35 404 8514 1 Tx(0x70) - 36 404 8514 2 Tx(0x0) - 37 468 8514 2 WaitISR(0x40012) - 38 438 8514 1 Rx(0x0) - 39 468 8514 1 WaitISR(0x30012) - 40 438 8514 1 Rx(0x0) - 41 468 8514 1 WaitISR(0x20012) - 42 438 8514 1 Rx(0x0) - 43 468 8514 1 WaitISR(0x10012) - 44 438 8514 1 Rx(0x0) - 45 286 8514 1 Start(exchange, (0x2, 0x4)) - 46 404 8514 1 Tx(0x2) - 47 404 8514 1 Tx(0xb0) - 48 404 8514 2 Tx(0x0) - 49 468 8514 2 WaitISR(0x40012) - 50 438 8514 1 Rx(0x0) - 51 468 8514 1 WaitISR(0x30012) - 52 438 8514 1 Rx(0x0) - 53 468 8514 1 WaitISR(0x20012) - 54 438 8514 1 Rx(0xa0) - 55 468 8514 1 WaitISR(0x10012) - 56 438 8514 1 Rx(0x1) - 57 286 8514 1 Start(exchange, (0x2, 0x4)) - 58 404 8514 1 Tx(0x2) - 59 404 8514 1 Tx(0x8c) - 60 404 8514 2 Tx(0x0) - 61 468 8514 2 WaitISR(0x40012) - 62 438 8514 1 Rx(0x0) - 63 468 8514 1 WaitISR(0x30012) - 0 438 8515 1 Rx(0x0) - 1 468 8515 1 WaitISR(0x20012) - 2 438 8515 1 Rx(0x1d) - 3 468 8515 1 WaitISR(0x10012) - 4 438 8515 1 Rx(0xe) - 5 286 8515 1 Start(exchange, (0x2, 0x4)) - 6 404 8515 1 Tx(0x2) - 7 404 8515 1 Tx(0xf0) - 8 404 8515 2 Tx(0x0) - 9 468 8515 2 WaitISR(0x40012) - 10 438 8515 1 Rx(0x0) - 11 468 8515 1 WaitISR(0x30012) - 12 438 8515 1 Rx(0x0) - 13 468 8515 1 WaitISR(0x20012) - 14 438 8515 1 Rx(0xab) - 15 468 8515 1 WaitISR(0x10012) - 16 438 8515 1 Rx(0x58) - 17 286 8515 1 Start(exchange, (0x2, 0x4)) - 18 404 8515 1 Tx(0x2) - 19 404 8515 1 Tx(0xcc) - 20 404 8515 2 Tx(0x0) - 21 468 8515 2 WaitISR(0x40012) - 22 438 8515 1 Rx(0x0) - 23 468 8515 1 WaitISR(0x30012) - 24 438 8515 1 Rx(0x0) - 25 468 8515 1 WaitISR(0x20012) - 26 438 8515 1 Rx(0xc4) - 27 468 8515 1 WaitISR(0x10012) - 28 438 8515 1 Rx(0xf1) -humility: ring buffer ksz8463::__RINGBUF in net: -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 11 124 3 1 Present(0x1, 0x5, 0xd) - 12 135 3 1 ReadBottom(0xd) - 13 124 3 1 Present(0x1, 0x6, 0xe) - 14 135 3 1 ReadBottom(0xe) - 15 124 3 1 Present(0x1, 0x7, 0xf) - 0 135 4 1 ReadBottom(0xf) - 1 173 4 1 ReadTop(0x8) - 2 173 4 1 ReadTop(0x9) - 3 173 4 1 ReadTop(0xa) - 4 173 4 1 ReadTop(0xb) - 5 173 4 1 ReadTop(0xc) - 6 173 4 1 ReadTop(0xd) - 7 173 4 1 ReadTop(0xe) - 8 173 4 1 ReadTop(0xf) - 9 253 4 1 Found(0x10) - 10 271 4 1 Ready(0x3) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml index b36c8529c..18945896f 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf --full-totals" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout index d201aa121..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.stdout @@ -1,280 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: - NDX LINE GEN COUNT PAYLOAD - 0 122 1 1 Ice40Rails(true, true) - 1 151 1 1 Ice40PowerGoodV1P2(true) - 2 172 1 1 Ice40PowerGoodV3P3(true) - 3 235 1 1 IdentValid(false) - 4 238 1 1 ChecksumValid(false) - 5 241 1 1 Reprogram(true) - 6 255 1 1 Programming - 7 284 1 1 Programmed - 8 287 1 1 RailsOff - 9 290 1 1 Ident(0xde01) - 10 296 1 1 A1Status(0x0) - 11 319 1 446 ClockConfigWrite - 12 327 1 1 ClockConfigSuccess - 13 328 1 1 A2 - 14 437 1 1934 GetState -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 1 438 4727 1 Rx(0x6) - 2 286 4727 1 Start(exchange, (0x2, 0x4)) - 3 404 4727 1 Tx(0x9) - 4 404 4727 1 Tx(0xf0) - 5 404 4727 2 Tx(0x0) - 6 468 4727 2 WaitISR(0x40012) - 7 438 4727 1 Rx(0x0) - 8 468 4727 1 WaitISR(0x30012) - 9 438 4727 1 Rx(0x0) - 10 468 4727 1 WaitISR(0x20012) - 11 438 4727 1 Rx(0x7) - 12 468 4727 1 WaitISR(0x10012) - 13 438 4727 1 Rx(0x6) - 14 286 4727 1 Start(write, (0x4, 0x0)) - 15 404 4727 1 Tx(0x89) - 16 404 4727 1 Tx(0xf0) - 17 404 4727 1 Tx(0x7) - 18 404 4727 1 Tx(0x46) - 19 468 4727 2 WaitISR(0x40012) - 20 438 4727 1 Rx(0x0) - 21 468 4727 1 WaitISR(0x30012) - 22 438 4727 1 Rx(0x0) - 23 468 4727 1 WaitISR(0x20012) - 24 438 4727 1 Rx(0x7) - 25 468 4727 1 WaitISR(0x10012) - 26 438 4727 1 Rx(0x6) - 27 286 4727 1 Start(exchange, (0x2, 0x4)) - 28 404 4727 1 Tx(0x0) - 29 404 4727 1 Tx(0x4c) - 30 404 4727 2 Tx(0x0) - 31 468 4727 2 WaitISR(0x40012) - 32 438 4727 1 Rx(0x0) - 33 468 4727 1 WaitISR(0x30012) - 34 438 4727 1 Rx(0x0) - 35 468 4727 1 WaitISR(0x22012) - 36 438 4727 1 Rx(0xf0) - 37 468 4727 1 WaitISR(0x10012) - 38 438 4727 1 Rx(0x0) - 39 286 4727 1 Start(write, (0x4, 0x0)) - 40 404 4727 1 Tx(0x80) - 41 404 4727 1 Tx(0x4c) - 42 404 4727 1 Tx(0xf0) - 43 404 4727 1 Tx(0x80) - 44 468 4727 2 WaitISR(0x40012) - 45 438 4727 1 Rx(0x0) - 46 468 4727 1 WaitISR(0x30012) - 47 438 4727 1 Rx(0x0) - 48 468 4727 1 WaitISR(0x20012) - 49 438 4727 1 Rx(0xf0) - 50 468 4727 1 WaitISR(0x10012) - 51 438 4727 1 Rx(0x0) - 52 286 4727 1 Start(write, (0x4, 0x0)) - 53 404 4727 1 Tx(0x80) - 54 404 4727 1 Tx(0xc) - 55 404 4727 1 Tx(0x1) - 56 404 4727 1 Tx(0x0) - 57 468 4727 2 WaitISR(0x40012) - 58 438 4727 1 Rx(0x0) - 59 468 4727 1 WaitISR(0x30012) - 60 438 4727 1 Rx(0x0) - 61 468 4727 1 WaitISR(0x20012) - 62 438 4727 1 Rx(0xf0) - 63 468 4727 1 WaitISR(0x10012) - 0 438 4728 1 Rx(0x0) -humility: ring buffer ksz8463::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 7 148 4 1 Write(IACR, 0x40f) - 8 148 4 1 Write(P1VIDCR, 0x301) - 9 148 4 1 Write(P2VIDCR, 0x302) - 10 148 4 1 Write(P3VIDCR, 0x3ff) - 11 134 4 1 Read(P1CR1, 0x0) - 12 148 4 1 Write(P1CR1, 0x202) - 13 134 4 1 Read(P2CR1, 0x0) - 14 148 4 1 Write(P2CR1, 0x202) - 15 134 4 1 Read(P3CR1, 0x0) - 0 148 5 1 Write(P3CR1, 0x4) - 1 148 5 1 Write(SGCR9, 0xa) - 2 134 5 1 Read(P3CR2, 0x607) - 3 148 5 1 Write(P3CR2, 0x4607) - 4 134 5 1 Read(SGCR2, 0xf0) - 5 148 5 1 Write(SGCR2, 0x80f0) - 6 148 5 1 Write(CIDER, 0x1) -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: - NDX LINE GEN COUNT PAYLOAD - 14 609 14 1 Execute((0x2fc, DropN(0x2))) - 15 609 14 1 Execute((0x2fe, DropN(0x5))) - 16 609 14 1 Execute((0x300, Push(0x4))) - 17 609 14 1 Execute((0x302, Push(0x0))) - 18 609 14 1 Execute((0x304, PushNone)) - 19 609 14 1 Execute((0x305, PushNone)) - 20 609 14 1 Execute((0x306, Push(0x25))) - 21 609 14 1 Execute((0x308, Push(0x20))) - 22 609 14 1 Execute((0x30a, Push(0x1))) - 23 609 14 1 Execute((0x30c, Call(TargetFunction(0x2)))) - 24 609 14 1 Execute((0x30e, DropN(0x2))) - 25 609 14 1 Execute((0x310, Push(0x79))) - 26 609 14 1 Execute((0x312, Push(0x2))) - 27 609 14 1 Execute((0x314, Call(TargetFunction(0x2)))) - 28 609 14 1 Execute((0x316, DropN(0x2))) - 29 609 14 1 Execute((0x318, Push(0x88))) - 30 609 14 1 Execute((0x31a, Push(0x2))) - 31 609 14 1 Execute((0x31c, Call(TargetFunction(0x2)))) - 32 609 14 1 Execute((0x31e, DropN(0x2))) - 33 609 14 1 Execute((0x320, Push(0x8b))) - 34 609 14 1 Execute((0x322, Push(0x2))) - 35 609 14 1 Execute((0x324, Call(TargetFunction(0x2)))) - 36 609 14 1 Execute((0x326, DropN(0x2))) - 37 609 14 1 Execute((0x328, Push(0x8c))) - 38 609 14 1 Execute((0x32a, Push(0x2))) - 39 609 14 1 Execute((0x32c, Call(TargetFunction(0x2)))) - 40 609 14 1 Execute((0x32e, DropN(0x2))) - 41 609 14 1 Execute((0x330, Push(0x8d))) - 42 609 14 1 Execute((0x332, Push(0x2))) - 43 609 14 1 Execute((0x334, Call(TargetFunction(0x2)))) - 44 609 14 1 Execute((0x336, DropN(0x2))) - 45 609 14 1 Execute((0x338, DropN(0x5))) - 46 609 14 1 Execute((0x33a, Push(0x4))) - 47 609 14 1 Execute((0x33c, Push(0x0))) - 48 609 14 1 Execute((0x33e, PushNone)) - 49 609 14 1 Execute((0x33f, PushNone)) - 50 609 14 1 Execute((0x340, Push(0x67))) - 51 609 14 1 Execute((0x342, Push(0x20))) - 52 609 14 1 Execute((0x344, Push(0x1))) - 53 609 14 1 Execute((0x346, Call(TargetFunction(0x2)))) - 54 609 14 1 Execute((0x348, DropN(0x2))) - 55 609 14 1 Execute((0x34a, Push(0x79))) - 56 609 14 1 Execute((0x34c, Push(0x2))) - 57 609 14 1 Execute((0x34e, Call(TargetFunction(0x2)))) - 58 609 14 1 Execute((0x350, DropN(0x2))) - 59 609 14 1 Execute((0x352, Push(0x88))) - 60 609 14 1 Execute((0x354, Push(0x2))) - 61 609 14 1 Execute((0x356, Call(TargetFunction(0x2)))) - 62 609 14 1 Execute((0x358, DropN(0x2))) - 63 609 14 1 Execute((0x35a, Push(0x8b))) - 0 609 15 1 Execute((0x35c, Push(0x2))) - 1 609 15 1 Execute((0x35e, Call(TargetFunction(0x2)))) - 2 609 15 1 Execute((0x360, DropN(0x2))) - 3 609 15 1 Execute((0x362, Push(0x8c))) - 4 609 15 1 Execute((0x364, Push(0x2))) - 5 609 15 1 Execute((0x366, Call(TargetFunction(0x2)))) - 6 609 15 1 Execute((0x368, DropN(0x2))) - 7 609 15 1 Execute((0x36a, Push(0x8d))) - 8 609 15 1 Execute((0x36c, Push(0x2))) - 9 609 15 1 Execute((0x36e, Call(TargetFunction(0x2)))) - 10 609 15 1 Execute((0x370, DropN(0x2))) - 11 609 15 1 Execute((0x372, DropN(0x5))) - 12 609 15 1 Execute((0x374, Done)) - 13 613 15 1 Success -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 2 124 3 1 Present(0x1, 0x5, 0xd) - 3 135 3 1 ReadBottom(0xd) - 4 124 3 1 Present(0x1, 0x6, 0xe) - 5 135 3 1 ReadBottom(0xe) - 6 124 3 1 Present(0x1, 0x7, 0xf) - 7 135 3 1 ReadBottom(0xf) - 8 173 3 1 ReadTop(0x8) - 9 173 3 1 ReadTop(0x9) - 10 173 3 1 ReadTop(0xa) - 11 173 3 1 ReadTop(0xb) - 12 173 3 1 ReadTop(0xc) - 13 173 3 1 ReadTop(0xd) - 14 173 3 1 ReadTop(0xe) - 15 173 3 1 ReadTop(0xf) - 0 253 4 1 Found(0x10) - 1 271 4 1 Ready(0x0) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 0 26 1 1 Vsc8562InitSgmii(0x1e) - 1 23 1 1 ViperPatch(0x1e) - 2 133 1 1 GotCrc(0xfb48) diff --git a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml index 95fe902f1..b846ca24c 100644 --- a/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf-full-totals/ringbuf-full-totals.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf --full-totals" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr index 17900c3e9..2c46f9749 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stderr @@ -1,5 +1,2 @@ humility: attached to dump -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 -humility: ringbuf dump failed: loading value of type struct UnsafeCell> at address 0x0 +humility ringbuf failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout index b01ec2b4c..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.stdout @@ -1,202 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 104 61 1 WriteConfig(CommandData(0x3f3d)) - 1 104 61 1 WriteConfig(CommandData(0x3f37)) - 2 104 61 1 WriteConfig(CommandData(0x3f3d)) - 3 104 61 1 WriteConfig(CommandData(0x3f37)) - 4 104 61 1 WriteConfig(CommandData(0x3f3d)) - 5 104 61 1 WriteConfig(CommandData(0x3f37)) - 6 104 61 1 WriteConfig(CommandData(0x3f3d)) - 7 104 61 1 WriteConfig(CommandData(0x3f37)) - 8 104 61 1 WriteConfig(CommandData(0x3f3d)) - 9 104 61 1 WriteConfig(CommandData(0x3f37)) - 10 104 61 1 WriteConfig(CommandData(0x3f3d)) - 11 104 61 1 WriteConfig(CommandData(0x3f37)) - 12 104 61 1 WriteConfig(CommandData(0x3f3d)) - 13 104 61 1 WriteConfig(CommandData(0x3f37)) - 14 104 61 1 WriteConfig(CommandData(0x3f3d)) - 15 104 61 1 WriteConfig(CommandData(0x3f37)) - 16 104 61 1 WriteConfig(CommandData(0x3f3d)) - 17 104 61 1 WriteConfig(CommandData(0x3f37)) - 18 104 61 1 WriteConfig(CommandData(0x3f3d)) - 19 104 61 1 WriteConfig(CommandData(0x3f37)) - 20 104 61 1 WriteConfig(CommandData(0x3f3d)) - 21 104 61 1 WriteConfig(CommandData(0x3f37)) - 22 104 61 1 WriteConfig(CommandData(0x3f3d)) - 23 104 61 1 WriteConfig(CommandData(0x3f37)) - 24 104 61 1 WriteConfig(CommandData(0x3f3d)) - 25 104 61 1 WriteConfig(CommandData(0x3f37)) - 26 104 61 1 WriteConfig(CommandData(0x3f3d)) - 27 104 61 1 WriteConfig(CommandData(0x3f37)) - 28 104 61 1 WriteConfig(CommandData(0x3f3d)) - 29 104 61 1 WriteConfig(CommandData(0x3f37)) - 30 104 61 1 WriteConfig(CommandData(0x3f3d)) - 31 104 61 1 WriteConfig(CommandData(0x3f37)) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 35 514 7114 1 WriteWaitISR(0x8020) - 36 514 7114 2 WriteWaitISR(0x8021) - 37 514 7114 1 WriteWaitISR(0x8061) - 38 576 7114 2 ReadISR(0x8021) - 39 576 7114 1 ReadISR(0x8025) - 40 576 7114 2 ReadISR(0x8021) - 41 576 7114 1 ReadISR(0x8025) - 42 611 7114 3 ReadWaitISR(0x8021) - 43 611 7114 1 ReadWaitISR(0x8061) - 44 394 7114 1 WaitISR(0x21) - 45 484 7114 1 WriteISR(0x21) - 46 484 7114 2 WriteISR(0x8021) - 47 484 7114 1 WriteISR(0x8023) - 0 514 7115 1 WriteWaitISR(0x8020) - 1 514 7115 2 WriteWaitISR(0x8021) - 2 514 7115 1 WriteWaitISR(0x8061) - 3 576 7115 2 ReadISR(0x8021) - 4 576 7115 1 ReadISR(0x8025) - 5 576 7115 2 ReadISR(0x8021) - 6 576 7115 1 ReadISR(0x8025) - 7 611 7115 3 ReadWaitISR(0x8021) - 8 611 7115 1 ReadWaitISR(0x8061) - 9 394 7115 1 WaitISR(0x21) - 10 484 7115 1 WriteISR(0x21) - 11 484 7115 2 WriteISR(0x8021) - 12 484 7115 1 WriteISR(0x8023) - 13 514 7115 1 WriteWaitISR(0x8020) - 14 514 7115 2 WriteWaitISR(0x8021) - 15 514 7115 1 WriteWaitISR(0x8061) - 16 576 7115 2 ReadISR(0x8021) - 17 576 7115 1 ReadISR(0x8025) - 18 576 7115 2 ReadISR(0x8021) - 19 576 7115 1 ReadISR(0x8025) - 20 611 7115 3 ReadWaitISR(0x8021) - 21 611 7115 1 ReadWaitISR(0x8061) - 22 394 7115 1 WaitISR(0x21) - 23 484 7115 1 WriteISR(0x21) - 24 484 7115 2 WriteISR(0x8021) - 25 484 7115 1 WriteISR(0x8023) - 26 514 7115 1 WriteWaitISR(0x8020) - 27 514 7115 2 WriteWaitISR(0x8021) - 28 514 7115 1 WriteWaitISR(0x8061) - 29 576 7115 2 ReadISR(0x8021) - 30 576 7115 1 ReadISR(0x8025) - 31 576 7115 2 ReadISR(0x8021) - 32 576 7115 1 ReadISR(0x8025) - 33 611 7115 3 ReadWaitISR(0x8021) - 34 611 7115 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 10 134 92 1 None - 11 112 92 1 Some(NoDevice) - 12 112 92 1 Some(BusLocked) - 13 134 92 1 None - 14 112 92 1 Some(NoDevice) - 15 112 92 1 Some(BusLocked) - 0 134 93 1 None - 1 112 93 1 Some(NoDevice) - 2 112 93 1 Some(BusLocked) - 3 134 93 1 None - 4 112 93 1 Some(NoDevice) - 5 112 93 1 Some(BusLocked) - 6 134 93 1 None - 7 112 93 1 Some(NoDevice) - 8 112 93 1 Some(BusLocked) - 9 134 93 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 29 468 8514 1 WaitISR(0x20012) - 30 438 8514 1 Rx(0x4a) - 31 468 8514 1 WaitISR(0x10012) - 32 438 8514 1 Rx(0x0) - 33 286 8514 1 Start(exchange, (0x2, 0x4)) - 34 404 8514 1 Tx(0x2) - 35 404 8514 1 Tx(0x70) - 36 404 8514 2 Tx(0x0) - 37 468 8514 2 WaitISR(0x40012) - 38 438 8514 1 Rx(0x0) - 39 468 8514 1 WaitISR(0x30012) - 40 438 8514 1 Rx(0x0) - 41 468 8514 1 WaitISR(0x20012) - 42 438 8514 1 Rx(0x0) - 43 468 8514 1 WaitISR(0x10012) - 44 438 8514 1 Rx(0x0) - 45 286 8514 1 Start(exchange, (0x2, 0x4)) - 46 404 8514 1 Tx(0x2) - 47 404 8514 1 Tx(0xb0) - 48 404 8514 2 Tx(0x0) - 49 468 8514 2 WaitISR(0x40012) - 50 438 8514 1 Rx(0x0) - 51 468 8514 1 WaitISR(0x30012) - 52 438 8514 1 Rx(0x0) - 53 468 8514 1 WaitISR(0x20012) - 54 438 8514 1 Rx(0xa0) - 55 468 8514 1 WaitISR(0x10012) - 56 438 8514 1 Rx(0x1) - 57 286 8514 1 Start(exchange, (0x2, 0x4)) - 58 404 8514 1 Tx(0x2) - 59 404 8514 1 Tx(0x8c) - 60 404 8514 2 Tx(0x0) - 61 468 8514 2 WaitISR(0x40012) - 62 438 8514 1 Rx(0x0) - 63 468 8514 1 WaitISR(0x30012) - 0 438 8515 1 Rx(0x0) - 1 468 8515 1 WaitISR(0x20012) - 2 438 8515 1 Rx(0x1d) - 3 468 8515 1 WaitISR(0x10012) - 4 438 8515 1 Rx(0xe) - 5 286 8515 1 Start(exchange, (0x2, 0x4)) - 6 404 8515 1 Tx(0x2) - 7 404 8515 1 Tx(0xf0) - 8 404 8515 2 Tx(0x0) - 9 468 8515 2 WaitISR(0x40012) - 10 438 8515 1 Rx(0x0) - 11 468 8515 1 WaitISR(0x30012) - 12 438 8515 1 Rx(0x0) - 13 468 8515 1 WaitISR(0x20012) - 14 438 8515 1 Rx(0xab) - 15 468 8515 1 WaitISR(0x10012) - 16 438 8515 1 Rx(0x58) - 17 286 8515 1 Start(exchange, (0x2, 0x4)) - 18 404 8515 1 Tx(0x2) - 19 404 8515 1 Tx(0xcc) - 20 404 8515 2 Tx(0x0) - 21 468 8515 2 WaitISR(0x40012) - 22 438 8515 1 Rx(0x0) - 23 468 8515 1 WaitISR(0x30012) - 24 438 8515 1 Rx(0x0) - 25 468 8515 1 WaitISR(0x20012) - 26 438 8515 1 Rx(0xc4) - 27 468 8515 1 WaitISR(0x10012) - 28 438 8515 1 Rx(0xf1) -humility: ring buffer ksz8463::__RINGBUF in net: -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 11 124 3 1 Present(0x1, 0x5, 0xd) - 12 135 3 1 ReadBottom(0xd) - 13 124 3 1 Present(0x1, 0x6, 0xe) - 14 135 3 1 ReadBottom(0xe) - 15 124 3 1 Present(0x1, 0x7, 0xf) - 0 135 4 1 ReadBottom(0xf) - 1 173 4 1 ReadTop(0x8) - 2 173 4 1 ReadTop(0x9) - 3 173 4 1 ReadTop(0xa) - 4 173 4 1 ReadTop(0xb) - 5 173 4 1 ReadTop(0xc) - 6 173 4 1 ReadTop(0xd) - 7 173 4 1 ReadTop(0xe) - 8 173 4 1 ReadTop(0xf) - 9 253 4 1 Found(0x10) - 10 271 4 1 Ready(0x3) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml index ec7d6e50c..80acafbff 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.flash-ram-mismatch.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.flash-ram-mismatch.0 ringbuf" - +status.code = 1 diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr index da2ede4a0..4d0b0a965 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility ringbuf failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout index d201aa121..e69de29bb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.stdout @@ -1,280 +0,0 @@ -humility: ring buffer drv_gimlet_seq_server::__RINGBUF in gimlet_seq: - NDX LINE GEN COUNT PAYLOAD - 0 122 1 1 Ice40Rails(true, true) - 1 151 1 1 Ice40PowerGoodV1P2(true) - 2 172 1 1 Ice40PowerGoodV3P3(true) - 3 235 1 1 IdentValid(false) - 4 238 1 1 ChecksumValid(false) - 5 241 1 1 Reprogram(true) - 6 255 1 1 Programming - 7 284 1 1 Programmed - 8 287 1 1 RailsOff - 9 290 1 1 Ident(0xde01) - 10 296 1 1 A1Status(0x0) - 11 319 1 446 ClockConfigWrite - 12 327 1 1 ClockConfigSuccess - 13 328 1 1 A2 - 14 437 1 1934 GetState -humility: ring buffer drv_i2c_devices::adm1272::__RINGBUF in power: - NDX LINE GEN COUNT PAYLOAD - 0 94 1 1 Config(CommandData(0x3f3f)) - 1 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 2 165 1 1 Coefficients(Coefficients { m: 0x297, b: 0x5000, R: 0xff }) - 3 193 1 1 Coefficients(Coefficients { m: 0x2927, b: 0x0, R: 0xfd }) - 4 94 1 1 Config(CommandData(0x3f3f)) - 5 147 1 1 Coefficients(Coefficients { m: 0xfde, b: 0x0, R: 0xfe }) - 6 165 1 1 Coefficients(Coefficients { m: 0x52e, b: 0x5000, R: 0xff }) - 7 193 1 1 Coefficients(Coefficients { m: 0x524e, b: 0x0, R: 0xfd }) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 39 514 12815 1 WriteWaitISR(0x8020) - 40 514 12815 2 WriteWaitISR(0x8021) - 41 514 12815 1 WriteWaitISR(0x8061) - 42 576 12815 2 ReadISR(0x8021) - 43 576 12815 1 ReadISR(0x8025) - 44 576 12815 2 ReadISR(0x8021) - 45 576 12815 1 ReadISR(0x8025) - 46 611 12815 3 ReadWaitISR(0x8021) - 47 611 12815 1 ReadWaitISR(0x8061) - 0 394 12816 1 WaitISR(0x21) - 1 484 12816 1 WriteISR(0x21) - 2 484 12816 2 WriteISR(0x8021) - 3 484 12816 1 WriteISR(0x8023) - 4 514 12816 1 WriteWaitISR(0x8020) - 5 514 12816 2 WriteWaitISR(0x8021) - 6 514 12816 1 WriteWaitISR(0x8061) - 7 576 12816 2 ReadISR(0x8021) - 8 576 12816 1 ReadISR(0x8025) - 9 576 12816 2 ReadISR(0x8021) - 10 576 12816 1 ReadISR(0x8025) - 11 611 12816 3 ReadWaitISR(0x8021) - 12 611 12816 1 ReadWaitISR(0x8061) - 13 394 12816 1 WaitISR(0x21) - 14 484 12816 1 WriteISR(0x21) - 15 484 12816 2 WriteISR(0x8021) - 16 484 12816 1 WriteISR(0x8023) - 17 514 12816 1 WriteWaitISR(0x8020) - 18 514 12816 2 WriteWaitISR(0x8021) - 19 514 12816 1 WriteWaitISR(0x8061) - 20 576 12816 2 ReadISR(0x8021) - 21 576 12816 1 ReadISR(0x8025) - 22 576 12816 2 ReadISR(0x8021) - 23 576 12816 1 ReadISR(0x8025) - 24 611 12816 3 ReadWaitISR(0x8021) - 25 611 12816 1 ReadWaitISR(0x8061) - 26 394 12816 1 WaitISR(0x21) - 27 484 12816 1 WriteISR(0x21) - 28 484 12816 2 WriteISR(0x8021) - 29 484 12816 1 WriteISR(0x8023) - 30 514 12816 1 WriteWaitISR(0x8020) - 31 514 12816 2 WriteWaitISR(0x8021) - 32 514 12816 1 WriteWaitISR(0x8061) - 33 576 12816 2 ReadISR(0x8021) - 34 576 12816 1 ReadISR(0x8025) - 35 576 12816 2 ReadISR(0x8021) - 36 576 12816 1 ReadISR(0x8025) - 37 611 12816 3 ReadWaitISR(0x8021) - 38 611 12816 1 ReadWaitISR(0x8061) -humility: ring buffer drv_stm32h7_i2c::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 0 764 1 1 AddrISR(0x1) - 1 787 1 1 WaitAddr -humility: ring buffer drv_stm32h7_i2c_server::__RINGBUF in i2c_driver: - NDX LINE GEN COUNT PAYLOAD - 7 134 182 1 None - 8 112 182 1 Some(NoDevice) - 9 112 182 1 Some(BusLockedMux) - 10 134 182 1 None - 11 112 182 1 Some(NoDevice) - 12 112 182 1 Some(BusLockedMux) - 13 134 182 1 None - 14 112 182 1 Some(NoDevice) - 15 112 182 1 Some(BusLockedMux) - 0 134 183 1 None - 1 112 183 1 Some(NoDevice) - 2 112 183 1 Some(BusLockedMux) - 3 134 183 1 None - 4 112 183 1 Some(NoDevice) - 5 112 183 1 Some(BusLockedMux) - 6 134 183 1 None -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi4_driver: -humility: ring buffer drv_stm32h7_spi_server::__RINGBUF in spi2_driver: - NDX LINE GEN COUNT PAYLOAD - 1 438 4727 1 Rx(0x6) - 2 286 4727 1 Start(exchange, (0x2, 0x4)) - 3 404 4727 1 Tx(0x9) - 4 404 4727 1 Tx(0xf0) - 5 404 4727 2 Tx(0x0) - 6 468 4727 2 WaitISR(0x40012) - 7 438 4727 1 Rx(0x0) - 8 468 4727 1 WaitISR(0x30012) - 9 438 4727 1 Rx(0x0) - 10 468 4727 1 WaitISR(0x20012) - 11 438 4727 1 Rx(0x7) - 12 468 4727 1 WaitISR(0x10012) - 13 438 4727 1 Rx(0x6) - 14 286 4727 1 Start(write, (0x4, 0x0)) - 15 404 4727 1 Tx(0x89) - 16 404 4727 1 Tx(0xf0) - 17 404 4727 1 Tx(0x7) - 18 404 4727 1 Tx(0x46) - 19 468 4727 2 WaitISR(0x40012) - 20 438 4727 1 Rx(0x0) - 21 468 4727 1 WaitISR(0x30012) - 22 438 4727 1 Rx(0x0) - 23 468 4727 1 WaitISR(0x20012) - 24 438 4727 1 Rx(0x7) - 25 468 4727 1 WaitISR(0x10012) - 26 438 4727 1 Rx(0x6) - 27 286 4727 1 Start(exchange, (0x2, 0x4)) - 28 404 4727 1 Tx(0x0) - 29 404 4727 1 Tx(0x4c) - 30 404 4727 2 Tx(0x0) - 31 468 4727 2 WaitISR(0x40012) - 32 438 4727 1 Rx(0x0) - 33 468 4727 1 WaitISR(0x30012) - 34 438 4727 1 Rx(0x0) - 35 468 4727 1 WaitISR(0x22012) - 36 438 4727 1 Rx(0xf0) - 37 468 4727 1 WaitISR(0x10012) - 38 438 4727 1 Rx(0x0) - 39 286 4727 1 Start(write, (0x4, 0x0)) - 40 404 4727 1 Tx(0x80) - 41 404 4727 1 Tx(0x4c) - 42 404 4727 1 Tx(0xf0) - 43 404 4727 1 Tx(0x80) - 44 468 4727 2 WaitISR(0x40012) - 45 438 4727 1 Rx(0x0) - 46 468 4727 1 WaitISR(0x30012) - 47 438 4727 1 Rx(0x0) - 48 468 4727 1 WaitISR(0x20012) - 49 438 4727 1 Rx(0xf0) - 50 468 4727 1 WaitISR(0x10012) - 51 438 4727 1 Rx(0x0) - 52 286 4727 1 Start(write, (0x4, 0x0)) - 53 404 4727 1 Tx(0x80) - 54 404 4727 1 Tx(0xc) - 55 404 4727 1 Tx(0x1) - 56 404 4727 1 Tx(0x0) - 57 468 4727 2 WaitISR(0x40012) - 58 438 4727 1 Rx(0x0) - 59 468 4727 1 WaitISR(0x30012) - 60 438 4727 1 Rx(0x0) - 61 468 4727 1 WaitISR(0x20012) - 62 438 4727 1 Rx(0xf0) - 63 468 4727 1 WaitISR(0x10012) - 0 438 4728 1 Rx(0x0) -humility: ring buffer ksz8463::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 7 148 4 1 Write(IACR, 0x40f) - 8 148 4 1 Write(P1VIDCR, 0x301) - 9 148 4 1 Write(P2VIDCR, 0x302) - 10 148 4 1 Write(P3VIDCR, 0x3ff) - 11 134 4 1 Read(P1CR1, 0x0) - 12 148 4 1 Write(P1CR1, 0x202) - 13 134 4 1 Read(P2CR1, 0x0) - 14 148 4 1 Write(P2CR1, 0x202) - 15 134 4 1 Read(P3CR1, 0x0) - 0 148 5 1 Write(P3CR1, 0x4) - 1 148 5 1 Write(SGCR9, 0xa) - 2 134 5 1 Read(P3CR2, 0x607) - 3 148 5 1 Write(P3CR2, 0x4607) - 4 134 5 1 Read(SGCR2, 0xf0) - 5 148 5 1 Write(SGCR2, 0x80f0) - 6 148 5 1 Write(CIDER, 0x1) -humility: ring buffer task_hiffy::stm32h7::__RINGBUF in hiffy: - NDX LINE GEN COUNT PAYLOAD - 14 609 14 1 Execute((0x2fc, DropN(0x2))) - 15 609 14 1 Execute((0x2fe, DropN(0x5))) - 16 609 14 1 Execute((0x300, Push(0x4))) - 17 609 14 1 Execute((0x302, Push(0x0))) - 18 609 14 1 Execute((0x304, PushNone)) - 19 609 14 1 Execute((0x305, PushNone)) - 20 609 14 1 Execute((0x306, Push(0x25))) - 21 609 14 1 Execute((0x308, Push(0x20))) - 22 609 14 1 Execute((0x30a, Push(0x1))) - 23 609 14 1 Execute((0x30c, Call(TargetFunction(0x2)))) - 24 609 14 1 Execute((0x30e, DropN(0x2))) - 25 609 14 1 Execute((0x310, Push(0x79))) - 26 609 14 1 Execute((0x312, Push(0x2))) - 27 609 14 1 Execute((0x314, Call(TargetFunction(0x2)))) - 28 609 14 1 Execute((0x316, DropN(0x2))) - 29 609 14 1 Execute((0x318, Push(0x88))) - 30 609 14 1 Execute((0x31a, Push(0x2))) - 31 609 14 1 Execute((0x31c, Call(TargetFunction(0x2)))) - 32 609 14 1 Execute((0x31e, DropN(0x2))) - 33 609 14 1 Execute((0x320, Push(0x8b))) - 34 609 14 1 Execute((0x322, Push(0x2))) - 35 609 14 1 Execute((0x324, Call(TargetFunction(0x2)))) - 36 609 14 1 Execute((0x326, DropN(0x2))) - 37 609 14 1 Execute((0x328, Push(0x8c))) - 38 609 14 1 Execute((0x32a, Push(0x2))) - 39 609 14 1 Execute((0x32c, Call(TargetFunction(0x2)))) - 40 609 14 1 Execute((0x32e, DropN(0x2))) - 41 609 14 1 Execute((0x330, Push(0x8d))) - 42 609 14 1 Execute((0x332, Push(0x2))) - 43 609 14 1 Execute((0x334, Call(TargetFunction(0x2)))) - 44 609 14 1 Execute((0x336, DropN(0x2))) - 45 609 14 1 Execute((0x338, DropN(0x5))) - 46 609 14 1 Execute((0x33a, Push(0x4))) - 47 609 14 1 Execute((0x33c, Push(0x0))) - 48 609 14 1 Execute((0x33e, PushNone)) - 49 609 14 1 Execute((0x33f, PushNone)) - 50 609 14 1 Execute((0x340, Push(0x67))) - 51 609 14 1 Execute((0x342, Push(0x20))) - 52 609 14 1 Execute((0x344, Push(0x1))) - 53 609 14 1 Execute((0x346, Call(TargetFunction(0x2)))) - 54 609 14 1 Execute((0x348, DropN(0x2))) - 55 609 14 1 Execute((0x34a, Push(0x79))) - 56 609 14 1 Execute((0x34c, Push(0x2))) - 57 609 14 1 Execute((0x34e, Call(TargetFunction(0x2)))) - 58 609 14 1 Execute((0x350, DropN(0x2))) - 59 609 14 1 Execute((0x352, Push(0x88))) - 60 609 14 1 Execute((0x354, Push(0x2))) - 61 609 14 1 Execute((0x356, Call(TargetFunction(0x2)))) - 62 609 14 1 Execute((0x358, DropN(0x2))) - 63 609 14 1 Execute((0x35a, Push(0x8b))) - 0 609 15 1 Execute((0x35c, Push(0x2))) - 1 609 15 1 Execute((0x35e, Call(TargetFunction(0x2)))) - 2 609 15 1 Execute((0x360, DropN(0x2))) - 3 609 15 1 Execute((0x362, Push(0x8c))) - 4 609 15 1 Execute((0x364, Push(0x2))) - 5 609 15 1 Execute((0x366, Call(TargetFunction(0x2)))) - 6 609 15 1 Execute((0x368, DropN(0x2))) - 7 609 15 1 Execute((0x36a, Push(0x8d))) - 8 609 15 1 Execute((0x36c, Push(0x2))) - 9 609 15 1 Execute((0x36e, Call(TargetFunction(0x2)))) - 10 609 15 1 Execute((0x370, DropN(0x2))) - 11 609 15 1 Execute((0x372, DropN(0x5))) - 12 609 15 1 Execute((0x374, Done)) - 13 613 15 1 Success -humility: ring buffer task_jefe::external::__RINGBUF in jefe: -humility: ring buffer task_net::mgmt::__RINGBUF in net: -humility: ring buffer task_spd::__RINGBUF in spd: - NDX LINE GEN COUNT PAYLOAD - 2 124 3 1 Present(0x1, 0x5, 0xd) - 3 135 3 1 ReadBottom(0xd) - 4 124 3 1 Present(0x1, 0x6, 0xe) - 5 135 3 1 ReadBottom(0xe) - 6 124 3 1 Present(0x1, 0x7, 0xf) - 7 135 3 1 ReadBottom(0xf) - 8 173 3 1 ReadTop(0x8) - 9 173 3 1 ReadTop(0x9) - 10 173 3 1 ReadTop(0xa) - 11 173 3 1 ReadTop(0xb) - 12 173 3 1 ReadTop(0xc) - 13 173 3 1 ReadTop(0xd) - 14 173 3 1 ReadTop(0xe) - 15 173 3 1 ReadTop(0xf) - 0 253 4 1 Found(0x10) - 1 271 4 1 Ready(0x0) -humility: ring buffer task_thermal::__RINGBUF in thermal: - NDX LINE GEN COUNT PAYLOAD - 0 225 1 1 Start - 1 105 1 1 ThermalMode(Manual) -humility: ring buffer task_validate::__RINGBUF in validate: -humility: ring buffer vsc85xx::__RINGBUF in net: - NDX LINE GEN COUNT PAYLOAD - 0 26 1 1 Vsc8562InitSgmii(0x1e) - 1 23 1 1 ViperPatch(0x1e) - 2 133 1 1 GotCrc(0xfb48) diff --git a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml index cff32f635..7322459fb 100644 --- a/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/ringbuf/ringbuf.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 ringbuf" - +status.code = 1 diff --git a/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr index 8c01ecda6..9a116aa2f 100644 --- a/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/sensors-read/sensors-read.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility sensors failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility sensors failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr b/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr index 9bec5a442..7d4fed6ea 100644 --- a/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/sensors-read/sensors-read.in_bootloader.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility sensors failed: could not find LAST_READING +humility sensors failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr index 7c85a97c3..0cf22e628 100644 --- a/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/spd/spd.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility spd failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility spd failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr index da2ede4a0..7ac96d936 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility spd failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout index 0eba36fdf..e69de29bb 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.stdout @@ -1,17 +0,0 @@ -ADDR MANUFACTURER PART WEEK YEAR - 0 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 1 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 2 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 3 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 4 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 5 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 6 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 7 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 8 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 9 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 10 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 11 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 12 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 13 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 14 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 - 15 Micron Technology 36ASF8G72PZ-3G2E1 44 2021 diff --git a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml index f4c97ad74..0f8d67000 100644 --- a/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/spd/spd.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 spd" - +status.code = 1 diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr index 9d60876da..bcd6ac4ce 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility stackmargin failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility stackmargin failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr index da2ede4a0..bc0b43de3 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility stackmargin failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout index 259f7efe4..e69de29bb 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.stdout @@ -1,19 +0,0 @@ -ID TASK STACKBASE STACKSIZE MAXDEPTH MARGIN - 0 jefe 0x2001b000 1536 344 1192 - 1 net 0x20004000 4640 3632 1008 - 2 sys 0x2001e000 896 216 680 - 3 spi4_driver 0x2001b800 872 288 584 - 4 spi2_driver 0x2001c000 872 520 352 - 5 i2c_driver 0x2001c800 896 576 320 - 6 spd 0x20010000 896 448 448 - 7 thermal 0x20002000 4504 3504 1000 - 8 power 0x20016000 2048 1360 688 - 9 hiffy 0x20008000 1024 752 272 -10 gimlet_seq 0x20017000 1600 712 888 -11 hash_driver 0x20018000 2048 992 1056 -12 hf 0x2001d000 1920 664 1256 -13 sensor 0x2001d800 1920 1408 512 -14 udpecho 0x20014000 4096 648 3448 -15 udpbroadcast 0x20019000 2048 280 1768 -16 validate 0x2001a000 1000 192 808 -17 idle 0x2001e400 256 104 152 diff --git a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml index b2a5c60e3..1d49d773f 100644 --- a/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/stackmargin/stackmargin.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 stackmargin" - +status.code = 1 diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr index 07fadb46d..f19779cb6 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility tasks failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility tasks failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr index da2ede4a0..691e63afc 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility tasks failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout index c8d5d92f7..e69de29bb 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.stdout @@ -1,1136 +0,0 @@ -system time = 972988 -ID TASK GEN PRI STATE - 0 jefe 0 0 recv, notif: bit0 bit1(T+12) - | - +---> 0x2001b530 0x0806561c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001b600 0x080642ea userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001b600 0x080642ea idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x2001b600 0x080642ea main - | @ /hubris/task/jefe/src/main.rs:143:9 - | - | - +---> R0 = 0x2001b598 R1 = 0x00000008 R2 = 0x00000003 R3 = 0x2001b5dc - | R4 = 0x2001b598 R5 = 0x00000008 R6 = 0x00000003 R7 = 0x00000000 - | R8 = 0x00000004 R9 = 0x00000002 R10 = 0x2001b63c R11 = 0x00000001 - | R12 = 0x2001b594 SP = 0x2001b510 LR = 0x080642eb PC = 0x0806561c - | PSR = 0x61000000 - | - +-----------> 0x20000410 Task { - save: SavedState { - r4: 0x2001b598, - r5: 0x8, - r6: 0x3, - r7: 0x0, - r8: 0x4, - r9: 0x2, - r10: 0x2001b63c, - r11: 0x1, - psp: 0x2001b4a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0xffffffff - }, - priority: Priority(0x0), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8c8)), - to_post: NotificationSet(0x2) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001070 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f70 (&abi::TaskDesc) - } - - 1 net 0 5 recv, notif: bit0(irq61) bit1(T+18) - | - +---> 0x20004b58 0x08030666 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20005220 0x08025dc8 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20005220 0x08025dc8 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20005220 0x08025dc8 main - | @ /hubris/task/net/src/main.rs:184:13 - | - | - +---> R0 = 0x20004fb0 R1 = 0x00000020 R2 = 0x00000003 R3 = 0x200050f8 - | R4 = 0x20004fb0 R5 = 0x00000020 R6 = 0x00000003 R7 = 0x00000000 - | R8 = 0x00000400 R9 = 0x20007a38 R10 = 0x00000040 R11 = 0x00000001 - | R12 = 0x20004fd0 SP = 0x20004b38 LR = 0x08025dc9 PC = 0x08030666 - | PSR = 0x41000000 - | - +-----------> 0x200004c0 Task { - save: SavedState { - r4: 0x20004fb0, - r5: 0x20, - r6: 0x3, - r7: 0x0, - r8: 0x400, - r9: 0x20007a38, - r10: 0x40, - r11: 0x1, - psp: 0x20004ad0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8ce)), - to_post: NotificationSet(0x2) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001090 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f84 (&abi::TaskDesc) - } - - 2 sys 0 1 recv - | - +---> 0x2001e330 0x0806c6dc userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001e380 0x0806c1b0 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001e380 0x0806c1b0 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001e380 0x0806c1b0 main - | @ /hubris/drv/stm32xx-sys/src/main.rs:140:9 - | - | - +---> R0 = 0x2001e368 R1 = 0x00000005 R2 = 0x00000000 R3 = 0x2001e340 - | R4 = 0x2001e368 R5 = 0x00000005 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x5802447c R9 = 0x2001e377 R10 = 0x00000010 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x2001e310 LR = 0x0806c1b1 PC = 0x0806c6dc - | PSR = 0x41000000 - | - +-----------> 0x20000570 Task { - save: SavedState { - r4: 0x2001e368, - r5: 0x5, - r6: 0x0, - r7: 0x0, - r8: 0x5802447c, - r9: 0x2001e377, - r10: 0x10, - r11: 0x1, - psp: 0x2001e2a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x1), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010b0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004f98 (&abi::TaskDesc) - } - - 3 spi4_driver 0 3 recv - | - +---> 0x2001bb08 0x08041ff2 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001bb68 0x080405de userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001bb68 0x080405de idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001bb68 0x080405de main - | @ /hubris/drv/stm32h7-spi-server/src/main.rs:119:9 - | - | - +---> R0 = 0x2001bb1a R1 = 0x00000002 R2 = 0x00000000 R3 = 0x2001bb1c - | R4 = 0x2001bb1a R5 = 0x00000002 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x2001bb1a R9 = 0x00000000 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x08042560 SP = 0x2001bae8 LR = 0x080405df PC = 0x08041ff2 - | PSR = 0x61000000 - | - +-----------> 0x20000620 Task { - save: SavedState { - r4: 0x2001bb1a, - r5: 0x2, - r6: 0x0, - r7: 0x0, - r8: 0x2001bb1a, - r9: 0x0, - r10: 0x0, - r11: 0x1, - psp: 0x2001ba80, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010d0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fac (&abi::TaskDesc) - } - - 4 spi2_driver 0 3 recv - | - +---> 0x2001c300 0x08046126 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001c368 0x080445aa userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001c368 0x080445aa idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001c368 0x080445aa main - | @ /hubris/drv/stm32h7-spi-server/src/main.rs:119:9 - | - | - +---> R0 = 0x2001c31a R1 = 0x00000002 R2 = 0x00000000 R3 = 0x2001c31c - | R4 = 0x2001c31a R5 = 0x00000002 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x2001c31a R9 = 0x00000001 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x2001c290 SP = 0x2001c2e0 LR = 0x080445ab PC = 0x08046126 - | PSR = 0x61000000 - | - +-----------> 0x200006d0 Task { - save: SavedState { - r4: 0x2001c31a, - r5: 0x2, - r6: 0x0, - r7: 0x0, - r8: 0x2001c31a, - r9: 0x1, - r10: 0x0, - r11: 0x1, - psp: 0x2001c278, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200010f0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fc0 (&abi::TaskDesc) - } - - 5 i2c_driver 0 3 recv - | - +---> 0x2001ca48 0x0804a5ca userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001cb80 0x0804867c userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001cb80 0x0804867c userlib::sys_recv_open - | @ /hubris/sys/userlib/src/lib.rs:242:11 - | 0x2001cb80 0x0804867c userlib::hl::recv - | @ /hubris/sys/userlib/src/hl.rs:93:14 - | 0x2001cb80 0x0804867c userlib::hl::recv_without_notification - | @ /hubris/sys/userlib/src/hl.rs:126:5 - | 0x2001cb80 0x0804867c main - | @ /hubris/drv/stm32h7-i2c-server/src/main.rs:175:9 - | - | - +---> R0 = 0x2001cb44 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x2001cb58 - | R4 = 0x2001cb44 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x0000ffff R9 = 0x2001cb44 R10 = 0x00008061 R11 = 0x00000001 - | R12 = 0x2001cab5 SP = 0x2001ca28 LR = 0x0804867d PC = 0x0804a5ca - | PSR = 0x41000000 - | - +-----------> 0x20000780 Task { - save: SavedState { - r4: 0x2001cb44, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0xffff, - r9: 0x2001cb44, - r10: 0x8061, - r11: 0x1, - psp: 0x2001c9c0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001110 (), - length: 0x8 - }, - notifications: 0xe, - descriptor: 0x8004fd4 (&abi::TaskDesc) - } - - 6 spd 0 2 notif: bit0(irq31/irq32) - | - +---> 0x20010258 0x0804e610 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20010278 0x0804c814 core::ops::function::FnOnce::call_once - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/ops/function.rs:248:5 - | 0x200102a8 0x0804c112 core::ptr::read_volatile - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/ptr/mod.rs:1472:9 - | 0x200102a8 0x0804c112 vcell::VolatileCell::get - | @ /crates.io/vcell-0.1.3/src/lib.rs:33:18 - | 0x200102a8 0x0804c112 stm32h7::generic::Reg::modify - | @ /crates.io/stm32h7-0.14.0/src/generic.rs:163:20 - | 0x200102a8 0x0804c112 drv_stm32h7_i2c::I2cController::operate_as_target - | @ /hubris/drv/stm32h7-i2c/src/lib.rs:791:17 - | 0x20010380 0x0804d03a main - | @ /hubris/task/spd/src/main.rs:407:5 - | - | - +---> R0 = 0x0804eda8 R1 = 0x00000000 R2 = 0x00000001 R3 = 0x2001025c - | R4 = 0x0804eda8 R5 = 0x00000000 R6 = 0x00000001 R7 = 0x8000ffff - | R8 = 0x00000000 R9 = 0x0804c821 R10 = 0x0804c801 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x20010238 LR = 0x0804c815 PC = 0x0804e610 - | PSR = 0x41000000 - | - +-----------> 0x20000830 Task { - save: SavedState { - r4: 0x804eda8, - r5: 0x0, - r6: 0x1, - r7: 0x8000ffff, - r8: 0x0, - r9: 0x804c821, - r10: 0x804c801, - r11: 0x1, - psp: 0x200101d0, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x2), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001130 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004fe8 (&abi::TaskDesc) - } - - 7 thermal 0 5 recv, notif: bit0(T+879) - | - +---> 0x200025b8 0x0805279c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20003198 0x08050de6 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20003198 0x08050de6 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20003198 0x08050de6 main - | @ /hubris/task/thermal/src/main.rs:244:9 - | - | - +---> R0 = 0x20003000 R1 = 0x00000002 R2 = 0x00000001 R3 = 0x20003080 - | R4 = 0x20003000 R5 = 0x00000002 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x00000000 R9 = 0x0000ffff R10 = 0x0000ffff R11 = 0x00000001 - | R12 = 0x00000001 SP = 0x20002598 LR = 0x08050de7 PC = 0x0805279c - | PSR = 0x61000000 - | - +-----------> 0x200008e0 Task { - save: SavedState { - r4: 0x20003000, - r5: 0x2, - r6: 0x1, - r7: 0x0, - r8: 0x0, - r9: 0xffff, - r10: 0xffff, - r11: 0x1, - psp: 0x20002530, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xedc2b)), - to_post: NotificationSet(0x1) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001150 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8004ffc (&abi::TaskDesc) - } - - 8 power 0 6 notif: bit31(T+174) - | - +---> 0x200163c0 0x08056844 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20016800 0x080543fa userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20016800 0x080543fa userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20016800 0x080543fa userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20016800 0x080543fa main - | @ /hubris/task/power/src/main.rs:311:9 - | - | - +---> R0 = 0x080571a8 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x200167d8 - | R4 = 0x080571a8 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x200167d0 R9 = 0x200163d2 R10 = 0x000ed96a R11 = 0x00000001 - | R12 = 0x00000007 SP = 0x200163a0 LR = 0x080543fb PC = 0x08056844 - | PSR = 0x41000000 - | - +-----------> 0x20000990 Task { - save: SavedState { - r4: 0x80571a8, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x200167d0, - r9: 0x200163d2, - r10: 0xed96a, - r11: 0x1, - psp: 0x20016338, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xed96a)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001170 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005010 (&abi::TaskDesc) - } - - 9 hiffy 0 5 notif: bit31(T+143) - | - +---> 0x20008200 0x0800bfd0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20008240 0x0800c04a userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20008240 0x0800c04a userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20008240 0x0800c04a userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20008400 0x08009432 core::sync::atomic::atomic_sub - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/sync/atomic.rs:3057:23 - | 0x20008400 0x08009432 core::sync::atomic::AtomicU32::fetch_sub - | @ /rustc/4d6d601c8a83284d6b23c253a3e2a060fd197316/library/core/src/sync/atomic.rs:2399:26 - | 0x20008400 0x08009432 main - | @ /hubris/task/hiffy/src/main.rs:127:9 - | - | - +---> R0 = 0x0800d0d0 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x20008208 - | R4 = 0x0800d0d0 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x0800d0d0 R9 = 0x8000ffff R10 = 0x2000ea1c R11 = 0x00000001 - | R12 = 0x0000000d SP = 0x200081e0 LR = 0x0800c04b PC = 0x0800bfd0 - | PSR = 0x41000000 - | - +-----------> 0x20000a40 Task { - save: SavedState { - r4: 0x800d0d0, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x800d0d0, - r9: 0x8000ffff, - r10: 0x2000ea1c, - r11: 0x1, - psp: 0x20008178, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xed94b)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001190 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005024 (&abi::TaskDesc) - } - -10 gimlet_seq 0 4 recv, notif: bit0 - | - +---> 0x200174d8 0x08013de0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20017640 0x08010a98 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20017640 0x08010a98 idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x20017640 0x08010a98 main - | @ /hubris/drv/gimlet-seq-server/src/main.rs:343:9 - | - | - +---> R0 = 0x20017507 R1 = 0x00000001 R2 = 0x00000001 R3 = 0x20017520 - | R4 = 0x20017507 R5 = 0x00000001 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x20017520 R9 = 0x20017510 R10 = 0x00000001 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x200174b8 LR = 0x08010a99 PC = 0x08013de0 - | PSR = 0x41000000 - | - +-----------> 0x20000af0 Task { - save: SavedState { - r4: 0x20017507, - r5: 0x1, - r6: 0x1, - r7: 0x0, - r8: 0x20017520, - r9: 0x20017510, - r10: 0x1, - r11: 0x1, - psp: 0x20017450, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x4), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011b0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005038 (&abi::TaskDesc) - } - -11 hash_driver 0 2 recv - | - +---> 0x20018530 0x08059994 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20018800 0x08058260 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20018800 0x08058260 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x20018800 0x08058260 main - | @ /hubris/drv/stm32h7-hash-server/src/main.rs:53:9 - | - | - +---> R0 = 0x20018550 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x200187d4 - | R4 = 0x20018550 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x0000fe02 R9 = 0x200187d4 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x200187ac SP = 0x20018510 LR = 0x08058261 PC = 0x08059994 - | PSR = 0x41000000 - | - +-----------> 0x20000ba0 Task { - save: SavedState { - r4: 0x20018550, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0xfe02, - r9: 0x200187d4, - r10: 0x0, - r11: 0x1, - psp: 0x200184a8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x2), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011d0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x800504c (&abi::TaskDesc) - } - -12 hf 0 3 recv - | - +---> 0x2001d5d8 0x0805df82 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001d780 0x0805c374 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001d780 0x0805c374 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001d780 0x0805c374 main - | @ /hubris/drv/gimlet-hf-server/src/main.rs:145:9 - | - | - +---> R0 = 0x2001d610 R1 = 0x00000008 R2 = 0x00000000 R3 = 0x2001d730 - | R4 = 0x2001d610 R5 = 0x00000008 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x00000006 R9 = 0x00000020 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x2001d72c SP = 0x2001d5b8 LR = 0x0805c375 PC = 0x0805df82 - | PSR = 0x41000000 - | - +-----------> 0x20000c50 Task { - save: SavedState { - r4: 0x2001d610, - r5: 0x8, - r6: 0x0, - r7: 0x0, - r8: 0x6, - r9: 0x20, - r10: 0x0, - r11: 0x1, - psp: 0x2001d550, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x3), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x200011f0 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005060 (&abi::TaskDesc) - } - -13 sensor 0 4 recv, notif: bit0(T+12) - | - +---> 0x2001da88 0x080670ec userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001df80 0x080660ba userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001df80 0x080660ba idol_runtime::dispatch_n - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:267:20 - | 0x2001df80 0x080660ba main - | @ /hubris/task/sensor/src/main.rs:111:9 - | - | - +---> R0 = 0x2001df68 R1 = 0x00000008 R2 = 0x00000001 R3 = 0x2001dd00 - | R4 = 0x2001df68 R5 = 0x00000008 R6 = 0x00000001 R7 = 0x00000000 - | R8 = 0x2001da90 R9 = 0x2001df74 R10 = 0x080675dc R11 = 0x00000001 - | R12 = 0x00000264 SP = 0x2001da68 LR = 0x080660bb PC = 0x080670ec - | PSR = 0x61000000 - | - +-----------> 0x20000d00 Task { - save: SavedState { - r4: 0x2001df68, - r5: 0x8, - r6: 0x1, - r7: 0x0, - r8: 0x2001da90, - r9: 0x2001df74, - r10: 0x80675dc, - r11: 0x1, - psp: 0x2001da00, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x4), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: Some(Timestamp(0xed8c8)), - to_post: NotificationSet(0x1) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001210 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005074 (&abi::TaskDesc) - } - -14 udpecho 0 6 notif: bit0 - | - +---> 0x20014e00 0x080697a0 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20015000 0x0806816c userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x20015000 0x0806816c userlib::sys_recv_closed - | @ /hubris/sys/userlib/src/lib.rs:268:5 - | 0x20015000 0x0806816c main - | @ /hubris/task/udpecho/src/main.rs:52:17 - | - | - +---> R0 = 0x08069e0c R1 = 0x00000000 R2 = 0x00000001 R3 = 0x20014f9c - | R4 = 0x08069e0c R5 = 0x00000000 R6 = 0x00000001 R7 = 0x8000ffff - | R8 = 0x20014f9c R9 = 0x00000000 R10 = 0x20014fa5 R11 = 0x00000001 - | R12 = 0x20014fb8 SP = 0x20014de0 LR = 0x0806816d PC = 0x080697a0 - | PSR = 0x21000000 - | - +-----------> 0x20000db0 Task { - save: SavedState { - r4: 0x8069e0c, - r5: 0x0, - r6: 0x1, - r7: 0x8000ffff, - r8: 0x20014f9c, - r9: 0x0, - r10: 0x20014fa5, - r11: 0x1, - psp: 0x20014d78, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001230 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x8005088 (&abi::TaskDesc) - } - -15 udpbroadcast 0 6 notif: bit31(T+454) - | - +---> 0x20019770 0x0806b20c userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x20019800 0x0806a0f8 userlib::sys_get_timer - | @ /hubris/sys/userlib/src/lib.rs:1062:9 - | 0x20019800 0x0806a0f8 userlib::hl::sleep_until - | @ /hubris/sys/userlib/src/hl.rs:615:12 - | 0x20019800 0x0806a0f8 userlib::hl::sleep_for - | @ /hubris/sys/userlib/src/hl.rs:637:5 - | 0x20019800 0x0806a0f8 main - | @ /hubris/task/udpbroadcast/src/main.rs:38:9 - | - | - +---> R0 = 0x0806b784 R1 = 0x00000000 R2 = 0x80000000 R3 = 0x200197ac - | R4 = 0x0806b784 R5 = 0x00000000 R6 = 0x80000000 R7 = 0x8000ffff - | R8 = 0x20019795 R9 = 0x00000301 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x200197cc SP = 0x20019750 LR = 0x0806a0f9 PC = 0x0806b20c - | PSR = 0x41000000 - | - +-----------> 0x20000e60 Task { - save: SavedState { - r4: 0x806b784, - r5: 0x0, - r6: 0x80000000, - r7: 0x8000ffff, - r8: 0x20019795, - r9: 0x301, - r10: 0x0, - r11: 0x1, - psp: 0x200196e8, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x6), - state: Healthy(InRecv(Some(TaskId(0xffff)))), - timer: TimerState { - deadline: Some(Timestamp(0xeda82)), - to_post: NotificationSet(0x80000000) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001250 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x800509c (&abi::TaskDesc) - } - -16 validate 0 5 recv - | - +---> 0x2001a3b0 0x08061a78 userlib::sys_recv_stub - | @ /hubris/sys/userlib/src/lib.rs:389:13 - | 0x2001a3e8 0x08060270 userlib::sys_recv - | @ /hubris/sys/userlib/src/lib.rs:308:8 - | 0x2001a3e8 0x08060270 idol_runtime::dispatch - | @ /git/idolatry-1ebf1c2fd2f30300/285d928/runtime/src/lib.rs:191:20 - | 0x2001a3e8 0x08060270 main - | @ /hubris/task/validate/src/main.rs:61:9 - | - | - +---> R0 = 0x2001a3b4 R1 = 0x00000004 R2 = 0x00000000 R3 = 0x2001a3b8 - | R4 = 0x2001a3b4 R5 = 0x00000004 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x08061d58 R9 = 0x2001a3e8 R10 = 0x00000000 R11 = 0x00000001 - | R12 = 0x00000000 SP = 0x2001a390 LR = 0x08060271 PC = 0x08061a78 - | PSR = 0x61000000 - | - +-----------> 0x20000f10 Task { - save: SavedState { - r4: 0x2001a3b4, - r5: 0x4, - r6: 0x0, - r7: 0x0, - r8: 0x8061d58, - r9: 0x2001a3e8, - r10: 0x0, - r11: 0x1, - psp: 0x2001a328, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x5), - state: Healthy(InRecv(None)), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001270 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x80050b0 (&abi::TaskDesc) - } - -17 idle 0 7 RUNNING - | - +---> 0x2001e500 0x0806c850 cortex_m::asm::inline::__nop - | @ /crates.io/cortex-m-0.7.5/src/../asm/inline.rs:122:5 - | 0x2001e500 0x0806c850 cortex_m::asm::nop - | @ /crates.io/cortex-m-0.7.5/src/asm.rs:35:5 - | 0x2001e500 0x0806c850 main - | @ /hubris/task/idle/src/main.rs:24:13 - | - | - +---> R0 = 0x2001e500 R1 = 0x2001e500 R2 = 0x00000000 R3 = 0x00000000 - | R4 = 0x00000000 R5 = 0x00000000 R6 = 0x00000000 R7 = 0x00000000 - | R8 = 0x00000000 R9 = 0x00000000 R10 = 0x00000000 R11 = 0x00000000 - | R12 = 0x00000000 SP = 0x2001e500 LR = 0x0806c84f PC = 0x0806c850 - | PSR = 0x61000000 - | - +-----------> 0x20000fc0 Task { - save: SavedState { - r4: 0x0, - r5: 0x0, - r6: 0x0, - r7: 0x0, - r8: 0x0, - r9: 0x0, - r10: 0x0, - r11: 0x0, - psp: 0x2001e498, - exc_return: 0xffffffed, - s16: 0x0, - s17: 0x0, - s18: 0x0, - s19: 0x0, - s20: 0x0, - s21: 0x0, - s22: 0x0, - s23: 0x0, - s24: 0x0, - s25: 0x0, - s26: 0x0, - s27: 0x0, - s28: 0x0, - s29: 0x0, - s30: 0x0, - s31: 0x0 - }, - priority: Priority(0x7), - state: Healthy(Runnable), - timer: TimerState { - deadline: None, - to_post: NotificationSet(0x0) - }, - generation: 0x0, - region_table: &[&abi::RegionDesc] { - data_ptr: 0x20001290 (), - length: 0x8 - }, - notifications: 0x0, - descriptor: 0x80050c4 (&abi::TaskDesc) - } - diff --git a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml index 37f3363fa..8d5fe3c66 100644 --- a/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/tasks-slvr/tasks-slvr.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 tasks -slvr --guess" - +status.code = 1 diff --git a/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr b/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr index 07fadb46d..f19779cb6 100644 --- a/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr +++ b/humility-bin/tests/cmd/tasks/tasks.flash-ram-mismatch.0.stderr @@ -1,2 +1,2 @@ humility: attached to dump -humility tasks failed: target does not appear booted and PC 0x1ff0a6e0 is unknown; is system executing boot ROM or other program? +humility tasks failed: image ID matches but PC at 0x1ff0a6e0 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr index da2ede4a0..691e63afc 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stderr @@ -1 +1,2 @@ humility: attached to dump +humility tasks failed: image ID matches but PC at 0x1ff0a612 is not part of any module. Maybe this is an incorrect A/B archive, or bootloader or ROM code is running? diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout index 5023882fc..e69de29bb 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.stdout @@ -1,20 +0,0 @@ -system time = 972988 -ID TASK GEN PRI STATE - 0 jefe 0 0 recv, notif: bit0 bit1(T+12) - 1 net 0 5 recv, notif: bit0(irq61) bit1(T+18) - 2 sys 0 1 recv - 3 spi4_driver 0 3 recv - 4 spi2_driver 0 3 recv - 5 i2c_driver 0 3 recv - 6 spd 0 2 notif: bit0(irq31/irq32) - 7 thermal 0 5 recv, notif: bit0(T+879) - 8 power 0 6 notif: bit31(T+174) - 9 hiffy 0 5 notif: bit31(T+143) -10 gimlet_seq 0 4 recv, notif: bit0 -11 hash_driver 0 2 recv -12 hf 0 3 recv -13 sensor 0 4 recv, notif: bit0(T+12) -14 udpecho 0 6 notif: bit0 -15 udpbroadcast 0 6 notif: bit31(T+454) -16 validate 0 5 recv -17 idle 0 7 RUNNING diff --git a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml index 35f5862c8..6b218c602 100644 --- a/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml +++ b/humility-bin/tests/cmd/tasks/tasks.in_bootloader.0.toml @@ -7,4 +7,4 @@ fs.base = "../cores" bin.name = "humility" args = "-d hubris.core.in_bootloader.0 tasks" - +status.code = 1 diff --git a/humility-core/src/hubris.rs b/humility-core/src/hubris.rs index e894965fc..8e0866b0c 100644 --- a/humility-core/src/hubris.rs +++ b/humility-core/src/hubris.rs @@ -2080,22 +2080,8 @@ impl HubrisArchive { // To validate that what we're running on the target matches what // we have in the archive, we are going to check the image ID, an // identifer created for this purpose. - let addr = self.imageid.0; - let nbytes = self.imageid.1.len(); - assert!(nbytes > 0); - - let mut id = vec![0; nbytes]; - core.read_8(addr, &mut id[0..nbytes]).with_context(|| { - format!("failed to read image ID at 0x{:x}; board mismatch?", addr) - })?; - - let deltas = id - .iter() - .zip(self.imageid.1.iter()) - .filter(|&(lhs, rhs)| lhs != rhs) - .count(); - - if deltas > 0 || id.len() != self.imageid.1.len() { + let id = self.read_image_id_from_flash(core)?; + if id != self.imageid.1 { bail!( "image ID in archive ({:x?}) does not equal \ ID at 0x{:x} ({:x?})", @@ -2103,11 +2089,22 @@ impl HubrisArchive { ); } - if criteria == HubrisValidate::ArchiveMatch { + if self.task_dump().is_some() { + // Single-task dumps don't contain enough info to do the PC check + // or the `HubrisValidate::Booted` checks. return Ok(()); + } else { + core.halt()?; + let result = self.is_pc_within_archive(core); + core.run()?; + if let Ok(PcResult::NotInArchive { pc }) = result { + bail!("image ID matches but PC at 0x{pc:x} is not part of any \ + module. Maybe this is an incorrect A/B archive, or \ + bootloader or ROM code is running?"); + } } - if self.task_dump().is_some() { + if criteria == HubrisValidate::ArchiveMatch { return Ok(()); } @@ -2148,17 +2145,8 @@ impl HubrisArchive { bail!("target is not yet booted (currently in Reset)"); } - // - // Check against the PC not being in any known module - // - if self.instr_mod(pc).is_none() { - bail!( - "target does not appear booted and PC 0x{:x} is \ - unknown; is system executing boot ROM or other \ - program?", - pc - ); - } + // We already checked is_pc_within_archive() during the + // `ArchiveMatch` check, so we don't need to repeat that here. } else { core.run()?; } @@ -2170,6 +2158,39 @@ impl HubrisArchive { ); } + pub fn read_image_id_from_flash( + &self, + core: &mut dyn crate::core::Core, + ) -> Result> { + let addr = self.imageid.0; + let nbytes = self.imageid.1.len(); + assert!(nbytes > 0); + + let mut id = vec![0; nbytes]; + core.read_8(addr, &mut id[0..nbytes]).with_context(|| { + format!("failed to read image ID at 0x{:x}; board mismatch?", addr) + })?; + Ok(id) + } + + /// Reads the core's program counter and returns true if it's within the + /// range of instruction addresses defined by this archive. Also returns the + /// value of the program counter, in case you want to include it in an error + /// message. + /// + /// NOTE: The core must be halted before this is called. + pub fn is_pc_within_archive( + &self, + core: &mut dyn crate::core::Core, + ) -> Result { + let pc = core.read_reg(ARMRegister::PC)?; + if self.instr_mod(pc).is_none() { + Ok(PcResult::NotInArchive { pc }) + } else { + Ok(PcResult::InArchive) + } + } + pub fn verify( &self, core: &mut dyn crate::core::Core, @@ -6429,6 +6450,16 @@ pub enum HubrisValidate { Booted, } +#[derive(Copy, Clone, Debug, PartialEq, Eq)] +pub enum PcResult { + /// The program counter is within the range of instruction addresses + /// defined by this archive + InArchive, + /// The program counter is NOT within the range of instruction addresses + /// defined by this archive, and is instead at the given address + NotInArchive { pc: u32 }, +} + // // We want to track our external regions because we want to be able to identify // them, but this requires us knowing what addresses our external regions map diff --git a/humility-flash/src/lib.rs b/humility-flash/src/lib.rs index 8199b434c..993fa2efe 100644 --- a/humility-flash/src/lib.rs +++ b/humility-flash/src/lib.rs @@ -7,8 +7,8 @@ use humility::{ core::Core, - hubris::{HubrisArchive, HubrisValidate}, - log::{Logger, info}, + hubris::{HubrisArchive, PcResult}, + log::{Logger, info, warn}, }; use humility_auxflash::{AuxFlashHandler, AuxFlashWriter}; use humility_probes_core::ProbeCore; @@ -49,9 +49,21 @@ pub enum ImageStateError { /// Type indicating a mismatch when checking image state #[derive(Debug, thiserror::Error)] pub enum ImageStateMismatch { - /// Failed at the archive ID check - #[error("flash/archive mismatch")] - FlashArchiveMismatch(#[source] anyhow::Error), + /// The image contained in the archive is different from the the image on + /// the target. + #[error( + "image ID in archive ({archive:x?}) does not equal image ID of #target ({target:x?})" + )] + FlashArchiveMismatch { + /// The image ID in the archive + archive: Vec, + /// The image ID on the target + target: Vec, + }, + + /// An error occurred when trying to check the IDs + #[error("could not check if IDs match")] + CouldNotCheckID(#[source] anyhow::Error), /// Call to [`HubrisArchive::verify`] failed #[error("flash contents do not match archive contents")] @@ -92,11 +104,32 @@ pub fn get_image_state( ) -> Result { core.halt().map_err(ImageStateError::HaltFailed)?; + if let Ok(PcResult::NotInArchive { pc }) = hubris.is_pc_within_archive(core) + { + warn!( + log, + "PC at 0x{pc:x} is not part of any module. Maybe you're \ + flashing an A image while a B image is running, or vice \ + versa?" + ); + } + // First pass: check only the image ID - if let Err(e) = hubris.validate(core, HubrisValidate::ArchiveMatch) { - return Ok(ImageStateResult::DoesNotMatch( - ImageStateMismatch::FlashArchiveMismatch(e), - )); + match hubris.read_image_id_from_flash(core) { + Err(e) => { + return Ok(ImageStateResult::DoesNotMatch( + ImageStateMismatch::CouldNotCheckID(e), + )); + } + Ok(id) if id != hubris.image_id() => { + return Ok(ImageStateResult::DoesNotMatch( + ImageStateMismatch::FlashArchiveMismatch { + target: id, + archive: hubris.image_id().to_owned(), + }, + )); + } + _ => (), } // More rigorous checks if requested