2013-03-11 5 views
1

Я начинаю программирование ядра или операционной системы для beaglebone с TI-AM3359 SoC. Я написал программу сборки для записи некоторых символов в последовательный интерфейс (только для начала), и я хочу запустить это как ядро ​​на beaglebone, как и linux kernel.Как запустить настраиваемое ядро ​​на beaglebone?

Каков связующий адрес для моей программы?

и

Как загрузить его из U-Boot по умолчанию? Я не хочу входить в программирование u boot и хочу использовать доступную u-boot, которая поставляется с дистрибуцией angstrom вместе с BBone.

Любая помощь приветствуется.

Благодаря

ответ

1

Я написал программу для сборки, чтобы написать несколько символов на последовательный интерфейс (только, чтобы начать с), и я хочу, чтобы запустить это как ядро ​​на 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, которая является переменной, выполняемой/выполняемой по истечении времени загрузки.

 Смежные вопросы

  • Нет связанных вопросов^_^