Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

Version 1 Next »

Unable to render {include} The included page could not be found.
Unable to render {include} The included page could not be found.

Using the Shell Commands

To use shell commands, four files, in addition to the generic file system files, must be included in the build:

fs_shell.c

fs_shell.h

shell.c (located in \Micrium\Software\uC-Shell\Source)

shell.h (located in \Micrium\Software\uC-Shell\Source)

The file fs_shell.h and shell.h must also be #included in any application or header files initialize µC/Shell or handle shell commands. The shell command configuration file (fs_shell_cfg.h) should be copied to your application directory and modified. The following directories must be on the project include path:

\Micrium\Software\uC-FS\Cmd

\Micrium\Software\uC-Shell\Source

µC/Shell with the µC/FS shell commands is initialized in Listing F-1. The file system initialization (FS_Init()) function should have previously been called.

 

CPU_BOOLEAN App_ShellInit (void)

{

CPU_BOOLEAN ok;

ok = Shell_Init();

if (ok == DEF_FAIL) {

return (DEF_FAIL);

}

ok = FSShell_Init();

if (ok == DEF_FAIL) {

return (DEF_FAIL;

}

return (DEF_OK);

}

    1. Initializing µC/Shell

It’s assumed that the application will create a task to receive input from a terminal; this task should be written as shown in Listing F-2.

 

void App_ShellTask (void *p_arg)

{

CPU_CHAR cmd_line[MAX_CMD_LEN];

SHELL_ERR err;

SHELL_CMD_PARAM cmd_param;

CPU_CHAR cwd_path[FS_CFG_FULL_ NAME_LEN + 1u];

 

/* Init cmd param (see Note #1). */

Str_Copy(&cwd_path[0], (CPU_CHAR *)"\\");

cmd_param.pcur_working_dir = (void *)cwd_path[0];

cmd_param.pout_opt = (void *)0;

 

while (DEF_TRUE) {

App_ShellIn(cmd_line, MAX_CMD_LEN); /* Rd cmd (see Note #2). */

/* Exec cmd (see Note #3). */

Shell_Exec(cmd_line, App_ShellOut, &cmd_param, &err);

switch (err) {

case SHELL_ERR_CMD_NOT_FOUND:

case SHELL_ERR_CMD_SEARCH:

case SHELL_ERR_ARG_TBL_FULL:

App_ShellOut("Command not found\r\n", 19, cmd_param.pout_opt);

break;

default:

break;

}

}

}

 

/*

**************************************************************************************

* App_ShellIn()

******************************************************************************1*******

*/

CPU_INT16S App_ShellIn (CPU_CHAR *pbuf,

CPU_INT16U buf_len)

{

/* $$$$ Store line from terminal/command line into ‘pbuf’; return length of line. */

}

/*

**************************************************************************************

* App_ShellOut()

******************************************************************************1*******

*/

CPU_INT16S App_ShellOut (CPU_CHAR *pbuf,

CPU_INT16U buf_len,

void *popt)

{

/* $$$$ Output ‘pbuf’ data on terminal/command line; return nbr bytes tx’d. */

}

 

    1. Executing shell commands & handling shell output
      1. The SHELL_CMD_PARAM structure that will be passed to Shell_Exec() must be initialized. The pcur_working_dir member must be assigned a pointer to a string of at least FS_SHELL_CFG_MAX_PATH_LEN characters. This string must have been initialized to the default working directory path; if the root directory, “\”.
      2. The next command, ending with a newline, should be read from the command line.
      3. The received command should be executed with Shell_Exec(). If the command is a valid command, the appropriate command function will be called. For example, the command “fs_ls” will result in FSShell_ls() in fs_shell.c being called. FSShell_ls() will then print the entries in the working directory to the command line with the output function App_ShellOut(), passed as the second argument of Shell_Exec().
  • No labels