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, как подкаталоги, через которые он должен пройти для сборки программного обеспечения.

 

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