Hi Jan,

> So much for the Ethernet low-level world. Firewire seems to 
> have a clean model by allowing to filter those channels in 
> hardware, doesn't it? And how is the periodical transmission 
> managed in Firewire? Does the driver/stack have to interact 
> for each isochronous packet or only if anything else than a 
> linear memory stream is transmitted. I.e. what will you have 
> to do for transmitting always the some memory region (e.g. 
> some process states), and how to synchronise any access to 
> this memory?

Now I understand the "periodical transmission" of "memory region" better:)
But Firewire multicasting/isochronous transmission is also packet-origented.
The DMA controller will tranmit some data on fly/iso channel, if and only if
the software has put data in the mapped memory, otherwise (there is no data
in the mapped memory), the DMA controller of Firewire will do nothing.   So
the "automatic re-transmission of a certain memory area" is not supported in
Firewire hardware. But I have two ideas for that: one is to deny the
"automatic re-transmission....", e.g. in a process monitoring case, the
sending node only sends the state data when the state has been changed by
plant/application, while the receiving node only update its stored state
data when a new data has arrived, otherwise it will deliver the old data to
user/applicatoin, meaning that the process state has not been changed.
Another idea is to support the "automatic re-transmission..." in software.
So in the sending node, there is a realtime task that periodically retrieves
and transmits the state of process, thru a shared memory or....  

> Mmh, a lot of tasks, and I still didn't understand the 
> underlying synchronisation mechanisms and timing 
> requirements. I try to repeat it: 
> The Firewire controller can be instructed to transmit a 
> certain memory region (accessed via DMA) over and over again. 
> The Packet Management Module runs an RTAI(?) task at the 
> same(?) frequency of 8kHz to prepare this memory region. So, 
> how is THIS task synchronised with the hardware? 
> Does it retrieve the frequency from the controller by waiting 
> on the transmission?
> 

My idea is, the PM module (or whatever middleware) doesnt need to be
synchronized with the hw (e.g. firewire). The realtime task in PM module
should be run at a frequency that is Not Higher than the frequency of hw,
e.g. 8KHz in Firewire. The same, the application should also be run at a
frequency that is Not Higher than the frequency of PM module (or whatever
middleware). As a comparison, it's like the relation between passenger and
bus: the passenger can take the bus everyday or even every week..... but the
bus must go every 10 mins. There is no synchronization between passenger and
bus, i.e. the bus will not wait for a late passenger.

> And then the question is why we need an addition management 
> task between
>   the hardware and the user application? It may only increase 
> the overhead if the application has to run at 8 kHz as well 
> anyway. Already on mid-sized boxes, such task frequencies 
> will drive the system to its limits (remember typical 
> scheduling jitters of 30-60 us).
> 
Well, the purpose to create a additional management task is to periodically
collect the data from applications who wish to transmit sth on fly, and to
multiplex these data to a single iso packet. Note that if the application
can directly write some data the DMA-mapped area, these data will tranmitted
as soon as possible as a single iso packet. In Firewire, each node can only
transmit one iso packet for one channel, in each cycle, so the data from
next application can only be transmitted in next cycle. This is not
efficient, and may mess up the traffic on the network.  


> Yes, a widely hardware-agnostic API is a good design goal. 
> But don't try to invent it in the "clean room", i.e. without 
> constantly checking it against concrete implementation 
> scenarios on known hardware. In this case, try to consider 
> how both Firewire and Ethernet would fit into it. 
> A clean API can also mean an unusable API. ;)

Yes, I will consider how both can fit, and do the comparison and of cousre
discussion:)
Also, I would like to hear more suggestions or questions from you. 

Yuchen 



-------------------------------------------------------
This SF.Net email is sponsored by: IntelliVIEW -- Interactive Reporting
Tool for open source databases. Create drag-&-drop reports. Save time
by over 75%! Publish reports on the web. Export to DOC, XLS, RTF, etc.
Download a FREE copy at http://www.intelliview.com/go/osdn_nl
_______________________________________________
RTnet-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/rtnet-developers

Reply via email to