⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shell.c

📁 mpc5200 for bsp,it is have passed built.
💻 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 + -