This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

SYS/BIOS General Stream & Task questions

Hi all,

I've been trying to familiarize myself with SYS/BIOS 6. I'm coming from DSP/BIOS 5 and CCSv3.3. My application utilizes many static tasks that communicate to one another using streams. I have come across a couple questions.

It seems like the stream module has been revamped enough that I am not understanding how it works. Before I would create a device DEV or UDEV, UDEV looks to be no longer available? Then a stream device (DIO) would be associated with the DEV. Now when I would create streams (SIO), I would be able to associate them to a DIO and enter what type of stream it is. I used this in a way that a task might link to another task through a input stream, a DIO, and an output stream to the next task. Now I can't find a correlation between the DEV and SIO (DIO looks to have been removed) or how to utilize input and output streams to link tasks.

Furthermore, it looks like tasks only accept 2 input arguments in SYS/BIOS as compared to the 7 in DSP/BIOS. Is there anyway around this? Many of my tasks currently take more than 2 streams as arguments to their startup function.

Thanks for any and all help.

  • Marshall,

    Please see this forum post describing recent changes to ease porting to Stream in SYS/BIOS: http://e2e.ti.com/support/embedded/bios/f/355/t/153899.aspx#557438

    If you want to download the latest SYS/BIOS release with the updated user guide you can find it here:

    http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/bios/sysbios/index.html

    Also, have you seen the description of Stream in IPC_Users_Guide.pdf?

    And yes, in SYS/BIOS Task functions are only passed two arguments, and there isn’t a direct way to pass more.  If more arguments are needed, you can pass a reference to a structure as one of these two arguments.

    Hope this helps.

    Scott

  • Thanks Scott,

    I've already been reading through the user's guides and that's what initially was causing my confusion. It seems in TI's attempt to simplify something I was already using it ended up just making me more confused. I did not know about the IPC user's guide and I've been reading through that information slowly and it is helping my understanding. It appears since I already have drivers written in CCSv3.3 DSP/BIOS I can reuse them by using the IomAdapter module. Also it appears that when using this as my IDriver I no longer need to deal with the DEV and DIO modules from DSP/BIOS. This material has been very helpful.

    I have not figured out how to make my arguments into structures solely in my *.cfg file.

    I have something like:

    Program.global.myStream = Stream.create("/myIomAdapter", Stream_INPUT, myStreamParams);

    How do I pass 2+ streams created like this into a task argument as a structure?

  • Marshall,

    When I suggested passing a structure reference I was thinking of calling Task_create() in your C code, and passing as an argument a pointer to an array of stream handles.  That array would first have to be filled (at runtime) with stream handles, like “myStream” from your configuration snippet, or with dynamically created stream handles.  This is not elegant, but it should work. 

    It is not straightforward to do this entirely statically with JavaScript.  There is an open feature request to enhance array handling in Program.global, which may make this feasible in the future.

    Hope this helps.

    Scott