Re: [edk2] writing EDK compatible application.
On 07/04/2017 04:10 PM, Laszlo Ersek wrote: > On 07/04/17 19:20, Amit kumar wrote: >> >> HI, >> >> I have written a code (say helloworld program ) using edk2 framework, named >> the output efi file as BOOTx64.efi and placed it on a removable media in >> EFI/BOOT/ directory so that the application is listed in one time boot menu. >> When selected from boot menu it prints "Hello World". >> Which works as expected when tested on UEFI 2.3 and above platforms. >> But the same code fails to execute on EFI 1.10 platforms. Which i suppose is >> the problem with application entry point. >> Can somebody suggest me a way so that the application entry function can be >> compatible to both the platform. Even when written according to UEFI 2.5+ >> Spec ? > > I don't think you can develop for EFI 1 using edk2 -- unless you use > EdkCompatibilityPkg I guess. But, I don't know how much > EdkCompatibilityPkg is maintained. Actually, I think it is possible -- or at the very least, it's possible to write something that works on both UEFI-based PCs and EFI 1.1-based Macs. My rEFInd (https://sourceforge.net/projects/refind/) does this. I've used it with Macs as early as a first-generation 32-bit Mac Mini. I have NOT tested it with any non-Apple EFI 1.x implementations, though. I recall I had to fiddle with the .inf file to get it to work with Macs. Comparing my refind.inf to other .inf files included in EDK2, I think the relevant line(s) were one or both of the following: EDK_RELEASE_VERSION = 0x0002 EFI_SPECIFICATION_VERSION = 0x0001 This is in the [Defines] section. Note that, if you want to look more closely at the rEFInd code or configuration files, I've made some significant improvements to the compilation procedures under EDK2 (vs. GNU-EFI) since the latest 0.10.8 release. Thus, you should pull down the latest unreleased code via git, rather than download the source code tarball. -- Rod Smith rodsm...@rodsbooks.com http://www.rodsbooks.com ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Laszlo, Andrew, Marvin Thank you very much for your suggestions and for sharing information. It really did help a lot. Thanks and Regards Amit From: Laszlo Ersek <ler...@redhat.com> Sent: Wednesday, July 5, 2017 1:40:49 AM To: Amit kumar; edk2-devel@lists.01.org Subject: Re: [edk2] writing EDK compatible application. On 07/04/17 19:20, Amit kumar wrote: > > HI, > > I have written a code (say helloworld program ) using edk2 framework, named > the output efi file as BOOTx64.efi and placed it on a removable media in > EFI/BOOT/ directory so that the application is listed in one time boot menu. > When selected from boot menu it prints "Hello World". > Which works as expected when tested on UEFI 2.3 and above platforms. > But the same code fails to execute on EFI 1.10 platforms. Which i suppose is > the problem with application entry point. > Can somebody suggest me a way so that the application entry function can be > compatible to both the platform. Even when written according to UEFI 2.5+ > Spec ? I don't think you can develop for EFI 1 using edk2 -- unless you use EdkCompatibilityPkg I guess. But, I don't know how much EdkCompatibilityPkg is maintained. Here's some links: https://github.com/tianocore/tianocore.github.io/wiki/EdkCompatibilityPkg https://github.com/tianocore/tianocore.github.io/wiki/EDK The entry point is likely the least of your problems. The library instances pulled in from under MdePkg, MdeModulePkg etc are full of UEFI 2.* dependencies, I'm pretty sure. I would suggest ignoring EFI 1... Thanks Laszlo ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
> On Jul 4, 2017, at 11:13 AM, Amit kumar <akami...@hotmail.com> wrote: > > Hey, > I just can find any spec on ConsoleControl protocol, can you tell what/where > to refer ? Amit, It was defined as part of the Tiano stuff, so that is Intel Framework, and it did not make it to the PI spec or edk2 open source. The definition of the protocol is here. That should be enough documentation. https://github.com/tianocore/edk2/blob/master/EdkCompatibilityPkg/Foundation/Protocol/ConsoleControl/ConsoleControl.h The entry point has never changed for (U)EFI, but remember in the edk2 the AutoGen.c code (build generated in the build output) actually calls library constructors and then calls your entry point. The issue I've seen trying to run edk2 code on older machines is the library constructor will error out and the App will not launch. If you want to make an Application that does not call the library constructors you need to name the entry point _ModuleEntryPoint, and don't list UefiApplicationEntryPoint in the [LibraryClasses] section of the INF file. Not to mention I'd leave off PcdLib too as that is an edk2 open source concept originally. Thanks, Andrew Fish > Amit > On Jul 4, 2017, at 11:25 PM, Amit kumar <akami...@hotmail.com > <mailto:akami...@hotmail.com><mailto:akami...@hotmail.com > <mailto:akami...@hotmail.com>>> wrote: > > Thanks for the suggestion Marvin, I will try switching to text mode. > Amit > On Jul 4, 2017, at 11:21 PM, Marvin Häuser <marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com><mailto:marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com>>> wrote: > > Well, if EFI Shell 1.0 works, why not use it? > Mac EFI exposes the ConsoleControl protocol, which lets you switch between > text and graphics mode. > That might be the reason your text outputs don't show, because graphics is > the default mode on Mac EFI, > though I could never test this myself as I lack the hardware. > > Regards, > Marvin. > > -Original Message- > From: Amit kumar [mailto:akami...@hotmail.com <mailto:akami...@hotmail.com>] > Sent: Tuesday, July 4, 2017 7:46 PM > To: Marvin H?user <marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com><mailto:marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com>>> > Cc: edk2-devel@lists.01.org > <mailto:edk2-devel@lists.01.org><mailto:edk2-devel@lists.01.org > <mailto:edk2-devel@lists.01.org>> > Subject: Re: [edk2] writing EDK compatible application. > > Hi, > Yes intact it’s MacBook, but is there another way to do it without UEFI shell. > In edk2/shellpkgbin are 2.2+, even shell fails to execute on Mac. > Although efi shell 1.0 works. Is there a to do it without shell ? > Thanks > Amit > On Jul 4, 2017, at 11:05 PM, Marvin H?user > <marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com><mailto:marvin.haeu...@outlook.com > <mailto:marvin.haeu...@outlook.com>>> wrote: > > Hey, > > The entry point declarations and the calling conventions have not changed > since EFI 1.10, though X64 was not a supported platform for 1.10 if I > remember correctly. > To be honest, I never saw an x64 EFI 1.10 implementation other than > Apple's, though even if it still signals that version, it's actually more > UEFI by > now. > I don't own a Mac, so if it's the platform you tested your app on, I can't > tell > you why it didn't work, but I would suggest you to run the app from an EFI > Shell. > > Regards, > Marvin. > > -Original Message----- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org > <mailto:edk2-devel-boun...@lists.01.org>] On Behalf > Of Amit kumar > Sent: Tuesday, July 4, 2017 7:21 PM > To: edk2-devel@lists.01.org > <mailto:edk2-devel@lists.01.org><mailto:edk2-devel@lists.01.org > <mailto:edk2-devel@lists.01.org>> > Subject: [edk2] writing EDK compatible application. > > > HI, > > I have written a code (say helloworld program ) using edk2 framework, > named the output efi file as BOOTx64.efi and placed it on a removable > media in EFI/BOOT/ directory so that the application is listed in one time > boot menu. > When selected from boot menu it prints "Hello World". > Which works as expected when tested on UEFI 2.3 and above platforms. > But the same code fails to execute on EFI 1.10 platforms. Which i > suppose is the problem with application entry point. > Can somebody suggest me a way so that the application entry function > can be compatible to both the platform. Even when written according > to UEFI 2.5+ Spec ? > > Thanks > Amit >
Re: [edk2] writing EDK compatible application.
On 07/04/17 19:20, Amit kumar wrote: > > HI, > > I have written a code (say helloworld program ) using edk2 framework, named > the output efi file as BOOTx64.efi and placed it on a removable media in > EFI/BOOT/ directory so that the application is listed in one time boot menu. > When selected from boot menu it prints "Hello World". > Which works as expected when tested on UEFI 2.3 and above platforms. > But the same code fails to execute on EFI 1.10 platforms. Which i suppose is > the problem with application entry point. > Can somebody suggest me a way so that the application entry function can be > compatible to both the platform. Even when written according to UEFI 2.5+ > Spec ? I don't think you can develop for EFI 1 using edk2 -- unless you use EdkCompatibilityPkg I guess. But, I don't know how much EdkCompatibilityPkg is maintained. Here's some links: https://github.com/tianocore/tianocore.github.io/wiki/EdkCompatibilityPkg https://github.com/tianocore/tianocore.github.io/wiki/EDK The entry point is likely the least of your problems. The library instances pulled in from under MdePkg, MdeModulePkg etc are full of UEFI 2.* dependencies, I'm pretty sure. I would suggest ignoring EFI 1... Thanks Laszlo ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Hey, I just can find any spec on ConsoleControl protocol, can you tell what/where to refer ? Amit On Jul 4, 2017, at 11:25 PM, Amit kumar <akami...@hotmail.com<mailto:akami...@hotmail.com>> wrote: Thanks for the suggestion Marvin, I will try switching to text mode. Amit On Jul 4, 2017, at 11:21 PM, Marvin Häuser <marvin.haeu...@outlook.com<mailto:marvin.haeu...@outlook.com>> wrote: Well, if EFI Shell 1.0 works, why not use it? Mac EFI exposes the ConsoleControl protocol, which lets you switch between text and graphics mode. That might be the reason your text outputs don't show, because graphics is the default mode on Mac EFI, though I could never test this myself as I lack the hardware. Regards, Marvin. -Original Message- From: Amit kumar [mailto:akami...@hotmail.com] Sent: Tuesday, July 4, 2017 7:46 PM To: Marvin H?user <marvin.haeu...@outlook.com<mailto:marvin.haeu...@outlook.com>> Cc: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> Subject: Re: [edk2] writing EDK compatible application. Hi, Yes intact it’s MacBook, but is there another way to do it without UEFI shell. In edk2/shellpkgbin are 2.2+, even shell fails to execute on Mac. Although efi shell 1.0 works. Is there a to do it without shell ? Thanks Amit On Jul 4, 2017, at 11:05 PM, Marvin H?user <marvin.haeu...@outlook.com<mailto:marvin.haeu...@outlook.com>> wrote: Hey, The entry point declarations and the calling conventions have not changed since EFI 1.10, though X64 was not a supported platform for 1.10 if I remember correctly. To be honest, I never saw an x64 EFI 1.10 implementation other than Apple's, though even if it still signals that version, it's actually more UEFI by now. I don't own a Mac, so if it's the platform you tested your app on, I can't tell you why it didn't work, but I would suggest you to run the app from an EFI Shell. Regards, Marvin. -Original Message- From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of Amit kumar Sent: Tuesday, July 4, 2017 7:21 PM To: edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> Subject: [edk2] writing EDK compatible application. HI, I have written a code (say helloworld program ) using edk2 framework, named the output efi file as BOOTx64.efi and placed it on a removable media in EFI/BOOT/ directory so that the application is listed in one time boot menu. When selected from boot menu it prints "Hello World". Which works as expected when tested on UEFI 2.3 and above platforms. But the same code fails to execute on EFI 1.10 platforms. Which i suppose is the problem with application entry point. Can somebody suggest me a way so that the application entry function can be compatible to both the platform. Even when written according to UEFI 2.5+ Spec ? Thanks Amit ___ edk2-devel mailing list edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org<mailto:edk2-devel@lists.01.org> https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Thanks for the suggestion Marvin, I will try switching to text mode. Amit > On Jul 4, 2017, at 11:21 PM, Marvin Häuser <marvin.haeu...@outlook.com> wrote: > > Well, if EFI Shell 1.0 works, why not use it? > Mac EFI exposes the ConsoleControl protocol, which lets you switch between > text and graphics mode. > That might be the reason your text outputs don't show, because graphics is > the default mode on Mac EFI, > though I could never test this myself as I lack the hardware. > > Regards, > Marvin. > >> -Original Message- >> From: Amit kumar [mailto:akami...@hotmail.com] >> Sent: Tuesday, July 4, 2017 7:46 PM >> To: Marvin H?user <marvin.haeu...@outlook.com> >> Cc: edk2-devel@lists.01.org >> Subject: Re: [edk2] writing EDK compatible application. >> >> Hi, >> Yes intact it’s MacBook, but is there another way to do it without UEFI >> shell. >> In edk2/shellpkgbin are 2.2+, even shell fails to execute on Mac. >> Although efi shell 1.0 works. Is there a to do it without shell ? >> Thanks >> Amit >>> On Jul 4, 2017, at 11:05 PM, Marvin H?user >> <marvin.haeu...@outlook.com> wrote: >>> >>> Hey, >>> >>> The entry point declarations and the calling conventions have not changed >> since EFI 1.10, though X64 was not a supported platform for 1.10 if I >> remember correctly. >>> To be honest, I never saw an x64 EFI 1.10 implementation other than >> Apple's, though even if it still signals that version, it's actually more >> UEFI by >> now. >>> I don't own a Mac, so if it's the platform you tested your app on, I can't >>> tell >> you why it didn't work, but I would suggest you to run the app from an EFI >> Shell. >>> >>> Regards, >>> Marvin. >>> >>>> -Original Message- >>>> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf >>>> Of Amit kumar >>>> Sent: Tuesday, July 4, 2017 7:21 PM >>>> To: edk2-devel@lists.01.org >>>> Subject: [edk2] writing EDK compatible application. >>>> >>>> >>>> HI, >>>> >>>> I have written a code (say helloworld program ) using edk2 framework, >>>> named the output efi file as BOOTx64.efi and placed it on a removable >>>> media in EFI/BOOT/ directory so that the application is listed in one time >> boot menu. >>>> When selected from boot menu it prints "Hello World". >>>> Which works as expected when tested on UEFI 2.3 and above platforms. >>>> But the same code fails to execute on EFI 1.10 platforms. Which i >>>> suppose is the problem with application entry point. >>>> Can somebody suggest me a way so that the application entry function >>>> can be compatible to both the platform. Even when written according >>>> to UEFI 2.5+ Spec ? >>>> >>>> Thanks >>>> Amit >>>> ___ >>>> edk2-devel mailing list >>>> edk2-devel@lists.01.org >>>> https://lists.01.org/mailman/listinfo/edk2-devel > ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Well, if EFI Shell 1.0 works, why not use it? Mac EFI exposes the ConsoleControl protocol, which lets you switch between text and graphics mode. That might be the reason your text outputs don't show, because graphics is the default mode on Mac EFI, though I could never test this myself as I lack the hardware. Regards, Marvin. > -Original Message- > From: Amit kumar [mailto:akami...@hotmail.com] > Sent: Tuesday, July 4, 2017 7:46 PM > To: Marvin H?user <marvin.haeu...@outlook.com> > Cc: edk2-devel@lists.01.org > Subject: Re: [edk2] writing EDK compatible application. > > Hi, > Yes intact it’s MacBook, but is there another way to do it without UEFI shell. > In edk2/shellpkgbin are 2.2+, even shell fails to execute on Mac. > Although efi shell 1.0 works. Is there a to do it without shell ? > Thanks > Amit > > On Jul 4, 2017, at 11:05 PM, Marvin H?user > <marvin.haeu...@outlook.com> wrote: > > > > Hey, > > > > The entry point declarations and the calling conventions have not changed > since EFI 1.10, though X64 was not a supported platform for 1.10 if I > remember correctly. > > To be honest, I never saw an x64 EFI 1.10 implementation other than > Apple's, though even if it still signals that version, it's actually more > UEFI by > now. > > I don't own a Mac, so if it's the platform you tested your app on, I can't > > tell > you why it didn't work, but I would suggest you to run the app from an EFI > Shell. > > > > Regards, > > Marvin. > > > >> -Original Message- > >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf > >> Of Amit kumar > >> Sent: Tuesday, July 4, 2017 7:21 PM > >> To: edk2-devel@lists.01.org > >> Subject: [edk2] writing EDK compatible application. > >> > >> > >> HI, > >> > >> I have written a code (say helloworld program ) using edk2 framework, > >> named the output efi file as BOOTx64.efi and placed it on a removable > >> media in EFI/BOOT/ directory so that the application is listed in one time > boot menu. > >> When selected from boot menu it prints "Hello World". > >> Which works as expected when tested on UEFI 2.3 and above platforms. > >> But the same code fails to execute on EFI 1.10 platforms. Which i > >> suppose is the problem with application entry point. > >> Can somebody suggest me a way so that the application entry function > >> can be compatible to both the platform. Even when written according > >> to UEFI 2.5+ Spec ? > >> > >> Thanks > >> Amit > >> ___ > >> edk2-devel mailing list > >> edk2-devel@lists.01.org > >> https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Hi, Yes intact it’s MacBook, but is there another way to do it without UEFI shell. In edk2/shellpkgbin are 2.2+, even shell fails to execute on Mac. Although efi shell 1.0 works. Is there a to do it without shell ? Thanks Amit > On Jul 4, 2017, at 11:05 PM, Marvin H?user <marvin.haeu...@outlook.com> wrote: > > Hey, > > The entry point declarations and the calling conventions have not changed > since EFI 1.10, though X64 was not a supported platform for 1.10 if I > remember correctly. > To be honest, I never saw an x64 EFI 1.10 implementation other than Apple's, > though even if it still signals that version, it's actually more UEFI by now. > I don't own a Mac, so if it's the platform you tested your app on, I can't > tell you why it didn't work, but I would suggest you to run the app from an > EFI Shell. > > Regards, > Marvin. > >> -Original Message- >> From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of >> Amit kumar >> Sent: Tuesday, July 4, 2017 7:21 PM >> To: edk2-devel@lists.01.org >> Subject: [edk2] writing EDK compatible application. >> >> >> HI, >> >> I have written a code (say helloworld program ) using edk2 framework, >> named the output efi file as BOOTx64.efi and placed it on a removable media >> in EFI/BOOT/ directory so that the application is listed in one time boot >> menu. >> When selected from boot menu it prints "Hello World". >> Which works as expected when tested on UEFI 2.3 and above platforms. >> But the same code fails to execute on EFI 1.10 platforms. Which i suppose is >> the problem with application entry point. >> Can somebody suggest me a way so that the application entry function can >> be compatible to both the platform. Even when written according to UEFI >> 2.5+ Spec ? >> >> Thanks >> Amit >> ___ >> edk2-devel mailing list >> edk2-devel@lists.01.org >> https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
Re: [edk2] writing EDK compatible application.
Hey, The entry point declarations and the calling conventions have not changed since EFI 1.10, though X64 was not a supported platform for 1.10 if I remember correctly. To be honest, I never saw an x64 EFI 1.10 implementation other than Apple's, though even if it still signals that version, it's actually more UEFI by now. I don't own a Mac, so if it's the platform you tested your app on, I can't tell you why it didn't work, but I would suggest you to run the app from an EFI Shell. Regards, Marvin. > -Original Message- > From: edk2-devel [mailto:edk2-devel-boun...@lists.01.org] On Behalf Of > Amit kumar > Sent: Tuesday, July 4, 2017 7:21 PM > To: edk2-devel@lists.01.org > Subject: [edk2] writing EDK compatible application. > > > HI, > > I have written a code (say helloworld program ) using edk2 framework, > named the output efi file as BOOTx64.efi and placed it on a removable media > in EFI/BOOT/ directory so that the application is listed in one time boot > menu. > When selected from boot menu it prints "Hello World". > Which works as expected when tested on UEFI 2.3 and above platforms. > But the same code fails to execute on EFI 1.10 platforms. Which i suppose is > the problem with application entry point. > Can somebody suggest me a way so that the application entry function can > be compatible to both the platform. Even when written according to UEFI > 2.5+ Spec ? > > Thanks > Amit > ___ > edk2-devel mailing list > edk2-devel@lists.01.org > https://lists.01.org/mailman/listinfo/edk2-devel ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel
[edk2] writing EDK compatible application.
HI, I have written a code (say helloworld program ) using edk2 framework, named the output efi file as BOOTx64.efi and placed it on a removable media in EFI/BOOT/ directory so that the application is listed in one time boot menu. When selected from boot menu it prints "Hello World". Which works as expected when tested on UEFI 2.3 and above platforms. But the same code fails to execute on EFI 1.10 platforms. Which i suppose is the problem with application entry point. Can somebody suggest me a way so that the application entry function can be compatible to both the platform. Even when written according to UEFI 2.5+ Spec ? Thanks Amit ___ edk2-devel mailing list edk2-devel@lists.01.org https://lists.01.org/mailman/listinfo/edk2-devel