Я написал программу для сборки, чтобы написать несколько символов на последовательный интерфейс (только, чтобы начать с), и я хочу, чтобы запустить это как ядро на beaglebone, так же, как Linux ядро.
То, что вы написали, называется «автономной программой». Он не требует использования внешнего кода по сравнению с прикладной программой, которая зависит от ОС для ресурсов и служб. Вы не должны называть это ядром (еще не все равно), так как он не имеет каких-либо возможностей, которые должно иметь ядро.
Каков связующий адрес для моей программы?
Примечание. Для типичной автономной программы «адрес загрузки» и «ссылочный адрес» часто имеют одинаковое значение, поскольку автономный код обычно не является перемещаемым или независимым от положения.
U-Boot обычно связан, загружен и выполнен в верхней физической физической памяти.
Ядро Linux обычно связано с выполнением в начале физической основной памяти + 0x8000 (для ARM в любом случае). Но образ ядра, особенно если это сжатый файл, такой как zImage или uImage, обычно загружается в память с более высоким адресом, а процедура декомпрессии устанавливает ядро Linux при правильном загрузке & стартового адреса.
Таким образом, любой «хороший» адрес в малой физической памяти подходит для связи и загрузки вашей программы.
Как загрузить его с u-boot по умолчанию?
U-Boot может передавать исполнение двум типам «программ» (а также скриптов).
Один тип программы - это «ядро», которое использует команду bootm.
Это для ядра или программы, у которой есть заголовок, установленный утилитой mkimage, полностью автономный, и возьмет на себя систему. U-Boot можно настроить для подготовки системы для этого ядра. Для Linux выделяется буфер памяти, инициализированный пользовательским текстом и переданный в ядро Linux в качестве командной строки ядра . Для ARM Linux выделяется другой буфер памяти, инициализируется данными и передается в ядро ARM Linux как ATAG.
Другой тип программы использует команду go.
Это для более простой программы, которая может использовать служебные функции U-Boot и, возможно, даже вернуть управление U-Boot, когда это будет сделано. Если подготовка буфера не требуется, ваша простая автономная программа должна использовать команду go
.
Вы можете использовать любую команду в определении переменной среды bootcmd
, которая является переменной, выполняемой/выполняемой по истечении времени загрузки.