Version 1 (modified by ismael, 16 years ago)

--

ALOE Waveform Developer Guide


WARNING: This page is under heavy construction, be careful when following instructions found here.

Here you will find information on how to design, debug and test Software Radio applications for ALOE.

Creating Waveforms

Creating a new waveform is as simple as link the set of processing blocks' (or objects') interfaces that compromise the whole waveform. Future releases of ALOE plan to use a graphical front-end to perform this task, currently, however, you must do it by editing a text file.

In this text file you must indicate the modules you want to load (and their executable file name), their interfaces and how they should be interconnected. The following example illustrates how it must be written. In the example, a single executable (test_exec) is launched as two instances, each is assigned a different object name and different interfaces.


Listing 1: Waveform definition

object {                    # begins a description of a new obje t
        obj_name=test_w     # object name used in ALOE (must be unique)
        exe_name=test_exec  # executable name in the system (as SWMAN will access)
        proc=100            # processing demand (in MIPS)

        outputs {                             # begins output interfaces definitions
                name=test_w_itf               # name of the output interface (as the object will use in its code)
                remote_itf=test_r_itf         # name of the remote interface
                remote_obj=test_r             # name of the remote objec
        }
        outputs {                             # another output could just be added...
                name=output_2
                remote_itf=...
                remote_obj=...
        }
                

}

object {
        obj_name=test_r        # Note how we instantiate another object with a different name, although the executable is the same            
        exe_name=test_exec
        proc=100

        inputs {
                name=test_r_itf
                remote_itf=test_w_itf
                remote_obj=test_w
        }
}

Once you have created this file, you have to rename to your_waveform_name.app and save in your swman_apps directory. Don't forget to make accessible the executables at the swman_execs/platform/ path.

Debugging Waveforms with Eclipse (or gdb)

Once your ALOE is running, and just after loading the application, you can attach to the running process using your favourite debugger (gdb, ddd, eclipse, etc.). The following steps lead you to debug a waveform component:

1. Launch ALOE with a positive debug level (this will prevent the components to be killed when stopped by the debugger:

 runph phal-repositories -d 1

2. On the prompt, as usual, load your waveform

 runph$: phload my_app

3. Create or open an Eclipse project for your component.

4. Place a break-point on every component you want to debug, in the INIT or in the RUN phase (or in both)

5. Right-click in the binary (left-frame, "Project Explorer") and select debug

6. Select the first item of the left (Attach to Process) and click the New icon of the icon's menu. Click Debug.

7. Back to the runph prompt, type:

 runph$: phinit my_app

8. If you placed a breakpoin thte the initialization phase, you will see how the program stops on it. You can continue the execution (step by step or free running) until the component arrives to the Status() call. At that point, you can begin to debug the RUN phase. We recommended using step-by-step execution, so you can place a breakpoint anywhere in the RUN piece of code and you will see how the program stops on every timeslot. In the runph prompt type:

 runph$: phstep my_app

9. Leave the component in free-run (in Eclipse), it will fall to idle, until the next step, so, go back to runph prompt and type phstep again. Remember that you also have the option to remove breakpoints and run a finite number of steps, you can do so by typing, in the runph prompt:

 runph$: phrun my_app 100

To run 100 timeslots.



[Back to ALOE Implementations]?