Products Downloads Try/Buy Support News and Events Contact

The Gedae web site has a release notes page for Version 3.0. Release Notes

In the future, there will be a release notes web page for each release, including each bug fix release. Each release notes page will contain:

  1. Bugs fixed since last release,
  2. Know bugs that have not been fixed, and
  3. Suggestions for this release.


return to top

To use a source code debugger to debug Gedae primitives, flags to store symbol information for debugging must be added to the compilation and link commands used to create the box. These flags are defined in the makeGEDAE file in the variables CFLAGS (flags used by the compiler) and LINKFLAGS (flags used by the linker). The flags that are used vary by the operating system and compiler.

To "turn on" debugging on Windows, flags must be set for both the compiler and linker. The "cl" command line compiler should have the -Z7 flag included in its CFLAGS variable. The "link" command line linker should have the /DEBUG flag included in its LINKFLAGS variable. The default settings for these two variables in the makeGEDAE file include these two flags:

$ENV{"CFLAGS"}    = "-Z7 -D_COMPLEX_DEFINED -DWIN32 -nologo -D_NT_";
$ENV{"LINKFLAGS"} = "/DEBUG";
							

Boxes compiled with these flags are available for use with the Microsoft debugger. If a graph causes a segmentation fault, the Microsoft operating system presents the user with an "OK or Cancel" dialog, in which pressing "Cancel" brings up the debugger. Alternatively, Gedae can be launched from the debugger by typing "msdev gedae.exe" at the command line. If the user attempts to load debugging information for a primitive, Microsoft will prompt the user to specify the location of the source code. The source code for all primitives is located underneath the object directory. For example, the code for the box embeddable/stream/sink/echo is located at <gedae_user>\nt\object\embeddable\stream\sink\echo.c.

To "turn on" debugging on Solaris, the "-g" flag must be given to the compiler. To set this flag, make sure the CFLAGS variable in the makeGEDAE file includes the flag. The flag is set by default:

$ENV{"CFLAGS"} = "-g";
							

Boxes compiled with this flag are available for use with the gdb, dbx, or other debugger. If a graph causes a segmentation fault, Gedae will popup a selection dialog, through which the user can launch the debugger and attach it to the current Gedae process. The default debugger command is:

xterm -e gdb gedae
							

This command can be altered by editing the line in the popup dialog. To change this default permanently, set the environment variable GEDAE_DEBUG to the new default.

Alternatively, the debugger can be used to launch Gedae. For gdb, the user would type "gdb gedae"at the command line, and then type "run" within gdb to start Gedae.

Redhat Linux users should follow the same instructions as Solaris users. However, note that the Linux version of gcc did not adequately support debugging of shared object files until Version 5.2.2. Users should make sure their gcc version is up-to-date.


return to top

To correct the above problem you must lower the priority of the running Gedae executable. To lower the priority of Gedae follow the steps listed below:

  1. Bring up the Windows Task Manager (Click Button 3 on the bar at the bottom of the Windows screen)
  2. Select the Processes tab
  3. Find gedae.exe and click on it with Button 3
  4. From the menu that pops up, Set Priority to BelowNormal
  5. Windows displays a warning that this command might make your system unstable and asks for a second confirmation of step 4. Click on Yes

The Gedae process should immediately become more responsive to mouse inputs.

Note that the same procedure can be applied to command programs running Gedae produced launch packages. Set the command programs priority to BelowNormal using the above procedure.


return to top

This problem has been fixed, and the fix has been available since Gedae Version 3.1.


return to top

A function box is composed of various methods that operate on the function boxes' "state" data structure. The state structure contains pointers to input and output streams, dynamic queues, parameters, local state variables, the boxes execution granularity, and dimension and family size variables. The contents of the state structure are dictated largely by the function box description file, particularly the Input, Output, and Local sections.

For example consider the function box v_demux below:

Name: v_demux
Type: static
Input: {
  stream float in[n](m);
}
Output: {
  stream float [m]out[n](1);
}

Apply: {
  int N = size(in)/n;
  int fam=0;
  int j=0;

  while (N--) {                         /* loop thru input vectors */
    e_vmov(in,1,out[fam]+j,1,n);        /* vector move */
    in += n;                            /* point to next input vector */
    if ( (++fam) >=m) {fam=0;j+=n;}     /* inc family with walking wrap */
  }
}

The state vector for this box is:

typedef struct {
  int granularity;   /* granularity of box firing */
  float *in;         /* pointer to input data stream in */
  int N_in;          /* number of samples in input data stream in */
  float **out;       /* family of output streams */ 
  int m;             /* number of family members in output stream */
  int n;             /* dimension n of input stream "in" */
} StateRec, *State;

The state structure contains all the information needed for the Apply method to run. The Apply method is implemented as a function that takes as its one input parameter the state vector. The code generation for the Apply method is shown below.

static void Apply(void *vstate) {
  State state = vstate;
  int granularity = state->granularity;
  int m = state->m;
  int n = state->n;
  float **out = (state->out);
  float *in = (state->in);
  int _size_in = state->N_in;
  int N = _size_in/n;
  int fam=0;
  int j=0;

  while (N--) {                         
    e_vmov(in,1,out[fam]+j,1,n);        
    in += n;                            
    if ( (++fam) >=m) {fam=0;j+=n;}     
  }
}

If the state vector is corrupted the function box will fail to run correctly. There are several reasons that the state vector could be corrupted. One common reason is that a function box is written in such a way that the Apply method of the box overwrites the bounds of an array. In this case it might corrupt the memory of some other box's state vector.

