Я видел несколько сообщений в блогах о том, как люди обходят переменную окружения U-Boot bootdelay 0, чтобы получить доступ к U-Boot CLI. Пример:здесь. Общий процесс, как я понимаю, таков:
- Отпаяйте/коротко замкните чип, чтобы U-Boot не мог получить к нему доступ
- Включите устройство.
U-Boot не может найти флэш-чип и переходит в CLI
eth1 up eth0, eth1 Qualcomm Atheros SPI NAND Driver, Version 0.1 (c) 2014 Qualcomm Atheros Inc. ath_spi_nand_ecc: Couldn't enable internal ECC Setting 0x181162c0 to 0x3061a100 Hit any key to stop autoboot: 0 ** Device 0 not available ath>
Измените bootdelay на ненулевое значение:
ath> setenv bootdelay 3 ath> saveenv Saving Environment to Flash... Protect off 9F040000 ... 9F04FFFF Un-Protecting sectors 4..4 in bank 1 Un-Protected 1 sectors Protect off 9F050000 ... 9F05FFFF Un-Protecting sectors 5..5 in bank 1 Un-Protected 1 sectors Erasing Flash... 9F050000 ... 9F05FFFF ...Erasing flash... First 0x5 last 0x5 sector size 0x10000 5 Erased 1 sectors Writing to Flash... 9F050005 ... 9F060000 ...write addr: 9f050000 write addr: 9f040004 done Protecting sectors 5..5 in bank 1 Protected 1 sectors Protecting sectors 4..4 in bank 1 Protected 1 sectors ath>
- Выключите устройство и заново подключите флэш-чип.
Насколько мне известно, U-Boot и его переменные окружения находятся во флэш-памяти. Если флэш-чип отключен от ЦП, как вообще загружается U-Boot и как можно сохранить переменную bootdelay в постоянном хранилище?
решение1
Это очень конкретный пример. В этом конкретном примере U-Boot находится во флэш-памяти NOR (один чип), а ядро Linux находится во флэш-памяти NAND (второй чип). В указанном руководстве вам нужно удалить чип NAND с платы, чтобы загрузка не удалась, мы переходим в командную строку U-Boot, а затем вы можете изменить и сохранить задержку загрузки, поскольку в этом случае U-Boot также настроен на сохранение среды во флэш-памяти NOR.