Таджикистан, Душанбе, Таджикский Технический Университет (ТТУ), 2013 |
Приложение A: Автоматическое выполнение приложения
Для автоматического запуска выполнения приложений при запуске CE, требуется новая запись реестра. Когда начинает загружаться Windows Embedded CE, ядро запускает файловую систему и проверяет ключ реестра HKEY_LOCAL_MACHINE \Init, чтобы выяснить какие приложения должны выполняться. Для управления, какие приложения выполнять при запуске системы, создайте значения реестра для запуска. Значения реестра для запуска сортировать в реестре не требуется, хотя можно определить зависимости. Можно определить до 32 приложений. Значения реестра для запуска имеют необязательные зависимости, которые указываются значением реестра Dependnn. Значения реестра Dependnn определяют приложения, которые должны выполняться в Windows Embedded CE перед запуском приложений Launchnn. Значения реестра Dependnn начинаются с ключевого слова Depend, за которым следует тот же самый десятичный номер, что и в значении реестра Launchnn. Значения реестра Dependnn определяют порядок, в котором Windows Embedded CE запускает приложения. Для значения Dependnn можно определить одно или несколько зависимых приложений. Зависимые приложения определяются как последовательности word в шестнадцатеричной записи.
Запись реестра добавляется в файл реестра Project.reg проекта разработки ОС (а не в Platform.reg ). Вот пример:
[HKEY_LOCAL_MACHINE\init] "LAUNCH9x"= "myapplication.exe" "Depend9x"=hex:0A,00,14,00,1E,00
Где x является однозначным числом (одинаковым для обоих строк и может использоваться только один раз). Типичные значения зависимостей, связанные с базовыми приложениями, включены. Приложения запускаются в числовом порядке. Приложение может быть включено как подпроект в проект разработки ОС или оно может загружаться из устройства энергонезависимой памяти, такой как внутреннее флэш-устройство, флэш-устройство USB, или карта CF.
Требуется полный путь доступа, включая имя устройства для энергонезависимой памяти. Для пути доступа вспомните, что в C/C++, чтобы поместить в строку символ "\", необходимо использовать "\\". Подпроекты находятся в каталоге "\Windows" на устройстве и скрыты по умолчанию.
Чтобы настроить eBox для автоматической начальной загрузки, из меню вариантов загрузки выйдите в приглашение DOS. Модифицируйте файл config.sys, чтобы он выбирал подходящий вариант начальной загрузки LOADCEPC без ожидания ввода с клавиатуры. На eBox выполните edit config.sys. Это запускает редактор DOS (мышь не будет здесь работать, так как драйвер мыши в DOS не загружен!). Перемещаться можно с помощью клавиш курсора. Одним из простых способов сделать это является изменение строки menudefault=LOCAL_800,15 на требуемый пункт меню начальной загрузки. "15" в этой строке означает пятнадцатисекундную задержку, прежде чем будет автоматически выбран используемый по умолчанию пункт меню, поэтому используйте меньшее значение, чтобы автоматически загружаться быстрее. LOCAL_800 является меткой для одного из вариантов начальной загрузки в autoexec.bat. Измените ее на требуемый вариант начальной загрузки. После выполнения необходимых изменений используйте ALT+F, выберите Save (Сохранить) и затем Exit.
Чтобы скопировать новый файл ядра в eBox для локальной начальной загрузки, обратитесь к разделу "лекции 10" с названием "Перенос нового образа ОС на eBox для автономной начальной загрузки".
К сожалению, хотя и можно запустить приложение с помощью такой техники, невозможно передать приложению никакие параметры командной строки, и ожидать, пока сеть будет полностью сконфигурирована и в рабочем состоянии. Это критически важно для сетевых приложений или приложений, которым требуются параметры командной строки.
Чтобы обойти эти проблемы, было разработано приложение Autolaunch1, которое может запустить приложение после включения сети, добавить задержку, и передать приложению параметры командной строки. Оно может также запустить несколько приложений. Когда оно выполняется, оно проверяет в папке запуска реестра, [HKEY_LOCAL_MACHINE\Startup], приложения для запуска после определенной задержки. Приложение Autolaunch на самом деле выполняет запуск, используя запись реестра [HKEY_LOCAL_MACHINE\init], как описано выше.
Вот настройка по умолчанию записи в файле реестра подпроекта Autolaunch:
[HKEY_LOCAL_MACHINE\Init] "Depend99"=hex:0a,00,14,00,1e,00,32,00 [HKEY_LOCAL_MACHINE\Init] "Launch99"="AutoLaunch.exe" [HKEY_LOCAL_MACHINE\Startup] "Process1"="cerdisp -c" "Process1Delay"=dword:00001388 "Process2"="ConmanClient2.exe" "Process2Delay"=dword:0
Поэтому первый ключ реестра \Init запускает Autolaunch. Приложение Autolaunch затем выполняет код, который ожидает включения сети. Затем оно просматривает в реестре записи \Startup и запускает их после указанного времени задержки (в ms.). Используемые по умолчанию записи запускают два приложения cerdisp -c (приложение удаленного дисплея CE, описанное в "Приложении B" ) и conmanclient2 компании Corecon (используемое для развертывания кода и отладки). Отредактируйте записи запуска и временные задержки (в ms) требуемым для проекта образом и добавьте другие процессы для запуска, как требуется для приложения.
Если отключить средство сетевой безопасности Corecon, то не нужно будет использовать второй шаг настройки Corecon для выполнения программы cmaccept. Отключение безопасности может создавать угрозы для целевого устройства, если оно соединяется с публично доступной сетью. Следующие настройки реестра можно использовать для отключения сетевой безопасности Corecon:
[HKEY_LOCAL_MACHINE\System] "CoreConOverrideSecurity"=dword:1
Для проектов, которые используют последовательные порты, можно также при желании отключить отладочные сообщения последовательного порта CE. Параметр командной строки /C:0 команды LOADCEPC, находящейся в файле Autoexec.bat, используемом для начальной загрузки CE, будет отключать используемые по умолчанию отладочные сообщения последовательного порта, посылаемые на COM1:.