Another cause, however, comes from editing a primitive function box within a Gedae session. The problem is that currently the Input, Output, and Local sections of a function box are read once in a Gedae session and are not re-read even if the user modifies them from the primitive editor within Gedae. If the user modifies these sections and runs the code generator, Gedae will dynamically link in the new methods and state vector description. However, this state vector will not agree with the description of the box already read into Gedae, and Gedae will not initialize the state correctly as a result. Currently the work around is to exit Gedae after modifying a primitive definition's Input, Output, or Local section. This problem will be fixed in a future release and can be tracked as SCR220.


return to top

The ability to view Gedae hierarchical graphs as flattened graphs is useful in getting an overall view of a Gedae graph and in being able to directly view and access information about individual box elements in a graph. It is a first effort, and enhancements will be made in a future release.

The following improvements will be made to the flattened graph feature:

  • The flattened graph will preserve arc vertices so arcs will not run over boxes and each other,
  • The algorithm that places the boxes in the flattened graph will be improved,
  • The user will be allowed to modify the placement of boxes on the graph,
  • The user will be allowed to collapse parts of the graph,
  • The user will be able to save any modifications he makes, and
  • The user will be able to view only subgraphs.

While these improvements and others will be made, they are not of the highest priority.


return to top

Yes, a new dialog will be created that has a more natural look and feel. We are currently studying file selection dialogs of commonly used applications and operating systems to help construct a design for the dialog. The dialog will retain the basic, underlying design of having directory selection on the left half of the panel and file selection on the right half.


return to top

User-defined types are currently only legal for stream inputs and outputs. They can not be used for input or output parameters or in the primitive's Local section. They cannot be used in any of the declaration sections of eval or trigger boxes. This limitation will be removed in a release during the year 2001.


return to top

Frequently, files that can be opened from your development host cannot be opened in the same way from a VxWorks processor, even if the VxWorks processor has access to the same disk drives. A possible solution is to use absolute path names instead of relative path names because VxWorks requires the latter.

Another reason a file won't open is that the value entered for a user settable string variable contains quotes. For example, if on a Gedae graph a local variable is declared as:

string Filename = "/home/john/file1"

then any file io box will open a file using the above string. However, if the string is changed to a user settable variable:

string Filename

then to open the same file you must set the filename to /home/john/file1 using the parameter setting input dialog. It is important that the name be entered into this dialog without the quotes. Note that quotes entered into the input dialog actually become part of the string and do not merely delimit the string.


return to top

The Gedae NT version is delivered for use with Hummingbird Exceed Version 6.1 XDK. To use Hummingbird Exceed Version 7.1 XDK with GEDAE Version 3.4 the following modifications have to be carried out:

  1. In both files:
    %gedae%\nt\makeGEDAE
    %gedaehome%\nt\makeGEDAE
    change:
    $ENV{"XLIB"}= "-defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

    to:

    $ENV{"XLIB"}= "-defaultlib:HCLXaw -defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

  2. In files:

    %gedae%\nt\ent\bin\std_make_info
    %gedae%\nt\ent\embedded\runtime_make_info
    %gedaehome%\nt\embedded\ent\runtime_make_info


    change:

    ENV{"XLIB"}= "-defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

    to:

    $ENV{"XLIB"}= "-defaultlib:HCLXaw -defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

  3. From a DOS shell recompile as follows:

    cd %gedaehome%\nt
    perl makeGEDAE CLEAN
    perl makeGEDAE CLEAN GSIM
    perl makeGEDAE
    perl makeGEDAE GSIM

return to top

The Gedae NT version is delivered for use with Hummingbird Exceed Version 6.1 XDK. To use Hummingbird Exceed Version 9.0 XDK with GEDAE Version 4.4 the following modifications have to be carried out:

  1. In both files:

    %gedae%\nt\makeGEDAE
    %gedaehome%\nt\makeGEDAE


    change:

    $ENV{"XLIB"}= "-defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

    to:
    $ENV{"XLIB"}= "-defaultlib:HCLXaw -defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib";

  2. In files:

    %gedae%\nt\ent\bin\std_make_info
    %gedae%\nt\ent\embedded\runtime_make_info
    %gedaehome%\nt\embedded\ent\runtime_make_info


    change:

    $ENV{"XLIB"}= "-defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib -defaultlib:xlibcon";

    to:

    $ENV{"XLIB"}= "-defaultlib:HCLXaw -defaultlib:HCLXm -defaultlib:HCLXt -defaultlib:Xlib";

    and change:

    $ENV{"EMB_LIBS"} = " -defaultlib:lmgr327b -defaultlib:kernel32 -defaultlib:msvcrt -nodefaultlib:libc -defaultlib:ws2_32 -DEBUG -STACK:1000000 -nologo $XLIB -defaultlib:xlibcon";
    $ENV{"COM_LIBS"} = " -defaultlib:lmgr327b -defaultlib:kernel32 -defaultlib:msvcrt -nodefaultlib:libc -defaultlib:ws2_32 -DEBUG -STACK:1000000 -nologo $XLIB -defaultlib:xlibcon";


    to:

    $ENV{"EMB_LIBS"} = " -defaultlib:lmgr327b -defaultlib:kernel32 -defaultlib:msvcrt -nodefaultlib:libc -defaultlib:ws2_32 -DEBUG -STACK:1000000 -nologo $XLIB";
    $ENV{"COM_LIBS"} = " -defaultlib:lmgr327b -defaultlib:kernel32 -defaultlib:msvcrt -nodefaultlib:libc -defaultlib:ws2_32 -DEBUG -STACK:1000000 -nologo $XLIB";


  3. From a DOS shell recompile as follows:

    cd %gedaehome%\nt
    perl makeGEDAE CLEAN
    perl makeGEDAE CLEAN GSIM
    perl makeGEDAE
    perl makeGEDAE GSIM

return to top


return to FAQ list

 
Copyright © Gedae, 2007.