Presentation is loading. Please wait.

Presentation is loading. Please wait.

Автор: студент 545 группы Абусалимов Э.Ш. Научный руководитель: асп. каф. системного программирования Бондарев А.В. Рецензент: Венгеров В.В. Система сборки,

Similar presentations


Presentation on theme: "Автор: студент 545 группы Абусалимов Э.Ш. Научный руководитель: асп. каф. системного программирования Бондарев А.В. Рецензент: Венгеров В.В. Система сборки,"— Presentation transcript:

1 Автор: студент 545 группы Абусалимов Э.Ш. Научный руководитель: асп. каф. системного программирования Бондарев А.В. Рецензент: Венгеров В.В. Система сборки, анализа и верификации кода ОСРВ Embox Дипломная работа

2 ОСРВ Embox: модульная и конфигурируемая Исходные коды (на сегодня около 300 файлов) организованы в модули (около 180) Модули взаимосвязаны по следующим отношениям: o "Зависит от" (около 100 связей) o "Наследует" (около 20 связей) Каждый модуль также имеет: o Документацию o Флаги компиляции o Доступные опции конфигурации Проблемная область

3 Постановка задачи Система сборки, обладающая следующими свойствами: Простой формат описаний o Для разработчика o Для конечного пользователя Поддержка межмодульных зависимостей o Разрешение зависимостей при сборке Возможность использовать знания о конфигурации во время исполнения o Внедрение зависимостей Верификация предоставленных описаний o Анализ исходного кода o Проверка корректности описаний

4 GNU Make – стандарт де-факто в Unix'ах o Инкрементальная сборка o Слишком общее средство o Не решает ни одну из поставленных задач GNU Autotools – переносимость программ между Unix'ами o Основная цель отлична от поставленной задачи Cmake, Scons – замена GNU Autotools o Не ориентированы на модульные приложения Kbuild – система сборки ядра Linux o Поддерживает зависимости для опций CONFIG_XXX o Информация о зависимостях используется только во время сборки Существующие средства

5 Система сборки Embuild GNU Make Embuild cache CPP conf -files em -files Dependency graph nm output analysis Verification tool Dependency injection Make rules generation source GCC, nm

6 Формат описаний em -файлы – для разработчика: Подмножество языка Make define module foo brief = Main application module sources = foo.c depends = bar endef conf -файлы – для конечного пользователя: Обрабатываются препроцессором C module(foo)

7 Разрешение зависимостей define module bar sources = bar.c endef define module foo sources = foo.c depends = bar endef foo.em:bar.em: modules.conf: module(foo) Граф зависимостей:

8 Абстрактные модули define api alloc brief = Dyn memory endef define module baz depends = alloc endef baz.em:alloc.em: define module best_fit sources = best_fit.c provides = alloc endef define module buddy sources = buddy.c provides = alloc endef buddy.em:best_fit.em:

9 define module bar sources = bar.c endef Внедрение зависимостей define module foo sources = foo.c depends = bar endef static int foo_init() { printf("%d", the_answer); return 0; } MODULE_INIT(foo_init); int the_answer; static int bar_init() { the_answer = 42; return 0; } MODULE_INIT(bar_init); foo.c:bar.c: foo.em:bar.em:

10 define module bar sources = bar.c endef Верификация описаний define module foo sources = foo.c depends = bar endef static int foo_init() { printf("%d", the_answer); return 0; } MODULE_INIT(foo_init); int the_answer; static int bar_init() { the_answer = 42; return 0; } MODULE_INIT(bar_init); foo.c:bar.c: foo.em:bar.em:

11 Анализ исходного кода static int foo_init() { printf("%d", the_answer); return 0; } MODULE_INIT(foo_init); int the_answer; static int bar_init() { the_answer = 42; return 0; } MODULE_INIT(bar_init); foo.c:bar.c: Компиляция | Обработка утилитой nm | анализ вывода U the_answer00000000 B the_answer foo.o:bar.o:

12 Анализ графов зависимостей define module bar sources = bar.c endef define module foo sources = foo.c depends = bar endef foo.em:bar.em: U the_answer00000000 B the_answer foo.o:bar.o: Сопоставление дуг

13 KbuildEmbuild Сравнение Рекурсивный MakeНерекурсивный Make Опции конфигурации и список исходников в разных файлах Описание модуля в одном файле Все опции в одном пространстве имен Различные пространства имен для модулей Ограничивается только сборкой образа Модель зависимостей доступна во время исполнения Отсутствие средств верификации Анализ и сравнение описаний с исходным кодом Используют среду исполнения GNU Make Сборка приложений, имеющих множество конфигураций

14 Полученные результаты Реализована система сборки Embuild, которая: Имеет простой формат описаний o Модулей разрабатываемого приложения o Конечной конфигурации приложения Поддерживает межмодульные зависимости o Разрешение зависимостей при сборке Использует знания о конфигурации во время исполнения o Внедрение зависимостей Обладает возможностью верификации предоставленных описаний o Анализ исходного кода o Проверка корректности описаний

15 Контакты Эльдар Абусалимов eldar.abusalimov@gmail.com Embox Project Homepage http://code.google.com/p/embox/ Essential toolbox for embedded development


Download ppt "Автор: студент 545 группы Абусалимов Э.Ш. Научный руководитель: асп. каф. системного программирования Бондарев А.В. Рецензент: Венгеров В.В. Система сборки,"

Similar presentations


Ads by Google