summaryrefslogtreecommitdiffstats
path: root/micromonitor/umon/test.c
diff options
context:
space:
mode:
authorJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-06 23:23:20 +0000
committerJoel Sherrill <joel.sherrill@OARcorp.com>2009-08-06 23:23:20 +0000
commit9a0cbfdd9e2af19870a9c80872c0134623cfcbca (patch)
tree9e02a3a12f446a68d0f348590871c3df47add4e7 /micromonitor/umon/test.c
parent2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com> (diff)
downloadrtems-examples-9a0cbfdd9e2af19870a9c80872c0134623cfcbca.tar.bz2
2009-08-06 Joel Sherrill <joel.sherrill@oarcorp.com>
* ChangeLog, README, diagnostics/README, diagnostics/cfg.h, diagnostics/cli.h, diagnostics/cstart.c, diagnostics/main.c, diagnostics/makefile, diagnostics/monlib.c, diagnostics/monlib.h, diagnostics/tfs.h, umon/Makefile, umon/README, umon/test.c: New files.
Diffstat (limited to '')
-rw-r--r--micromonitor/umon/test.c161
1 files changed, 161 insertions, 0 deletions
diff --git a/micromonitor/umon/test.c b/micromonitor/umon/test.c
new file mode 100644
index 0000000..4ca13d8
--- /dev/null
+++ b/micromonitor/umon/test.c
@@ -0,0 +1,161 @@
+/*
+ * Simple test program -- simplified version of sample test hello.
+ *
+ * $Id$
+ */
+
+#include <bsp.h>
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include <assert.h>
+
+#include <rtems/umon.h>
+
+/* this code is lifted from the umon demo application */
+int umon_demo(int argc, char **argv)
+{
+ int i, tfd;
+ char line[80], *ab, *filename;
+
+ /* If argument count is greater than one, then dump out the
+ * set of CLI arguments...
+ */
+ if (argc > 1) {
+ mon_printf("Argument list...\n");
+ for(i=0;i<argc;i++) {
+ mon_printf(" arg[%d]: %s\n",i,argv[i]);
+ if (strcmp(argv[i],"match") == 0)
+ mon_printf("got a match!\n");
+ }
+ }
+
+ /* Using the content of the shell variable APPRAMBASE, dump the
+ * memory starting at that location...
+ */
+ ab = mon_getenv("APPRAMBASE");
+ if (ab) {
+ char *addr = (char *)strtoul(ab,0,0);
+
+ mon_printf("Dumping memory at 0x%lx...\n",addr);
+ mon_printmem(addr,128,1);
+ }
+
+ filename = "csbboot";
+
+ /* If the 'monrc' file exists, the assume it is ASCII and dump it
+ * line by line...
+ */
+ if (mon_tfsstat(filename)) {
+ mon_printf("Dumping content of '%s'...\n",filename);
+
+ tfd = mon_tfsopen(filename,TFS_RDONLY,0);
+ if (tfd >= 0) {
+ while(mon_tfsgetline(tfd,line,sizeof(line)))
+ mon_printf("%s",line);
+ mon_tfsclose(tfd,0);
+ }
+ else {
+ mon_printf("TFS error: %s\n",
+ (char *)mon_tfsctrl(TFS_ERRMSG,tfd,0));
+ }
+ }
+ else {
+ mon_printf("File '%s' not found\n",filename);
+ }
+ return 0;
+}
+
+void catFile(const char *name)
+{
+ int i;
+ FILE *fp;
+ char line[128];
+
+ if (!name)
+ return;
+
+ printf( "====> Start of file %s\n", name );
+ /* Attempt to open and print a file through the
+ * the TFS based FS...
+ */
+ fp = fopen(name,"r");
+ if (!fp) {
+ printf("fopen() failed\n");
+ perror("fopen()");
+ return;
+ }
+
+ for (i=0 ; fgets(line,sizeof(line),fp) ; i++)
+ printf("LINE %d: %s",i, line);
+
+ printf( "====> End of file %s\n", name );
+ fclose(fp);
+}
+
+void tfsFsDemo(void)
+{
+ char *name;
+
+ /* Initialize the TFS based file system...
+ */
+ puts( "Mounting RTEMS TFS filesystem" );
+ if (rtems_initialize_tfs_filesystem( "/JOEL/" ) != 0) {
+ puts("tfs init failed");
+ return;
+ }
+
+ /* Use uMon's environment to store the name of the file.
+ * If the shell variable TFSFS_FILENAME is present, then
+ * assume it contains the name of the file to open and
+ * print to the console...
+ * For TFS to run as a file system under RTEMS, all filenames
+ * that are associated with tfs are preceded with "/TFS/".
+ */
+ name = mon_getenv("TFSFS_FILENAME");
+ if (!name)
+ puts("Shell variable TFSFS_FILENAME not available");
+ else
+ catFile( name );
+ catFile( "/JOEL/csbboot" );
+ catFile( "/JOEL/boot" );
+}
+
+
+rtems_task Init(
+ rtems_task_argument ignored
+)
+{
+ puts( "\n\n*** MicroMonitor Demonstration ***" );
+
+ puts( "calling monConnect ..." );
+ rtems_umon_connect();
+
+ umon_demo(0, NULL);
+ tfsFsDemo();
+
+ puts( "*** MicroMonitor Demonstration ***" );
+ exit( 0 );
+}
+
+/* configuration information */
+
+/* NOTICE: the clock driver is explicitly disabled */
+#define CONFIGURE_APPLICATION_NEEDS_CLOCK_DRIVER
+#define CONFIGURE_APPLICATION_NEEDS_CONSOLE_DRIVER
+
+#define CONFIGURE_RTEMS_INIT_TASKS_TABLE
+#define CONFIGURE_MAXIMUM_TASKS 1
+#define CONFIGURE_MAXIMUM_SEMAPHORES 5
+#define CONFIGURE_USE_IMFS_AS_BASE_FILESYSTEM
+#define CONFIGURE_LIBIO_MAXIMUM_FILE_DESCRIPTORS 4
+#define CONFIGURE_MICROSECONDS_PER_TICK 5000
+#define CONFIGURE_INIT_TASK_STACK_SIZE \
+ (CONFIGURE_MINIMUM_TASK_STACK_SIZE * 10)
+
+#define CONFIGURE_INIT
+
+#include <rtems/confdefs.h>
+
+/* end of file */