Many thanks Olivier. I will try to get deeper into the cause of gST->ConOut being NULL.
Any pointers to my 2nd doubt: 2. I was looking at the 'StartDefaultBootOnTimeout' function implementation inside Bds.c (https://github.com/tianocore/edk2/blob/master/ArmPlatformPkg/Bds/Bds.c#L322) and cannot seem to understand which timer (the Metronome one or the Periodic one will be called here) will be called to implement a timer event. To me it seems the Periodic timer (TimerDxe rather than the TimerLib) would be involved here. Also, I think that since my gST->ConIn and gST->ConOut are both NULL, the 'StartDefaultBootOnTimeout' function will never get a gST->ConIn->WaitForKey and hence the default boot should start after 'PcdPlatformBootTimeOut' interval. Is this understanding correct? Regards, Bhupesh > -----Original Message----- > From: Olivier Martin [mailto:olivier.mar...@arm.com] > Sent: Monday, December 09, 2013 3:35 PM > To: Sharma Bhupesh-B45370; 'Andrew Fish'; edk2- > de...@lists.sourceforge.net > Subject: RE: gST->ConOut is NULL and Timer issues (Was: RE: SerialPrint > not working in DxeServicesLib.c) > > Unfortunately, you will need to trace your execution by yourself. > Everything seems correct but you might have missed a dependency in your > code (check library assignment in DSC file) or got an error in your code > path. > Use DEBUG() macro or debugger to trace your execution. > Try to understand why ConSplitterDxe does not set gST->ConIn and gST- > >ConOut might a good starting point. > > > -----Original Message----- > > From: bhupesh.sha...@freescale.com > > [mailto:bhupesh.sha...@freescale.com] > > Sent: 09 December 2013 07:07 > > To: Olivier Martin; bhupesh.sha...@freescale.com; 'Andrew Fish'; edk2- > > de...@lists.sourceforge.net > > Subject: RE: gST->ConOut is NULL and Timer issues (Was: RE: > > SerialPrint not working in DxeServicesLib.c) > > > > Hi Olivier and Andrew, > > > > Thanks for your respective suggestions. Accordingly I checked out my > > code and found out that: > > > > 1. I checked the relevant stuff in the DSC and FDF files and I have > > the following entries related to ConOut and ConIn: > > > > MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf > > MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf > > > > MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsoleDxe.i > > n > > f > > MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf > > EmbeddedPkg/SerialDxe/SerialDxe.inf > > > > gEfiMdeModulePkgTokenSpaceGuid.PcdConOutGopSupport|FALSE > > > > # Use the serial console for both ConIn & ConOut > > gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B- > > 971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi();" > > gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B- > > 971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi()" > > > > gEfiMdePkgTokenSpaceGuid.PcdDebugPropertyMask|0x2E > > > > I can see the DEBUG() prints and well as the AsciiSPrint() on the > > console, but can't get any console output for the Print() directives. > > > > 2. I was looking at the 'StartDefaultBootOnTimeout' function > > implementation inside Bds.c > > (https://github.com/tianocore/edk2/blob/master/ArmPlatformPkg/Bds/Bds. > > c > > #L322) > > and cannot seem to understand which timer (the Metronome one or > > the Periodic one will be called here) will be called to implement a > > timer event. To me > > it seems the Periodic timer (TimerDxe rather than the TimerLib) > > would be involved here. > > > > Also, I think that since my gST->ConIn and gST->ConOut are both > > NULL, the 'StartDefaultBootOnTimeout' function will never get a gST- > > >ConIn->WaitForKey > > and hence the default boot should start after > > 'PcdPlatformBootTimeOut' interval. > > > > Is this understanding correct? > > > > Regards, > > Bhupesh > > > > > -----Original Message----- > > > From: Olivier Martin [mailto:olivier.mar...@arm.com] > > > Sent: Tuesday, December 03, 2013 4:48 PM > > > To: Sharma Bhupesh-B45370; 'Andrew Fish'; edk2- > > > de...@lists.sourceforge.net > > > Subject: RE: gST->ConOut is NULL and Timer issues (Was: RE: > > SerialPrint > > > not working in DxeServicesLib.c) > > > > > > Because you are using SerialDxe (see > > > 'VenHw(D3987D4B-971A-435F-8CAF-4967EB627241)'), ensure you have the > > > following drivers in your DSC and FDF files: > > > - MdeModulePkg/Universal/Console/ConPlatformDxe/ConPlatformDxe.inf > > > - MdeModulePkg/Universal/Console/ConSplitterDxe/ConSplitterDxe.inf > > > - MdeModulePkg/Universal/Console/TerminalDxe/TerminalDxe.inf > > > > > > ConSplitterDxe is the driver that will set gST->ConOut in this > > scenario. > > > > > > Olivier > > > > > > > > > > -----Original Message----- > > > > From: Bhupesh Sharma [mailto:bhupesh.sha...@freescale.com] > > > > Sent: 02 December 2013 11:09 > > > > To: Olivier Martin; 'Andrew Fish'; 'edk2- > > de...@lists.sourceforge.net' > > > > Subject: gST->ConOut is NULL and Timer issues (Was: RE: > > > > SerialPrint not working in DxeServicesLib.c) > > > > > > > > Hi, > > > > > > > > I managed to trace down the issues with my UEFI ported code for a > > > > Cortex-A9 MP core based SoC. > > > > > > > > I see two issues (after solving a few on the way) on which I > > > > cannot seem to make any headway. > > > > > > > > 1. gST->ConOut is NULL causing the Print routines inside > > > > StartDefaultBootOnTimeout > > > > > > > > > > (https://github.com/tianocore/edk2/blob/master/ArmPlatformPkg/Bds/Bds. > > > > c > > > > #L327), to not print > > > > anything on the UART console. > > > > > > > > - At first, I suspected this to be an issue with my .dsc file as > > I > > > > don't have a LCD available on my SoC > > > > and I had serial port as well as (a left over) LCD configured > > as > > > > SIMPLE TEXT protocols for ConOut. > > > > I have hence changed my .dsc to something like: > > > > > > > > # Use the serial console for both ConIn & ConOut > > > > > > gArmPlatformTokenSpaceGuid.PcdDefaultConOutPaths|L"VenHw(D3987D4B- > > > > 971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi();" > > > > > > > > gArmPlatformTokenSpaceGuid.PcdDefaultConInPaths|L"VenHw(D3987D4B- > > > > 971A-435F-8CAF-4967EB627241)/Uart(115200,8,N,1)/VenPcAnsi()" > > > > > > > > However, still I see that gST->ConOut is NULL (via the DS-5 > > source > > > > debugger). > > > > > > > > 2. Timer support in UEFI: > > > > > > > > - For every BoardPkg (e.g. ArmPlatformPkg/SP804, BeagleBoardPkg > > and > > > > Samsung etc), I can see that there are two Timer helper layers: > > > > > > > > # [1] Timer Dxe Driver: > > > > > > > > > https://github.com/tianocore/edk2/tree/master/ArmPlatformPkg/Driv > > > > ers/SP804TimerDxe > > > > > > > > # [2] Timer Lib: > > > > > > > > > https://github.com/tianocore/edk2/tree/master/ArmPlatformPkg/Libr > > > > ary/SP804TimerLib > > > > > > > > > > > > When I start to look at this code it seems that the UEFI code > > > > requires support for atleast 2 timers: Performance Timer (used in > > [1]) > > > > and another free SoC timer which is used to provide delays > > ([2]). > > > > > > > > Is this understanding correct? Does UEFI require atleast 2 > timers > > > to > > > > be supported by the SoC and are these timers used in parallel > > > > by the UEFI framework? > > > > > > > > Thanks for any pointers on the above two aspects. > > > > > > > > Regards, > > > > Bhupesh > > > > > > > > > > > > > -----Original Message----- > > > > > From: Sharma Bhupesh-B45370 > > > > > Sent: Tuesday, November 26, 2013 5:02 PM > > > > > To: Olivier Martin; 'Andrew Fish'; edk2- > > de...@lists.sourceforge.net > > > > > Cc: Kushwaha Prabhakar-B32579 > > > > > Subject: RE: SerialPrint not working in DxeServicesLib.c > > > > > > > > > > Hi Olivier, > > > > > > > > > > Thanks for your mail. > > > > > > > > > > I have a SerialPortLib which tries to configure Serial > > > > > controller specific to my board (so *no* 'SerialPortLib' > > > > > pointing to > 'MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf' > > > > > in my DSC). > > > > > > > > > > I am getting the UEFI firmware .. banner at the very start. > > > > > > > > > > I will now try to add some SerialPortWrite() before calling > > > > > GetSectionFromAnyFv(). > > > > > > > > > > Regards, > > > > > Bhupesh > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > From: Olivier Martin [mailto:olivier.mar...@arm.com] > > > > > > Sent: Tuesday, November 26, 2013 4:27 PM > > > > > > To: Sharma Bhupesh-B45370; 'Andrew Fish'; edk2- > > > > > > de...@lists.sourceforge.net > > > > > > Cc: Kushwaha Prabhakar-B32579 > > > > > > Subject: RE: SerialPrint not working in DxeServicesLib.c > > > > > > > > > > > > Sorry to not reply earlier, I was on holiday in the last two > > weeks. > > > > > > > > > > > > If you do not see any output from the serial, ensure your are > > > > > > using the appropriate 'SerialPortLib'. > > > > > > Check in your DSC file, there is no 'SerialPortLib' pointing > > > > > > to > > > > > > > > 'MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNull.inf'. > > > > > > Example: > > > > > > > > > > > > [LibraryClasses.common] > > > > > > (...) > > > > > > > > > > > > > > > > > > SerialPortLib|MdePkg/Library/BaseSerialPortLibNull/BaseSerialPortLibNu > > > > > > SerialPortLib|ll > > > > > > SerialPortLib|.inf > > > > > > (...) > > > > > > > > > > > > SerialPortLib should use the implementation for your Serial > > > > controller. > > > > > > > > > > > > Try also to add some SerialPortWrite() before calling > > > > > > GetSectionFromAnyFv(). > > > > > > I would not be surprised if the crash happens much earlier > > > > > > than the DXE phase. > > > > > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > From: Bhupesh Sharma [mailto:bhupesh.sha...@freescale.com] > > > > > > > Sent: 20 November 2013 11:50 > > > > > > > To: 'Andrew Fish'; 'edk2-devel@lists.sourceforge.net'; > > Olivier > > > > > > > Martin > > > > > > > Cc: Prabhakar Kushwaha > > > > > > > Subject: RE: SerialPrint not working in DxeServicesLib.c > > > > > > > > > > > > > > I don't know why but I didn't get any mail from the mail > > > > > > > list > > > > server > > > > > > > for my original mail below, though I can see same in the > > > > > > > mail > > > > list > > > > > > > archives. > > > > > > > > > > > > > > Adding Andrew.. > > > > > > > > > > > > > > Can you guys please help me with the issue mentioned below. > > > > > > > > > > > > > > Regards, > > > > > > > Bhupesh > > > > > > > > > > > > > > > -----Original Message----- > > > > > > > > From: Sharma Bhupesh-B45370 > > > > > > > > Sent: Tuesday, November 19, 2013 4:25 PM > > > > > > > > To: 'edk2-devel@lists.sourceforge.net'; 'Olivier Martin' > > > > > > > > Cc: 'boot-architect...@lists.linaro.org'; Kushwaha > > > > > > > > Prabhakar-B32579 > > > > > > > > Subject: SerialPrint not working in DxeServicesLib.c > > > > > > > > > > > > > > > > Hi List, > > > > > > > > > > > > > > > > I am experiencing a Data Abort inside function > > > > > 'GetSectionFromAnyFv' > > > > > > > in > > > > > > > > file 'DxeServicesLib.c' > > > > > > > > on my ARMv7 UEFI platform. > > > > > > > > > > > > > > > > To debug the same I added some print messages like: > > > > > > > > > > > > > > > > /* Added for debugging */ > > > > > > > > CHAR8 Buffer1[100]; > > > > > > > > UINTN CharCount; > > > > > > > > CharCount = AsciiSPrint (Buffer1,sizeof > > > > > > > > (Buffer1),"Inside > > > > > > > Func\n\r"); > > > > > > > > SerialPortWrite ((UINT8 *) Buffer1, CharCount); > > > > > > > > > > > > > > > > > > > > > > > > And also something like: > > > > > > > > SerialPrint ("Inside Func\n\r"); > > > > > > > > > > > > > > > > I have included: > > > > > > > > #include <Library/PrintLib.h> #include > > > > > > > > <Library/SerialPortLib.h> > > > > > > > > > > > > > > > > and defined: > > > > > > > > > > > > > > > > #define SerialPrint(txt) SerialPortWrite ((UINT8*)(txt), > > > > > > > > AsciiStrLen(txt)+1); > > > > > > > > > > > > > > > > I still cannot see any debug prints on the UART (placed > > right > > > > > > > > after > > > > > > > the > > > > > > > > entry point of 'GetSectionFromAnyFv' function). > > > > > > > > Debugger (DS-5) suggests that the crash is inside > > > > > > > 'GetSectionFromAnyFv' > > > > > > > > itself. > > > > > > > > > > > > > > > > I get the UEFI firmware <version xx built at xx on xx) and > > > > > > > > Data Abort Exception PC at xx prints on the console, but > > > > > > > > no prints > > > > from > > > > > > > > 'DxeServicesLib.c' > > > > > > > > > > > > > > > > Any pointers to what I may be missing here. > > > > > > > > > > > > > > > > Regards, > > > > > > > > Bhupesh > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > > ------------------------------------------------------------------------------ Sponsored by Intel(R) XDK Develop, test and display web and hybrid apps with a single code base. Download it for free now! http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel