как загрузить образ ядра в u-boot без команды bootm

Я работаю над простой ОС для рук, используя qemu и uboot. Я могу нормально загрузить uboot и загрузить образ с помощью команды «bootm», за которой следует соответствующий адрес. Я хочу, чтобы образ ядра загружался автоматически без вызова bootm. Я добавил «#define CONFIG_BOOTCOMMAND «bootm 0x28124»» в файл universal.h, и он загружается автоматически, но проблема в том, что этот адрес может измениться. Я использую универсальные pb, и мне показалось странным, что в uboot отсутствуют многие команды, которые должны быть в документации.


person Sean    schedule 19.03.2014    source источник
comment
В uboot отсутствуют многие команды, которые, согласно документации, должны быть. -- Доступные команды в данной копии U-Boot определяются тем, как U-Boot был сконфигурирован при сборке. Для автоматического выполнения ядра/программы есть таймер обратного отсчета для автозагрузки. См. этот ответ для различных способов выполнения ядра / программа. Обратите внимание, что команды могут принимать как переменные, так и константы, поэтому bootm 0x28124 также может быть setenv loadaddr 0x28124; bootm ${loadaddr}.   -  person sawdust    schedule 20.03.2014
comment
У меня есть таймер обратного отсчета, и он загружается автоматически, определяя #define CONFIG_BOOTCOMMAND bootm 0x28124, но проблема в том, что адрес памяти изменяется в зависимости от размера ядра, поэтому мне нужно, чтобы число было динамическим. Скрипт bash как-то решит это?   -  person Sean    schedule 22.03.2014


Ответы (1)


u-boot копирует сжатый образ ядра в память, а затем переходит к точке входа этого образа ядра. Затем ядро ​​распаковывается и помещается в нужное место в памяти. Поскольку смещение записи ядра в образ ядра фиксировано, а расположение сжатого ядра определяется u-boot и обычно фиксируется. Вам не нужно будет менять свой загрузочный адрес при изменении размера ядра.

person Houcheng    schedule 17.04.2014
comment
Спасибо, я действительно понял это и сделал что-то очень похожее на это. Я объединил образ ядра с двоичным файлом флэш-памяти в определенном месте и установил bootm в этом месте. - person Sean; 17.04.2014