СОВРЕМЕННАЯ ЭЛЕКТРОНИКА №7/2012

ядра Linux или отладке приложений. Ручное редактирование содержимого регистров является весьма утомитель ным процессом. Другая распространённая проблема, возникающая при разработке началь ного загрузчика, связана с вопроса ми отладки, которые появляются при загрузке образа Linux в ОЗУ и запуске ОС. После загрузки ядра Linux в фи зическую память ядро создаёт свою собственнуюкарту виртуальной памя ти, которая часто затрудняет опреде ление, какие адреса использует ядро. Как следствие, на момент начала вы полнения ядра Linux в ОЗУ могут быть проблемы при настройке таблицы идентификаторов ОС Linux. К сожале нию, отладочные решения на базе агентов не поддерживают отладку на чального загрузчика, поскольку ОС в процессе загрузки не работает. Поэто му разработчики используют средства JTAG для отладки этого критического процесса. Упрощение отладки начального загрузчика Решения на базе отладочных аген тов (таких как GDB и KGDB) не будут работать для отладки начального за грузчика. Однако отладочные решения на базе JTAG обеспечивают мощные возможности, помогающие разработ чиками быстро и эффективно выяв лять проблемы и тестировать началь ный загрузчик. При помощи средств отладки JTAG легко изучать и устанав ливать значения регистров; способ ность задавать аппаратные точки ос танова позволяет пошагово выполнять код вофлэш памяти, чтобыбыстро вы явить источники ошибок. Ещё более упрощают процесс отладки интегри рованные среды (IDE), которые под держивают режимы дизассемблирова ния и смешанного отображения кода, перемежая исходный текст кодом ас семблера. Эффективное управление идентификаторами позволяет отлажи вать код с учётом его перемещения из флэш памяти в ОЗУ. Дополнительным преимуществом некоторых JTAG решений является способность загружать ядро Linux без помощи начального загрузчика. Это достигается благодаря использованию строки загрузочных параметров (boot line), и является особенно полезным в тех проектах, где разработку системы начинают до того, как будет готов и доступен загрузчик. Решения на базе JTAG, поддерживающие передачу стро ки загрузочных параметров, позволя ют распараллелить разработку загруз чика и стабилизацию ОС, сокращая сроки разработки проекта. Я ДРО L INUX И МОДУЛИ ЯДРА Ядро Linux и модули ядра являются основными компонентами ОС Linux. Ядро стартует непосредственно после того, как начальный загрузчик иници ализирует систему. Модули подгружа ются позже, по необходимости. На стадии стабилизации ОС разра ботчики занимаются оптимизацией и адаптацией ядра ОС Linux, а также раз работкой модулей ядра. При этом вза имодействию оборудования и про граммного обеспечения уделяется особое внимание. Для отладки ядра требуется подробная картина состоя ния регистров, кэш памяти и много другой низкоуровневой информации. Отладка загружаемых модулей также требует доступа к коду инициализа ции, т.к. она сопряжена с динамичес ким распределением памяти в ОЗУ. Чтобы обеспечить работу агента KGDB, необходимо стабильное ядро Linux и драйверы интерфейсов. Отла дочный агент не позволяет наблюдать работу оборудования и не предостав ляет полной диагностической инфор мации, требуемой для понимания вза имодействия ядра с аппаратурой. Для использования агентов необходимо инструментирование кода ядра, а это может вызывать побочные эффекты во встраиваемых устройствах. Другие соображения, касающиеся использования агентов для отладки яд ра Linux и модулей ядра, относятся к ограниченнойфункциональности то чек останова. Например, KGDB не оста новит центральный процессор (осо бенно многоядерный), чтобы дать разработчику возможность изучить состояние системы; KGDB не поможет диагностировать критический сбой системы, т.к. агенту для работы требу ется, чтобы ядро было функциональ но. Кроме того, агенту KGDB требуется порт связи, такой как Ethernet, чтобы подключить хост к целевой системе. Таким образом, чтобы использовать KGDB для отладки в режиме ядра, необ ходимо иметь работающий стек про токолов TCP/IP, стабильное ядро Linux и функционирующие драйверы уст ройств. Это создаёт потенциальную проблему, поскольку на этапе стабили зации ОС такие средства связи могут быть недоступны или сами могут нуж даться в отладке. И СПОЛЬЗОВАНИЕ JTAG ДЛЯ ОТЛАДКИ Для проверки и стабилизации ядра Linux на целевой системе необходимы сложные отладочные решения, рабо тающие с ядромLinux имодулями ядра. Отладочные решения на базе JTAG чрезвычайно полезны в этом рабочем процессе. Функции инструментария JTAG отладки включают способность отслеживать локальные и глобальные переменные и регистры, а также про сматривать данные и содержимое кэш памяти команд. Некоторые коммерчес кие отладчики JTAG обеспечивают прозрачное отображение виртуальных адресов в физические, позволяя разра ботчику отслеживать содержимое ОЗУ по правильным адресам в памяти. Эти решения допускают отладку инициа лизации модулей ядра и могут много кратно загружать и выгружать их без необходимости отключения и повтор ного подключения к целевой системе. Важной функцией отладочных ре шений JTAG является их способность обеспечить полный останов операци онной системыи приложений. Извест ная как отладка в режиме системы, эта функция чрезвычайно полезна для от ладки ядра Linux и егомодулей. В таком режиме отладки разработчик может останавливать всю систему, включая процессор, ОС, все потоки и обработку прерываний. Остановив систему таким способом, можно получить подробную визуализацию состояния оборудова ния иПО, а также перезапустить систе му и пошагово пройти код после пере загрузки. Главным отличием отладочных ре шений на базе JTAG является то, что они будут работать там, где не может работать KGDB, – особенно в условиях критической ошибки ядра Linux и ава рии целевой системы. Это делает их незаменимыми в задачах стабилиза ции драйверов устройств и ОС. О ТЛАДКА L INUX & ПРИЛОЖЕНИЙ Приложения Linux представляют со бой пользовательские программы, вы полняющиеся под управлением ядра Linux. Они получают доступ к ресур сам, выполняя системные вызовы. Ядро Linux обрабатывает системные вызовы и решает, как предоставить приложе ниюдоступ к памятии периферийным устройствам (см. рис. 3). ПРОГРАММИРОВАНИЕ 70 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2012 ' СТА - ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy