Skip to content

Commit a393439

Browse files
sasdfpamaury
authored andcommitted
[rom_ext,rescue] Fix rescue rx when triggered by boot svc.
When rescue mode is initiated by OwnerSW via the boot service, the UART RX is not active. This prevents it from receiving commands after displaying "RESQ". Change-Id: I20eff5ad255c63971fe3df80d4eb2085472ceac8 Signed-off-by: Yi-Hsuan Deng <[email protected]> (cherry picked from commit 45063bb)
1 parent c67e9fa commit a393439

File tree

3 files changed

+10
-1
lines changed

3 files changed

+10
-1
lines changed

sw/device/silicon_creator/lib/rescue/rescue.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -409,7 +409,6 @@ hardened_bool_t rescue_detect_entry(const owner_rescue_config_t *config) {
409409
case kRescueDetectBreak:
410410
if (uart_break_detect(kRescueDetectTime) == kHardenedBoolTrue) {
411411
dbg_printf("rescue:1.0 remember to clear break\r\n");
412-
uart_enable_receiver();
413412
return kHardenedBoolTrue;
414413
}
415414
break;

sw/device/silicon_creator/lib/rescue/rescue_xmodem.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -154,6 +154,7 @@ rom_error_t rescue_protocol(boot_data_t *bootdata, boot_log_t *boot_log,
154154
const owner_rescue_config_t *config) {
155155
rescue_state_t rescue_state;
156156
rescue_state_init(&rescue_state, bootdata, boot_log, config);
157+
uart_enable_receiver();
157158
rom_error_t result = protocol(&rescue_state);
158159
if (result == kErrorRescueReboot) {
159160
rstmgr_reset();

sw/device/silicon_creator/rom_ext/e2e/boot_svc/BUILD

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,15 @@ opentitan_test(
6969
assemble = "{rom_ext}@0 {firmware}@0x10000 {firmware}@0x90000",
7070
exit_failure = "BFV|PASS|FAIL",
7171
exit_success = "mode: RESQ\r\n",
72+
test_cmd = """
73+
--exec="transport init"
74+
--exec="fpga load-bitstream {bitstream}"
75+
--exec="bootstrap --clear-uart=true {firmware}"
76+
--exec="console --non-interactive --exit-success='{exit_success}' --exit-failure='{exit_failure}'"
77+
# Try the `REBO` mode and make sure it works.
78+
--exec="rescue no-op --reset-target=reboot"
79+
no-op
80+
""",
7281
),
7382
linker_script = "//sw/device/lib/testing/test_framework:ottf_ld_silicon_owner_slot_virtual",
7483
deps = [

0 commit comments

Comments
 (0)