The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

3.1 Включение BSP в процедуру сборки ядра

3.1 Включение BSP в процедуру сборки ядра

Предыдущая  Содержание  Следующая V*D*V

Исходный код HAL Linux находится в каталогах arch/ и include/<asm-XXX> (XXX = имя процессора, такое как PowerPC, MIPS). Таким образом, arch/ppc будет содержать исходные файлы для плат на основе PPC, а include/asm-ppc будет содержать файлы заголовков для таких плат.

 

Внутри каталога для каждого процессора все платы на основе этого процессора также находятся в подкаталогах. Важными каталогами внутри каждого подкаталога являются:

 

kernel: этот каталог содержит относящиеся к процессору процедуры для инициализации, настройки линий прерываний, прерываний и процедуры программных прерываний.

mm: содержит зависимый от оборудования код настройки TLB (Translation LookUp Buffer, буфер быстрого преобразования адреса, аппаратную таблицу, используемую для перевода физического адреса в виртуальный и наоборот) и обработки исключений.

 

Например, HAL для MIPS имеет два подкаталога arch/mips/kernel и arch/mips/mm, которые содержат описанный выше код. Наряду с этими двумя каталогами существует множество других подкаталогов; это каталоги BSP, содержащие только код, относящийся к плате. Пользователь должен создать внутри каталога соответствующего процессора дерево подкаталогов, которое содержит файлы, необходимые для BSP. Следующий шаг заключается в интеграции BSP с процессом сборки, чтобы при сборке образа ядра можно было выбрать относящиеся к плате файлы. Это может требовать, чтобы процесс выбора компонентов ядра (выполненный с помощью команды make menuconfig во время сборки ядра) знал о плате. Почему этот шаг является необходимым? Помимо упрощения процедуры сборки, выполнение этого даёт дополнительные преимущества:

 

Переключатели настроек часто делают много изменений определённой конфигурации. Некоторыми примерами таких настроек являются скорость процессора, скорость UART, и так далее. Вместо такой правки кода, как изменение файлов заголовков, все такие относящиеся к плате детали могут быть сделаны в виде параметров конфигурации и централизованно храниться в хранилище конфигураций (например, файле .config, используемом для сборки ядра); это делает процесс сборки ядра проще, а также позволяет избежать загромождения исходного кода.

Часто поставщики OEM являются покупателями встроенного решения и они, возможно, захотят добавлять в ядро свои собственные компоненты. Они могут быть не заинтересованы в выборе компонентов ядра для платы, поставляемых вами; они могут захотеть, чтобы это было уже зафиксировано как часть процесса сборки. Это делается путём добавления вашей платы как пункта конфигурации при сборке ядра; когда выбирается данная плата, все программные компоненты, необходимые для платы, автоматически становятся выбранными. OEM поставщику не нужно беспокоиться о подробностях вашей платы и о том, какие программные компоненты необходимы для её сборки.

 

Два вышеописанных шага могут быть осуществлены за счёт подключения BSP к процессу конфигурации. Компоненты ядра Linux выбираются с помощью команды make config (или make menuconfig/make xconfig). Сердцем процесса настройки  является конфигурационный файл, находящийся внутри каталога используемого процессора. Более подробно это рассматривается в Главе 8. Например, для включения компонентов платы EUREKA  в процесс сборки ядра вам необходимо отредактировать файл arch/mips/config.in (для ядра версии 2.4) или arch/mips/Kconfig (для ядра версии 2.6), как показано на Рисунке 3.1.

 

Рисунок 3.1 Опции сборки платы EUREKA.

Рисунок 3.1 Опции сборки платы EUREKA.

 

Связующим звеном между конфигурацией и процессом сборки является CONFIG_EUREKA. Для приведённого выше примера в файл arch/mips/Makefile должны быть добавлены следующие строки:

 

ifdef CONFIG_EUREKA

LIBS        += arch/mips/eureka/eureka.o

SUBDIRS     += arch/mips/eureka

LOADADDR    := 0x80000000

endif

 

Последняя строка, LOADADDR, определяет начальный адрес ядра. Компоновщик забирает его, используя скрипт компоновщика, так что вы можете снова увидеть ссылку на этот адрес в скрипте компоновщика. Таким образом, когда пользователь выбрал во время конфигурации плату EUREKA, список таких настроек, относящихся к данной плате, как тактовая частота, становится выбранным. Кроме того, когда ядро собрано, процесс сборки осведомлён о таких опциях сборки, относящихся к плате EUREKA, как подкаталоги, через которые он должен пройти для сборки программного обеспечения.

 

Предыдущая  Содержание  Следующая