📄 menu.c
字号:
KITLOutputDebugString ( "9) MAC address: %x-%x-%x-%x-%x-%x\r\n",
g_BootCFG.mac[0] & 0x00FF, g_BootCFG.mac[0] >> 8,
g_BootCFG.mac[1] & 0x00FF, g_BootCFG.mac[1] >> 8,
g_BootCFG.mac[2] & 0x00FF, g_BootCFG.mac[2] >> 8);
KITLOutputDebugString ( "10) Format OS NAND region.\r\n");
KITLOutputDebugString ( "11) Format ALL NAND regions.\r\n");
KITLOutputDebugString ( "S) Save configuration\r\n");
KITLOutputDebugString ( "D) Download image now\r\n");
KITLOutputDebugString ( "L) Launch existing flash resident image now\r\n");
KITLOutputDebugString ( "\r\n\r\nEnter your selection: ");
// Read user selection
Selection = 0;
while (! ( ( (Selection >= '0') && (Selection <= '11') ) ||
( (Selection == 'D') || (Selection == 'd') ) ||
( (Selection == 'L') || (Selection == 'l') ) ||
( (Selection == 'S') || (Selection == 's') ) ))
{
Selection = OEMReadDebugByte();
}
KITLOutputDebugString ( "%c\r\n", Selection);
// Process user selection
switch (Selection)
{
case '0':
SetUARTChannel(&g_BootCFG);
bCFGChanged=TRUE;
break;
case '1':
switch(g_BootCFG.BaudRate)
{
case SBOOT_BAUDRATE_115200:
g_BootCFG.BaudRate = SBOOT_BAUDRATE_9600;
break;
case SBOOT_BAUDRATE_9600:
g_BootCFG.BaudRate = SBOOT_BAUDRATE_19200;
break;
case SBOOT_BAUDRATE_19200:
g_BootCFG.BaudRate = SBOOT_BAUDRATE_38400;
break;
case SBOOT_BAUDRATE_38400:
g_BootCFG.BaudRate = SBOOT_BAUDRATE_57600;
break;
default:
g_BootCFG.BaudRate = SBOOT_BAUDRATE_115200;
break;
}
bCFGChanged=TRUE;
break;
case '2':
switch(g_BootCFG.Parity)
{
case SBOOT_PARITY_NONE:
g_BootCFG.Parity = SBOOT_PARITY_EVEN;
break;
case SBOOT_PARITY_EVEN:
g_BootCFG.Parity = SBOOT_PARITY_ODD;
break;
default:
g_BootCFG.Parity = SBOOT_PARITY_NONE;
break;
}
bCFGChanged=TRUE;
break;
case '3':
switch(g_BootCFG.DataBits)
{
case SBOOT_DATABITS_8:
g_BootCFG.DataBits = SBOOT_DATABITS_7;
break;
default:
g_BootCFG.DataBits = SBOOT_DATABITS_8;
break;
}
bCFGChanged=TRUE;
break;
case '4':
switch(g_BootCFG.StopBit)
{
case SBOOT_STOPBITS_1:
g_BootCFG.StopBit = SBOOT_STOPBITS_2;
break;
default:
g_BootCFG.StopBit = SBOOT_STOPBITS_1;
break;
}
bCFGChanged=TRUE;
break;
case '5':
switch(g_BootCFG.FlowCtrl)
{
case SBOOT_FLOWCTRL_OFF:
g_BootCFG.FlowCtrl = SBOOT_FLOWCTRL_ON;
break;
default:
g_BootCFG.FlowCtrl = SBOOT_FLOWCTRL_OFF;
break;
}
bCFGChanged=TRUE;
break;
case '6':
SetDelay(&g_BootCFG);
bCFGChanged=TRUE;
break;
case '7':
switch(g_BootCFG.autoDownloadImage)
{
case BOOT_CFG_AUTODOWNLOAD_NONE:
g_BootCFG.autoDownloadImage = BOOT_CFG_AUTODOWNLOAD_NK_NOR;
break;
case BOOT_CFG_AUTODOWNLOAD_NK_NOR:
g_BootCFG.autoDownloadImage = BOOT_CFG_AUTODOWNLOAD_NK_NAND;
break;
case BOOT_CFG_AUTODOWNLOAD_NK_NAND:
g_BootCFG.autoDownloadImage = BOOT_CFG_AUTODOWNLOAD_IPL_NAND;
break;
default:
g_BootCFG.autoDownloadImage = BOOT_CFG_AUTODOWNLOAD_NONE;
break;
}
bCFGChanged=TRUE;
break;
case '8':
ResetDefaultBootCFG(&g_BootCFG);
break;
case '9':
SetMAC(&g_BootCFG);
bCFGChanged=TRUE;
break;
case '10':
KITLOutputDebugString("\r\nWARNING: Format of OS NAND region requested.\r\n");
KITLOutputDebugString("Do you want to continue (y/n)? ");
do {
Selection = tolower(OEMReadDebugByte());
} while ((Selection != 'y') && (Selection != 'n'));
KITLOutputDebugString("\r\n");
if (Selection == 'y')
{
NANDFormatNK();
}
break;
case '11':
KITLOutputDebugString("\r\nWARNING: Format of all NAND regions requested.\r\n");
KITLOutputDebugString("Boot loader and boot configuration regions will be erased!!!\r\n");
KITLOutputDebugString("Do you want to continue (y/n)? ");
do {
Selection = tolower(OEMReadDebugByte());
} while ((Selection != 'y') && (Selection != 'n'));
KITLOutputDebugString("\r\n");
if (Selection == 'y')
{
NANDFormatAll();
}
break;
case 'D':
case 'd':
g_DownloadImage = TRUE;
goto exitMenu;
break;
case 'L':
case 'l':
if (g_BootCFG.autoDownloadImage == BOOT_CFG_AUTODOWNLOAD_NONE)
{
KITLOutputDebugString("\r\nWARNING: You must select NOR/NAND/SD-MMC using Autoboot menu option.\r\n");
}
else
{
g_DownloadImage = FALSE;
goto exitMenu;
}
break;
case 'S':
case 's':
StoreBootCFG(&g_BootCFG);
bCFGChanged=FALSE;
break;
default:
break;
}
}
}
}
exitMenu:
if (bCFGChanged == TRUE)
{
StoreBootCFG(&g_BootCFG);
}
// EEPROM on ADS does not have proper contents to allow CS8900 to automatically
// read MAC address during initialization. We must provide MAC from the Boot
// configuration parameters previously loaded.
memcpy(g_pBSPArgs->kitl.mac, g_BootCFG.mac, 6);
return(TRUE);
}
//------------------------------------------------------------------------------
//
// Function: SetUARTChannel
//
// Allows user to select the respective UART channel for serial boot.
//
// Parameters:
// eBootCFG
// [out] Points to bootloader configuration that will be updated with
// the boot delay entered by the user.
//
// Returns:
// None.
//
//------------------------------------------------------------------------------
static void SetUARTChannel(BOOT_CFG *pBootCFG)
{
char szCount[16];
WORD cwNumChars = 0;
UINT16 InChar = 0;
INT32 dwCharRead = OEM_DEBUG_READ_NODATA;
KITLOutputDebugString ( "\r\nEnter UART channel [1-5]: ");
while (!((InChar == 0x0d) || (InChar == 0x0a)))
{
dwCharRead = OEMReadDebugByte();
if (dwCharRead != OEM_DEBUG_COM_ERROR && dwCharRead != OEM_DEBUG_READ_NODATA)
{
InChar = (UINT16)dwCharRead;
// If it's a number or a period, add it to the string
if ((InChar >= '0' && InChar <= '9'))
{
if (cwNumChars < 16)
{
szCount[cwNumChars++] = (char)InChar;
OEMWriteDebugByte((BYTE)InChar);
}
}
// If it's a backspace, back up
else if (InChar == 8)
{
if (cwNumChars > 0)
{
cwNumChars--;
OEMWriteDebugByte((BYTE)InChar);
}
}
}
}
// If it's a carriage return with an empty string, don't change anything.
if (cwNumChars)
{
szCount[cwNumChars] = '\0';
pBootCFG->Channel = atoi(szCount);
if ((pBootCFG->Channel < 1) || (pBootCFG->Channel > 5))
{
pBootCFG->Channel = DEFAULT_SBOOT_CHANNEL;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -