Re: [edk2] How do I quickly determine info such as what is difference between .efi and .ifi files?

Subject: Re: [edk2] How do I quickly determine info such as what is difference between .efi and .ifi files?

From: Andrew Fish <afish@apple.com>

To: edk2-devel@lists.sourceforge.net

Date: 2014-02-05 21:44:17


On Feb 5, 2014, at 1:23 PM, John Davis <davisjf@gmail.com> wrote:

Hello Andrew



Thanks again for your help.

On Wed, Feb 5, 2014 at 11:10 AM, Andrew Fish <afish@apple.com> wrote:

On Feb 5, 2014, at 10:27 AM, John Davis <davisjf@gmail.com> wrote:



 <Stuff snipped>

Wow, that is good info you gave me.  I was surprised that PEView ( a free program) actually decodes the Subsystem field in the IMAGE_OPTIONAL_HEADER.

DEBUG_VS2010x86/IA32/MyHello/Output/MyHello.efi is 0xa IMAGE_SUBSYSTEM_EFI_APPLICATION
DEBUG_VS2010x86/FV/Ffs/"GUID?"Tcp4Dxe/<no .efi files here, but take the .p32 file and strip off leading bytes to the dos header and save to diff file and edit> is 0xB IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER
DEBUG ditto/"GUID"Reset/ditto decodes to EFI_BOOT_SERVICE_DRIVER
DEBUG ditto/"GUID"Timer/dito ditto
DEBUG ditto/"GUID"Cpu/ditto ditto
DEBUG ditto/"GUID"CapsuleRuntimeDxe/ 0xc IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER

Odd, I figured the Dxe vs no Dxe suffix would correspond to different image types.


DXE is a PI concept. DXE drivers are generally used to produce the hardware abstractions (architectural protocols) need for all the EFI services to be available. The DXE drivers are dispatched based on a dependency grammar, so a section of the FFS file contains a Depex. EFI drivers are only loaded after all the architectural protocols have been installed. So no Depex != a Depex of TRUE (this is often confusing to people). The DXE Core produces the EFI services. 
//
// PE32+ Subsystem type for EFI images
//
#define EFI_IMAGE_SUBSYSTEM_EFI_APPLICATION         10
#define EFI_IMAGE_SUBSYSTEM_EFI_BOOT_SERVICE_DRIVER 11
#define EFI_IMAGE_SUBSYSTEM_EFI_RUNTIME_DRIVER      12


So things which make sense:

o  CapsuleRuntimeDxe is a runtime driver. This jives with chapter 5 of Beyond Bios where it says capsule services is part of the runtime services.
o MyHello application which is in the seperate folder is a Application, since it was presented as an application code and discussed in the book as an application.
o Cpu, Reset, Tcp are boottime drivers. 

Things which don't make sense:
o Timer is boottime but its mentioned as a runtime service.

The Timer AP is a boot services thing. The emulator does not really support runtime (setting up page tables would crash the emulator etc.), so something could be mis typed and everything would work correctly in boot services. 

o Why some drivers end with Dxe suffix and others don't. "GUID"Reset vs "GUID"CapsuleRuntimeDxe



If you look at an INF file:
1) The name of the executable is defined by BASE_NAME
2) The type of the executable is defined by MODULE_TYPE

So then name is convention, not cannon. 

Thanks,

Andrew Fish




 
Thanks,

Andrew Fish


-- 
John F. Davis
6 Kandes Court
Durham, NC 27713




------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel


------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk
_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel




-- 
John F. Davis
6 Kandes Court
Durham, NC 27713
919-888-8358




------------------------------------------------------------------------------
Managing the Performance of Cloud-Based Applications
Take advantage of what the Cloud has to offer - Avoid Common Pitfalls.
Read the Whitepaper.
http://pubads.g.doubleclick.net/gampad/clk?id=121051231&iu=/4140/ostg.clktrk_______________________________________________
edk2-devel mailing list
edk2-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/edk2-devel