On 6/14/07, Grant Edwards <[EMAIL PROTECTED]> wrote:
On 2007-06-14, Mike Sweeney <[EMAIL PROTECTED]> wrote:> I am finding the way device drivers are implemented in eCos to be > slightly confusing so was looking for some help. The main source of my > confusion is the need for some sort of interface under the io package > and then another part of the driver in the devs package. I have looked > at examples like the serial driver and understand how it works in that > context, but am having trouble seeing the bigger picture. Should > drivers for all types of devices follow this split implementation > design? Furthermore, can someone provide me an analogy between the > eCos driver model and Linux, for example? I don't see this two layer > method in Linux so am hoping someone can clarify this. Linux has almost the exact same two layer method for many drivers: Serial drivers: There is a line-discipline layer which provides the application with open/close/read/write calls. That corresponds to the "io" stuff in eCos. The line-discipline layer then calls lower-level hardware-specific drivers for different sorts of serial ports. That corresponds to the "dev" stuff in eCos. SCSI drivers: Pretty much the same -- there's a generic layer that provides an API to the user and then a lower layer that talks to individual SCSI controllers (or other hardware). There are probably other examples (VFS on top of the individual filesystem modules, 80211 on top of various card drivers). -- Grant Edwards grante Yow! FUN is never having to at say you're SUSHI!! visi.com
Thanks for the information, that clarifies things for me. -- Before posting, please read the FAQ: http://ecos.sourceware.org/fom/ecos and search the list archive: http://ecos.sourceware.org/ml/ecos-discuss
