Кто из практически писавших - не подскажете процедуру: что требуется и где можно это скачать-купить для разработки своего модуля? Про EDK с tianocore.org - понятно, а что ещё?
Инженеры из Phoenix Tech сделали очень хороший Wiki ресурс по UEFI: http://wiki.phoenix.com/wiki/index.php/UEFI
Очень удобно - вся информация "под рукой".
Если есть слюникс, то все еще проще.
http://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'ов компьютера.
Подниму тему. Ситуация такая: Не сочтите за глупость, но не могли бы вы мне объяснить как пользоваться исходниками EFI? Дело в том что сигнатурный поиск выдает только файлы с объявлениями структур и дефайнов... а где код?
При сборке 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. Не разрешимая, на ней сейчас стоим.
[b]NT32 fatal error U1095:
expanded command line [/b]'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"' [b]too long[/b]
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).
Спасибо.
Помогите разобраться
Что не ясно в переводе "expanded command line .... too long"?
P.S. Подозреваю, среда компиляции криво настроена, путей к include в командной строке явно перебор.
Что не ясно в переводе "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, а как объяснить оболочке, что этот модуль надо запустить? Ведь должно быть типа таблицы модулей или они как то вызываются последовательно или еще что.
Спасибо.
Очень удобно - вся информация "под рукой".
http://gnu-efi.sourceforge.net/
Поддерживает архитектуры IA-64, x86, x86_64.
Внимание я пробовал только с IA-64 (Itanium)-машинкой.
Сейчас лень доставать, вспоминать, но там все ОЧЕНЬ просто.
В ридми описано. Позволяет девелопить на обычном C, компиляет
соответственно твикнутым gcc. Все что отличается, так это имя
процедуры точки входа, efi_main() или как-то так :)
Кстати, под ia64 в риалтайме никак не поотлаживаешь, без загрузки
в родную среду, tiancore не умеет ia64 трогать. Максимум - вывод
objdump'а в виде итаниумного ассемблера, все :(
Вот и задание, напиши в качестве модуля интерактивный отладчик :-)
Я не пробовал gnu-efi. А в чем выигрыш от его использования? EDK так же написан на Си, в спеке описаны все его функции. Билдить под конкретную платформу микрософтовскими или интеловскими компиляторами и отлаживать все-равно нужно с конкретным железом. Года два назад я пытался найти симулятор для разразботки БИОСа, но ничего не нашел - когда приходит новое железо, то симулятора для него точно еще никто не написал. Так что остается только In-Target режим для отладки, и хорошо когда есть ITP.
А я и не говорил про конкретную выгоду.
Я описал специфическую ситуацию.
Я игрался на Itanium, и мне поставить туда бесплатный дистрибутив GNU/Linux с доступными хотя и слишком упрощенными утилитами было куда проще чем поставить Win2003 и ждать когда у него исчерпается триал (про обходные пути молчу). Это глупая отмазка.
А настоящая в том что MS VC++ насколько я знаю не существует в нативном виде под ia64-архитектуру. Покрайней мере мне его достать не удалось. Для работы понадобится отдельно компилятор на Itanium'ной машине и мостик, чтобы можно было управлять процессом неспосредственно из IDE (MS VC++, но на x86-машине).
Т.к. ни о какой интерактивной отладке или просто проверке работы приложения без загрузки в среду ia64efi - такой набор точно не дал бы никаких преимуществ. Все что можно было себе позволить - листинг ассемблера.
Речь зашла в тупик :)
> А что gnu-efi имеет интерактивный отладчик ia64
Я уже говорил, конечно нет.
Более того даже интерактивная отладка во многих случаях не помогла, если бы такая и была бы воплощена.
Потому что в основном что свои модули что чужие чаще нужны для работы с конкретным железом. А т.к. документация у той же HP закрыта на такие вещи, и сам ничего не отреверсишь, то и толку нет.
Пример? Доступ к настройкам fan'ов компьютера.
Подниму тему. Ситуация такая: Не сочтите за глупость, но не могли бы вы мне объяснить как пользоваться исходниками EFI? Дело в том что сигнатурный поиск выдает только файлы с объявлениями структур и дефайнов... а где код?
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. Не разрешимая, на ней сейчас стоим.
[b]NT32 fatal error U1095: expanded command line [/b]'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"' [b]too long[/b] 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).
Спасибо.
Что не ясно в переводе "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, а как объяснить оболочке, что этот модуль надо запустить? Ведь должно быть типа таблицы модулей или они как то вызываются последовательно или еще что.
Спасибо.