?? shell.c
字號:
#include "vxWorks.h"
#include "usrConfig.h" /* general configuration header */
#include "pingLib.h"
#include "taskLib.h"
#include "usrLib.h"
#include "config.h"
LOCAL int argc;
LOCAL char *argv[10];
void sysInfo();
void sysIdeInfo();
void taskLed()
{
*(volatile UINT32 *)(MBAR_VALUE+MBAR_GPIO_STD+GPIO_SEN_OFF) |= 0x10000000; /* as GPIO */
*(volatile UINT32 *)(MBAR_VALUE+MBAR_GPIO_STD+GPIO_SDD_OFF) |= 0x10000000; /* output */
*(volatile UINT32 *)(MBAR_VALUE+MBAR_GPIO_STD+GPIO_SDO_OFF) &= ~0x10000000; /* clear, led on */
while(1)
{
taskDelay(sysClkRateGet()/2);
*(volatile UINT32 *)(MBAR_VALUE+MBAR_GPIO_STD+GPIO_SDO_OFF) ^= 0x10000000; /* on/off */
}
}
static int ascHexToInt(const char *ascHex)
{
int n;
char sBuf[20];
int ii, iRet;
n = strlen(ascHex);
if(n > 10) return(ERROR);
if((ascHex[0] != '0') ||
((ascHex[1] != 'x') && (ascHex[1] != 'X')))
return(ERROR);
strcpy(sBuf, &ascHex[2]);
n = strlen(sBuf);
iRet = 0;
for(ii=0; ii<n; ii++)
{
iRet <<= 4;
if((sBuf[ii] >= 'A') && (sBuf[ii] <='Z'))
{
sBuf[ii] += ('a' - 'A');
}
if((sBuf[ii] >= 'a') && (sBuf[ii] <= 'f'))
{
iRet += sBuf[ii] - 'a' + 10;
}
else if((sBuf[ii] >= '0') && (sBuf[ii] <= '9'))
iRet += sBuf[ii] - '0';
else return(ERROR);
}
return(iRet);
}
LOCAL void parseCmd(char *pStr, int len)
{
int j;
argc = 0;
for(j=0;j<len;j++)
{
for(; isspace((int)pStr[j]); j++);
if(j == len) return;
argv[argc++] = pStr + j;
for(; !isspace((int)pStr[j]); j++)
if(j == len) return;
pStr[j] = 0;
}
}
void usrShell (void)
{
char string [80];
taskSpawn("tLed",200,0,4000,(FUNCPTR)taskLed, 0,0,0,0,0,0,0,0,0,0);
FOREVER
{
printf ("[ROOT] $: ");
fioRdString (STD_IN, string, sizeof (string));
parseCmd(string,strlen(string));
if(argc == 0) continue;
if (strcmp (argv[0], "mem") == 0)
{
if(argc == 2) memShow(atoi(argv[1]));
else memShow (1);
}
else if (strcmp(argv[0],"sys") == 0)
{
sysInfo();
}
else if (strcmp(argv[0],"reboot") == 0)
{
reboot(2);
}
else if(strcmp(argv[0], "task") == 0)
{
if(argc == 3)
{
taskShow(taskNameToId(argv[1]),atoi(argv[2]));
}
else taskShow(1,2);
}
else if(strcmp(argv[0], "if") == 0)
{
if(argc == 2) ifShow(argv[1]); /* display the attached network interfaces */
else printf("Usage: if ifName.\n");
}
else if(strcmp(argv[0], "ping") == 0)
{
if(argc == 2) ping(argv[1],3,0);
else ping("127.0.0.1",5,0);
}
else if(strcmp(argv[0],"d") == 0)
{
int i, addr;
if(argc != 2)
{
printf("Usage: d (0x)offset \n");
continue;
}
addr = ascHexToInt(argv[1]);
if (addr == ERROR)
{
printf("Error param.\n");
continue;
}
printf("0x%x:", addr);
for(i=0; i<0x10; i++)
printf(" %x", *(char *)(addr+i));
}
else if(strcmp(argv[0], "devs") == 0)
{
iosDevShow();
}
else if (strcmp (argv[0], "pci") == 0)
{
if(argc == 2) pciDeviceShow(atoi(argv[1]));
else pciDeviceShow (0);
}
else if (strcmp (argv[0], "ide") == 0)
{
sysIdeInfo();
}
else if (strcmp (argv[0], "cd") == 0)
{
if(argc == 2) cd(argv[1]);
else pwd();
}
else if (strcmp (argv[0], "pwd") == 0)
{
pwd();
}
else if ((strcmp (argv[0], "ls") == 0) || (strcmp (argv[0], "dir") == 0))
{
if(argc == 2) ll(argv[1]);
else ll(".");
}
else if(strcmp(argv[0], "bootline") == 0)
{
/* if(sysNvRamGet (BOOT_LINE_ADRS, BOOT_LINE_SIZE, 0) == ERROR)
{
printf("error.\n");
}
else
*/ printf("bootline=%s\n", (char *)BOOT_LINE_ADRS);
}
else
{
printf("Bad Command.\n");
}
}
}
#include "wdb\wdbLibP.h"
void sysInfo()
{
#if (WDB_COMM_TYPE == WDB_COMM_NETWORK)
#define WDB_COMM_TYPE_STR "WDB_COMM_NETWORK"
#endif /* WDB_COMM_TYPE == WDB_COMM_NETWORK */
#if (WDB_COMM_TYPE == WDB_COMM_SERIAL)
#define WDB_COMM_TYPE_STR "WDB_COMM_SERIAL"
#endif /* WDB_COMM_TYPE == WDB_COMM_SERIAL */
#if (WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2)
#define WDB_COMM_TYPE_STR "WDB_COMM_TYCODRV_5_2"
#endif /* WDB_COMM_TYPE == WDB_COMM_TYCODRV_5_2 */
#if (WDB_COMM_TYPE == WDB_COMM_NETROM)
#define WDB_COMM_TYPE_STR "WDB_COMM_NETROM"
#endif /* WDB_COMM_TYPE == WDB_COMM_NETROM */
#if (WDB_COMM_TYPE == WDB_COMM_VTMD)
#define WDB_COMM_TYPE_STR "WDB_COMM_VTMD"
#endif /* WDB_COMM_TYPE == WDB_COMM_VTMD */
#if (WDB_COMM_TYPE == WDB_COMM_END)
#define WDB_COMM_TYPE_STR "WDB_COMM_END"
#endif /* WDB_COMM_TYPE == WDB_COMM_END */
#if (WDB_COMM_TYPE == WDB_COMM_CUSTOM)
#define WDB_COMM_TYPE_STR "WDB_COMM_CUSTOM"
#endif /* WDB_COMM_TYPE == WDB_COMM_CUSTOM */
#if (WDB_COMM_TYPE == WDB_COMM_PIPE)
#define WDB_COMM_TYPE_STR "WDB_COMM_PIPE"
#endif /* WDB_COMM_TYPE == WDB_COMM_PIPE */
#ifndef WDB_COMM_TYPE_STR
#define WDB_COMM_TYPE_STR "Unknown"
#endif /* WDB_COMM_TYPE_STR */
printf ("%s (v%s) for MPC5200B\n", runtimeName, runtimeVersion);
printf ("Kernel: %s\n", kernelVersion ());
printf ("BSP: " BSP_VERSION BSP_REV "\n");
printf ("Memory Size: 0x%x\n", (UINT)(sysMemTop () - (char *)LOCAL_MEM_LOCAL_ADRS));
/* printf ("Made on %s.\n", creationDate); */
#if defined(INCLUDE_WDB)
printf ("WDB Comm Type: %s\n", WDB_COMM_TYPE_STR);
printf ("WDB: %s\n", ((wdbRunsExternal () || wdbRunsTasking ()) ? "Ready" : "Agent configuration failed"));
#endif
/*
iosDevShow();
pciDeviceShow(0);
*/
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -