ArmPlatformPkg: Use Serial print function to print out non debugging information

Exception errors and early print statements must be also print out in Release builds.
Replace the DEBUG() macro by the SerialPortWrite() function.



git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@11474 6f19259b-4bc3-4df7-8a09-765794883524
This commit is contained in:
oliviermartin 2011-03-31 12:09:31 +00:00
parent e100fa8c1e
commit 2637d1ef35
6 changed files with 57 additions and 28 deletions

View File

@ -18,6 +18,9 @@
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
#include <Drivers/PL341Dmc.h>
#include <Library/SerialPortLib.h>
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
// DDR2 timings
struct pl341_dmc_config ddr_timings = {

View File

@ -113,35 +113,44 @@ SecTemporaryRamSupport (
return EFI_SUCCESS;
}
VOID PeiCommonExceptionEntry(UINT32 Entry, UINT32 LR) {
VOID
PeiCommonExceptionEntry (
IN UINT32 Entry,
IN UINT32 LR
)
{
CHAR8 Buffer[100];
UINTN CharCount;
switch (Entry) {
case 0:
DEBUG((EFI_D_ERROR,"Reset Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reset Exception at 0x%X\n\r",LR);
break;
case 1:
DEBUG((EFI_D_ERROR,"Undefined Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Undefined Exception at 0x%X\n\r",LR);
break;
case 2:
DEBUG((EFI_D_ERROR,"SWI Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"SWI Exception at 0x%X\n\r",LR);
break;
case 3:
DEBUG((EFI_D_ERROR,"PrefetchAbort Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"PrefetchAbort Exception at 0x%X\n\r",LR);
break;
case 4:
DEBUG((EFI_D_ERROR,"DataAbort Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"DataAbort Exception at 0x%X\n\r",LR);
break;
case 5:
DEBUG((EFI_D_ERROR,"Reserved Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reserved Exception at 0x%X\n\r",LR);
break;
case 6:
DEBUG((EFI_D_ERROR,"IRQ Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"IRQ Exception at 0x%X\n\r",LR);
break;
case 7:
DEBUG((EFI_D_ERROR,"FIQ Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"FIQ Exception at 0x%X\n\r",LR);
break;
default:
DEBUG((EFI_D_ERROR,"Unknown Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Unknown Exception at 0x%X\n\r",LR);
break;
}
SerialPortWrite ((UINT8 *) Buffer, CharCount);
while(1);
}

View File

@ -45,6 +45,7 @@
ArmPlatformLib
ArmMPCoreMailBoxLib
PL390GicNonSecLib
SerialPortLib
[Ppis]
gEfiTemporaryRamSupportPpiGuid

View File

@ -43,6 +43,7 @@
IoLib
ArmLib
ArmPlatformLib
SerialPortLib
[Ppis]
gEfiTemporaryRamSupportPpiGuid

View File

@ -15,6 +15,7 @@
#include <Library/DebugLib.h>
#include <Library/PcdLib.h>
#include <Library/PrintLib.h>
#include <Library/BaseLib.h>
#include <Library/BaseMemoryLib.h>
#include <Library/ArmLib.h>
@ -24,6 +25,8 @@
#include <Library/SerialPortLib.h>
#include <Library/ArmPlatformLib.h>
#define SerialPrint(txt) SerialPortWrite (txt, AsciiStrLen(txt)+1);
extern VOID *monitor_vector_table;
VOID ArmSetupGicNonSecure (
@ -58,6 +61,9 @@ CEntryPoint (
IN UINTN CoreId
)
{
CHAR8 Buffer[100];
UINTN CharCount;
// Primary CPU clears out the SCU tag RAMs, secondaries wait
if (CoreId == 0) {
if (FixedPcdGet32(PcdMPCoreSupport)) {
@ -67,8 +73,10 @@ CEntryPoint (
// SEC phase needs to run library constructors by hand. This assumes we are linked against the SerialLib
// In non SEC modules the init call is in autogenerated code.
SerialPortInitialize ();
// Start talking
DEBUG ((EFI_D_ERROR, "UART Enabled\n"));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"UEFI firmware built at %a on %a\n\r",__TIME__, __DATE__);
SerialPortWrite ((UINT8 *) Buffer, CharCount);
// Now we've got UART, make the check:
// - The Vector table must be 32-byte aligned
@ -172,7 +180,7 @@ CEntryPoint (
ArmWriteScr(SCR_NS | SCR_FW | SCR_AW);
} else {
if(0 == CoreId){
DEBUG ((EFI_D_ERROR, "Trust Zone Configuration is disabled\n"));
SerialPrint ("Trust Zone Configuration is disabled\n\r");
}
//Trustzone is not enabled, just enable the Distributor and CPU interface
@ -189,11 +197,12 @@ CEntryPoint (
if (CoreId == 0) {
UINTN* StartAddress = (UINTN*)PcdGet32(PcdEmbeddedFdBaseAddress);
DEBUG ((EFI_D_ERROR, "Waiting for firmware at 0x%08X ...\n",StartAddress));
// Patch the DRAM to make an infinite loop at the start address
*StartAddress = 0xEAFFFFFE; // opcode for while(1)
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Waiting for firmware at 0x%08X ...\n\r",StartAddress);
SerialPortWrite ((UINT8 *) Buffer, CharCount);
// To enter into Non Secure state, we need to make a return from exception
return_from_exception(PcdGet32(PcdEmbeddedFdBaseAddress));
} else {
@ -208,10 +217,6 @@ CEntryPoint (
return_from_exception((UINTN)NonSecureWaitForFirmware);
}
} else {
if (CoreId == 0) {
DEBUG ((EFI_D_ERROR, "Standalone Firmware\n"));
}
// To enter into Non Secure state, we need to make a return from exception
return_from_exception(PcdGet32(PcdEmbeddedFdBaseAddress));
}
@ -241,35 +246,44 @@ VOID NonSecureWaitForFirmware() {
ASSERT (FALSE);
}
VOID SecCommonExceptionEntry(UINT32 Entry, UINT32 LR) {
VOID
SecCommonExceptionEntry (
IN UINT32 Entry,
IN UINT32 LR
)
{
CHAR8 Buffer[100];
UINTN CharCount;
switch (Entry) {
case 0:
DEBUG((EFI_D_ERROR,"Reset Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reset Exception at 0x%X\n\r",LR);
break;
case 1:
DEBUG((EFI_D_ERROR,"Undefined Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Undefined Exception at 0x%X\n\r",LR);
break;
case 2:
DEBUG((EFI_D_ERROR,"SWI Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"SWI Exception at 0x%X\n\r",LR);
break;
case 3:
DEBUG((EFI_D_ERROR,"PrefetchAbort Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"PrefetchAbort Exception at 0x%X\n\r",LR);
break;
case 4:
DEBUG((EFI_D_ERROR,"DataAbort Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"DataAbort Exception at 0x%X\n\r",LR);
break;
case 5:
DEBUG((EFI_D_ERROR,"Reserved Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Reserved Exception at 0x%X\n\r",LR);
break;
case 6:
DEBUG((EFI_D_ERROR,"IRQ Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"IRQ Exception at 0x%X\n\r",LR);
break;
case 7:
DEBUG((EFI_D_ERROR,"FIQ Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"FIQ Exception at 0x%X\n\r",LR);
break;
default:
DEBUG((EFI_D_ERROR,"Unknown Exception at 0x%X\n",LR));
CharCount = AsciiSPrint (Buffer,sizeof (Buffer),"Unknown Exception at 0x%X\n\r",LR);
break;
}
SerialPortWrite ((UINT8 *) Buffer, CharCount);
while(1);
}

View File

@ -44,6 +44,7 @@
ArmPlatformLib
L2X0CacheLib
PL390GicSecLib
SerialPortLib
[FeaturePcd]
gArmPlatformTokenSpaceGuid.PcdStandalone