From 1f87f492b1b3378e412ab826c7c21bc604a8b9df Mon Sep 17 00:00:00 2001 From: Sarat Chand Savitala Date: Mon, 29 Jun 2015 17:41:26 +0530 Subject: [PATCH] sw_apps:zynqmp_fsbl: Updated bin file naming scheme for SD For SD and eMMC, BIN filenames now follow convention BOOTXXXX.BIN. FSBL now updated as per this change. Signed-off-by: Sarat Chand Savitala --- lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc.c | 62 +++++++++++------------- 1 file changed, 29 insertions(+), 33 deletions(-) diff --git a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc.c b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc.c index 555db686..bb953456 100644 --- a/lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc.c +++ b/lib/sw_apps/zynqmp_fsbl/src/xfsbl_misc.c @@ -55,6 +55,8 @@ #include "xil_exception.h" /************************** Constant Definitions *****************************/ +#define XFSBL_BASE_FILE_NAME_LEN 8 +#define XFSBL_NUM_DIGITS_IN_FILE_NAME 4 /**************************** Type Definitions *******************************/ @@ -90,8 +92,6 @@ static void XFsbl_FiqHandler (void); extern void XFsbl_ErrorLockDown(u32 ErrorStatus); /************************** Variable Definitions *****************************/ -static char ItoaBuf[20]; -static const char *ItoaStringPtr = "0123456789abcdef"; /****************************************************************************/ /** @@ -132,32 +132,6 @@ void XFsbl_PrintArray (u32 DebugType, const u8 Buf[], u32 Len, const char *Str) return; } -/*****************************************************************************/ -/** - * - * - * - * @param None - * - * @return None - * - ******************************************************************************/ -static char * XFsbl_Itoa(u32 Val, u32 Base) -{ - u32 Count = 0; - - ItoaBuf[17] = '\0'; - ItoaBuf[18] = '\0'; - - for(Count=16U; ((0U < Val) && (0U < Count)) ; Count--) - { - ItoaBuf[Count] = ItoaStringPtr[Val % Base]; - Val /= Base; - } - - return (char *)(&ItoaBuf[Count+1]); -} - /*****************************************************************************/ /** @@ -327,13 +301,35 @@ u32 XFsbl_Htonl(u32 Value1) void XFsbl_MakeSdFileName(char *XFsbl_SdEmmcFileName, u32 MultibootReg) { - XFsbl_MemSet((void *)XFsbl_SdEmmcFileName, '\0', 32); - (void)XFsbl_Strcpy((char *)XFsbl_SdEmmcFileName, "BOOT"); + u32 Index; + u32 Value; + u32 MultiBootNum = MultibootReg; - (void)XFsbl_Strcat((char *)XFsbl_SdEmmcFileName, - (char*)XFsbl_Itoa(MultibootReg, 10)); + if (0x0U == MultiBootNum) + { + /* SD file name is BOOT.BIN when Multiboot register value is 0 */ + (void)XFsbl_Strcpy((char *)XFsbl_SdEmmcFileName, "BOOT.BIN"); + } + else + { + /* set default SD file name as BOOT0000.BIN */ + (void)XFsbl_Strcpy((char *)XFsbl_SdEmmcFileName, "BOOT0000.BIN"); + + /* Update file name (to BOOTXXXX.BIN) based on Multiboot register value */ + for(Index = XFSBL_BASE_FILE_NAME_LEN - 1; + Index >= XFSBL_BASE_FILE_NAME_LEN - XFSBL_NUM_DIGITS_IN_FILE_NAME; + Index--) + { + Value = MultiBootNum % 10; + MultiBootNum = MultiBootNum / 10; + XFsbl_SdEmmcFileName[Index] += (s8)Value; + if (MultiBootNum == 0) + { + break; + } + } + } - (void)XFsbl_Strcat((char *)XFsbl_SdEmmcFileName, ".BIN"); XFsbl_Printf(DEBUG_INFO, "File name is %s\r\n",XFsbl_SdEmmcFileName); }