Опубликован: 24.04.2009 | Доступ: свободный | Студентов: 1180 / 358 | Оценка: 4.39 / 4.28 | Длительность: 18:45:00
Специальности: Программист
Лекция 7:

Создание настройки ядра CE 6.0

Урок III: Создание, компиляция, и отладка подпроектов C/C++

Теперь, когда для eBox был разработан работающий проект дизайна ОС, мы добавим подпроект C/C++ "hello world". Вернитесь снова в Solutions View (Представление решений) в левом столбце Visual Studio IDE. Выделите последнюю запись, помеченную Subprojects. Сделайте щелчок правой кнопкой мыши и выберите Add New Subproject. В появившемся окне выберите WCE Console Application и введите MyHelloWorld в поле имени подпроекта, как показано на рисунке 7.20 ниже.

Добавление подпроекта C/C++ MyHelloWorld в проект конструкции ОС

Рис. 7.20. Добавление подпроекта C/C++ MyHelloWorld в проект конструкции ОС

Щелкните Next для продолжения. Появится новое окно, аналогичное рисунку 7.21. Выберите A typical "Hello World" application (Типичное приложение "…"), затем щелкните Finish и весь код будет автоматически сгенерирован и помещен в новую папку подпроекта MyHelloWorld. Новая папка появится через несколько секунд снова в окне Solution Explorer.

Выбор типичного приложения C/C++ "Hello World" и генерация кода

Рис. 7.21. Выбор типичного приложения C/C++ "Hello World" и генерация кода

Затем выделите запись подпроекта MyHelloWorld снова в окне Solution View в левом столбце Visual Studio 2005 IDE. Сделайте щелчок правой кнопкой мыши и выберите Build из всплывающего в ответ на это меню (Важное замечание: Не выбирайте Build из меню верхнего уровня, это приведет к повторной сборки всего, включая ОС, и будет как минимум минут на 10 дольше). Вариант Build, выбранный из контекстного меню при щелчке правой кнопкой мыши, компилирует только код подпроекта и тотчас же компонует его с существующим образом ОС.

Проверьте окно вывода, чтобы убедиться, что сборка прошла нормально. Если имеются ошибки в окне отладки, вы можете щелкнуть на этом сообщение об ошибке, чтобы перейти к соответствующей строке кода.

Предполагая, что все еще соединено и выполняется, выберите Target \Rightarrow Reset Device. Устройство должно ответить, загружая новое ядро ОС с подпроектом. Если нет, используйте Target \Rightarrow Detach Device, выключите eBox и снова включите, а затем повторите все начальные шаги для выбора варианта начальной загрузки на eBox и загрузки нового образа ОС времени выполнения в устройство. Когда ядро образа времени выполнения будет загружено и выполнит начальную загрузку, снова должно появиться изображение. В этот раз код нашего приложения "hello world" находится в eBox, и мы можем его выполнить. Следующий код генерируется для консольного приложения "hello world"

// MyHelloWorld.cpp : Определяет точку входа для консольного
// приложения
#include "stdafx.h"
int _tmain(int argc, TCHAR *argv[], TCHAR *envp[])
{
    _tprintf(_T("Hello World!\n"));
    return 0;
}

Этот код можно открыть для редактирования в Visual Studio, раскрывая подпроект MyHelloWorld, а затем раскрывая запись Source Files. Двойной щелчок на записи MyHelloWorld.cpp откроет код в окне редактора Visual Studio. Функция _tprintf печатает сообщения Unicode в окне консоли. Окно консоли появится только когда выполнится первый оператор printf. Окно консоли закрывается автоматически, когда происходит выход из программы. Это программа завершается сразу, поэтому нам нужно задать точку прерывания сразу после оператора _tprintf. Чтобы задать точку прерывания, сделайте щелчок левой кнопкой мыши на затененной полосе сразу слева от строки после оператора return со скобкой "}". Небольшая иконка точки прерывания должна появиться на затененной полосе. Если иконка не появится, вы сможете тем не менее выполнить отладку из предыдущего урока сборки, поэтому используйте Debug _ Stop Debugging и попробуйте еще раз.

