Свой модуль для EFI

Кто из практически писавших - не подскажете процедуру: что требуется и где можно это скачать-купить для разработки своего модуля? Про EDK с tianocore.org - понятно, а что ещё?

Инженеры из Phoenix Tech сделали очень хороший Wiki ресурс по UEFI: wiki.phoenix.com/wiki/index.php/UEFI


Очень удобно - вся информация "под рукой".

Если есть слюникс, то все еще проще.

gnu-efi.sourceforge.net/

Поддерживает архитектуры IA-64, x86, x86_64.
Внимание я пробовал только с IA-64 (Itanium)-машинкой.
Сейчас лень доставать, вспоминать, но там все ОЧЕНЬ просто.


В ридми описано. Позволяет девелопить на обычном C, компиляет
соответственно твикнутым gcc. Все что отличается, так это имя
процедуры точки входа, efi_main() или как-то так:)

Кстати, под ia64 в риалтайме никак не поотлаживаешь, без загрузки
в родную среду, tiancore не умеет ia64 трогать. Максимум - вывод
objdump'а в виде итаниумного ассемблера, все:(

Вот и задание, напиши в качестве модуля интерактивный отладчик :)

2 goose:
Я не пробовал gnu-efi. А в чем выигрыш от его использования? EDK так же написан на Си, в спеке описаны все его функции. Билдить под конкретную платформу микрософтовскими или интеловскими компиляторами и отлаживать все-равно нужно с конкретным железом. Года два назад я пытался найти симулятор для разразботки БИОСа, но ничего не нашел - когда приходит новое железо, то симулятора для него точно еще никто не написал. Так что остается только In-Target режим для отладки, и хорошо когда есть ITP.

2 ТоварищЪ:
А я и не говорил про конкретную выгоду.
Я описал специфическую ситуацию.

Я игрался на Itanium, и мне поставить туда бесплатный дистрибутив GNU/Linux с доступными хотя и слишком упрощенными утилитами было куда проще чем поставить Win2003 и ждать когда у него исчерпается триал (про обходные пути молчу). Это глупая отмазка.

А настоящая в том что MS VC++ насколько я знаю не существует в нативном виде под ia64-архитектуру. Покрайней мере мне его достать не удалось. Для работы понадобится отдельно компилятор на Itanium'ной машине и мостик, чтобы можно было управлять процессом неспосредственно из IDE (MS VC++, но на x86-машине).

Т.к. ни о какой интерактивной отладке или просто проверке работы приложения без загрузки в среду ia64efi - такой набор точно не дал бы никаких преимуществ. Все что можно было себе позволить - листинг ассемблера.

Есть такая студия с ia64, но по большему счету все-равно какой компилятор ей подсунуть x86, ia64 или ARM. Скомпилировать можно все что душе угодно, другое дело отладка. А что gnu-efi имеет интерактивный отладчик ia64 или о чем речь?

2 ТоварищЪ:

Речь зашла в тупик:)

> А что gnu-efi имеет интерактивный отладчик ia64

Я уже говорил, конечно нет.
Более того даже интерактивная отладка во многих случаях не помогла, если бы такая и была бы воплощена.

Потому что в основном что свои модули что чужие чаще нужны для работы с конкретным железом. А т.к. документация у той же HP закрыта на такие вещи, и сам ничего не отреверсишь, то и толку нет.

Пример? Доступ к настройкам fan'ов компьютера.

Аватар пользователя Miyka

Подниму тему. Ситуация такая: Не сочтите за глупость, но не могли бы вы мне объяснить как пользоваться исходниками EFI? Дело в том что сигнатурный поиск выдает только файлы с объявлениями структур и дефайнов... а где код?

Аватар пользователя Miyka

При сборке EFI выпадает 2 ошибки:
1. Разрешимая, сслылается на строку

!IF "$(EFI_SPECIFICATION_VERSION)" >= "0x0002000A"
в файле makefile и содержит следующей текст:
c:\tiano\edk\Sample\Tools\Source\makefile(44): fatal error U1080: operator and/or operand usage illegal

Короче говоря, ее мы смогли обойти, но довольно радикальный способом, поэтому если кто нибудь знает что является причиной подскажите пожалуйста.
2. Не разрешимая, на ней сейчас стоим.

NT32 fatal error U1095: 
expanded command line 'cl /nologo /W4 /WX /GX /Gy /c /Foc:\tiano\edk\Sample\Platform\Nt32\Build\Tools\GenCRC32Section.obj 
-I c:\tiano\edk\Foundation                           -I c:\tiano\edk\Foundation\Efi                       
-I c:\tiano\edk\Foundation\Framework                 -I c:\tiano\edk\Sample\Platform\Nt32                 
-I c:\tiano\edk\Foundation\Core\Dxe                  -I c:\tiano\edk\Foundation\Include                   
-I c:\tiano\edk\Foundation\Efi\Include               -I c:\tiano\edk\Foundation\Framework\Include         
-I c:\tiano\edk\Foundation\Include\IndustryStandard  -I c:\tiano\edk\Foundation\Include\Ia32              
-I c:\tiano\edk\Foundation\Include\Pei               -I c:\tiano\edk\Foundation\Library\Pei\Include       
-I c:\tiano\edk\Sample\Include                       -I "c:\tiano\edk\Sample\Tools\Source\Common" /Zi /Gm 
/Fdc:\tiano\edk\Sample\Platform\Nt32\Build\Tools\GenCRC32SectionObj /D EFI_SPECIFICATION_VERSION=0x0002000A  
/D PI_SPECIFICATION_VERSION=0x00010000  /D TIANO_RELEASE_VERSION=0x00080006 /D UTILITY_BUILD="\"Edk1.06\"" 
/D UTILITY_VENDOR="\"TianoCore.org\""  /D EFI_DEBUG /D EFI_DEBUG_CLEAR_MEMORY 
/D EFI_PEI_PERFORMANCE /D EFI_DXE_PERFORMANCE /D EFI_DXE_PERFORMANCE 
/D EFI_PEI_REPORT_STATUS_CODE_ON /Od /D "WIN32" /D "NDEBUG" /D "_CONSOLE" 
/D __RPCASYNC_H__   -I c:\tiano\edk\Foundation                           
-I c:\tiano\edk\Foundation\Efi                       -I c:\tiano\edk\Foundation\Framework                 
-I c:\tiano\edk\Sample\Platform\Nt32                 -I c:\tiano\edk\Foundation\Core\Dxe                  
-I c:\tiano\edk\Foundation\Include                   -I c:\tiano\edk\Foundation\Efi\Include               
-I c:\tiano\edk\Foundation\Framework\Include         -I c:\tiano\edk\Foundation\Include\IndustryStandard  
-I c:\tiano\edk\Foundation\Include\Ia32              -I c:\tiano\edk\Foundation\Include\Pei               
-I c:\tiano\edk\Foundation\Library\Pei\Include       -I c:\tiano\edk\Sample\Include                       
-I "C:\Tiano\EDK\Sample\Tools\Source\Common" 
"C:\Tiano\EDK\Sample\Tools\Source\GenCRC32Section\GenCRC32Section.c" 
/Fo"C:\Tiano\EDK\Sample\Platform\Nt32\Build\Tools\GenCRC32Section.obj"' too long
Stop.
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x2'
Stop.
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x2'
Stop.

Если радикально разобраться с файлом GenCRC32Section то вместо него ошибка будет ссылаться на GenDepex, короче так будет до конца всех перечисленных файлов, далее опять компилим и получаем:
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x1'

Помогите разобраться.

Конфигурация системы:
WinXP sp3 (На самом деле не зависит от ОС, пробовали и на 7 и на разных sp ХР)
Visual Studio 2003 .Net (аналогичные ошибки с VS2010).

Спасибо.

Аватар пользователя savely

Цитата:
Помогите разобраться

Что не ясно в переводе "expanded command line .... too long"?

P.S. Подозреваю, среда компиляции криво настроена, путей к include в командной строке явно перебор.

А кому счас легко...

Аватар пользователя Miyka

Цитата:
Что не ясно в переводе "expanded command line .... too long"?
P.S. Подозреваю, среда компиляции криво настроена, путей к include в командной строке явно перебор.

Если бы было все так просто. Дело в том что это ошибка переходит от одного файла к другому. Т.е. я ее исправляю и она теперь ссылается на другой файл. Без "expanded command line .... too long" вылезает ошибка
NMAKE : fatal error U1077: 'C:\Windows\system32\cmd.exe' : return code '0x1'

, а далее тупик. Ладно, это я собирал TianoEDK, а тут попробовал Интеловоской.
После некоторого шаманства, EDK от Intel заработала и закомпилила мне все что было указано.
Но тут встаёт вопрос, что делать дальше? У меня есть EFI совместимый модуль, есть образ, я умею вклеивать модуль в образ, который корректно распознаётся BIOSPаtcher, а как объяснить оболочке, что этот модуль надо запустить? Ведь должно быть типа таблицы модулей или они как то вызываются последовательно или еще что.
Спасибо.

Отправить комментарий

Содержание этого поля является приватным и не предназначено к показу.
  • Разрешённые HTML-теги: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <img>
  • You can use BBCode tags in the text. URLs will automatically be converted to links.

Подробнее о форматировании текста

Антибот - введите цифру.
Ленты новостей