Задание точки прерывания в приложении C/C++ "Hello World"

увеличить изображение
Рис. 7.22. Задание точки прерывания в приложении C/C++ "Hello World"

Для выполнения программы "hello world" выберите Target _ Run Programs. Просмотрите появляющиеся окна и найдите программу MyHelloWorld. Выделите строку MyHelloWorld.exe и щелкните Run. Через пару секунд должно открыться окно консоли на экране eBox и в конечном счете должно появиться "Hello World" маленькими буквами вверху окна консоли, как видно на рисунке 7.23.

Вывод окна консоли eBox во время выполнения приложения "Hello World" C/C++

Рис. 7.23. Вывод окна консоли eBox во время выполнения приложения "Hello World" C/C++

В этом месте должна встретиться точка прерывания, и вы должны увидеть вывод, похожий на рисунок 7.24 в Visual Studio 2005 IDE. Обратите внимание, что иконка, связанная с точкой прерывания, изменилась. Эта новая иконка указывает, что код достиг точки прерывания.

Включение отладки ядра немного замедляет все операции. Когда разработка ядра немного стабилизируется, можно будет отключить отладку и выполнять сборки выпуска для тестирования приложений. Сборки выпуска будут загружаться и выполняться значительно быстрее. Когда встретится трудная проблема, можно всегда будет вернуться к отладочной сборке для дополнительного тестирования.

Остановка в точке прерывания в приложении C/C++ "Hello World"

увеличить изображение
Рис. 7.24. Остановка в точке прерывания в приложении C/C++ "Hello World"

После остановки программы в точке прерывания выберите Debug \Rightarrow Start, чтобы продолжить после точки прерывания. Когда программа закончит выполнение, окно консоли на eBox должно закрыться.

Когда вы найдете проблемы для исправления, не забудьте остановить отладку с помощью Debug \Rightarrow Stop Debugging перед запуском любой новой сборки. Отладчик блокирует некоторые символьные файлы во время выполнения, что будет приводить к ошибкам сборщика (Build). Когда вы остановите отладчик, возможно придется перезапустить eBox прежде чем загружать новый образ времени выполнения.

Теперь вы успешно добавили, скомпилировали, отладили и выполнили прикладную программу C/C++, которая была добавлена как подпроект в проект дизайна ОС.

Создание сборки выпуска MyOS

Теперь, когда проект MyOS работает правильно и выполняет приложения, мы перейдем на использование сборки выпуска (Release Build) MyOS вместо большей, более медленной отладочной сборки (Debug). Это сделает начальную загрузку и выполнение приложений значительно быстрее. Запустите Visual Studio и откройте свой проект MyOS. В основном меню Tools item найдите самый левый раскрывающийся комбинированный бокс и выберите ICOP_Vortex86_60B Release, как показано на рисунке 7.25. Это приводит к переключению проекта MyOS на сборку Release. Если комбинированный бокс затенен, нужно будет сначала отсоединить eBox и остановить отладку.

Чтобы собрать версию выпуска, выберите Build \Rightarrow Build MyOS. Через несколько минут сборка должна успешно выполниться без каких-либо ошибок.

Выполните описанные ранее действия, чтобы присоединить и загрузить новый образ ядра (версия Release) в eBox. Он должен быть меньше размером и запускаться быстрее, чем отладочный образ.

Основное окно Windows CE должно появиться на экране eBox, когда система запустится. Оставьте Visual Studio работающей, но отсоедините eBox. VS и проект MyOS снова понадобятся через несколько шагов, если вы собираетесь продолжить уроки в данный момент.

Переключение проекта MyOS на сборку Release

увеличить изображение
Рис. 7.25. Переключение проекта MyOS на сборку Release