Proprietary SDIO stack supports Linux
Jan 6, 2005 — by Henry Kingman — from the LinuxDevices Archive — viewsCodetelligence is shipping an development kit for embedded programmers using Linux and other OSes in devices that support SD (secure digital) and SDIO (SD input/output) memory cards and peripherals. The Embedded SDIO Developers Kit includes an SDIO stack that supports Linux 2.6.9.
According to Codetelligence, demand for thinner, lighter devices is driving smaller, lower-powered I/O expansion technologies, including SDIO peripherals based on the small form-factor SD/MMC memory card interface.
Size comparison of SD/MMC memory cards and SDIO bluetooth and 802.11 cards
The Codetelligence SDIO stack includes a hardware abstraction and card function API layer, to enable third-party software to communicate and control cards across an SD/SDIO bus. Additional abstraction layers enable the stack to support a variety of embedded operating systems, including, initially, Linux 2.6.9 and QNX Neutrino 6.2.
Embedded SDIO stack architecture
Codetelligence lists features of its Embedded SDIO stack as follows:
- OS and Platform Hardware Independent
- All MMC/SD/SDIO bus modes (1bit, 4bit, SPI). Host controllers dynamically support optimal mode, including legacy SPI-only peripherals support
- Unlimited number of host controllers/slots per system with different capabilities per slot
- Power management architecture
- SDIO 1.10, SD 1.01, MMC 3.1 compatible
- Function drivers include: SD/MMC memory card, bluetooth type-A, SDIO-GPS
- Multi-function and combo card support
- Plug and play function driver architecture
Stack architecture
According to Codetelligence, the SDIO Embedded Stack architecture is divided into three portions — SD/SDIO Core, Host Controller Drivers, and Card Function Drivers — which function as follows:
- The SD/SDIO core is the central software component that exports a set of interfaces for host controller and function drivers. The core is also referred to as the “bus driver.” The bus driver is responsible for enumerating devices detected on a bus, managing resources on that bus, and loading or notifying other drivers of the presence of devices.
- Host controller drivers are software modules that abstract the SD/SDIO slot hardware from the SDIO core and function drivers. The host controller driver is responsible for initializing slot hardware, detecting card insertion/removal, and carrying out configuration and bus transaction requests from its upper interface. Host controller drivers abstract the hardware controller design and capabilities through the host controller interface. Host controllers can support the full SDIO host specification or support limited subsets such as 1-bit only or SPI-only operation.
- Card function drivers support individual peripherals, such as memory cards, GPS devices, and Bluetooth cards. They provide applications and other software modules (largely OS-specific) hardware-independent access to I/O or memory functions on SD/SDIO cards. Card function drivers utilize the SD/SDIO core's Card Function Interface APIs to carry out SD/SDIO bus configuration and data transactions.
President Paul Lever said, "The small form factor, high performance and low power operation of SDIO devices is ideal for the new generation of mobile devices. Our goal is to extend SDIO support and deployment to a broad range of devices and operating systems."
This article was originally published on LinuxDevices.com and has been donated to the open source community by QuinStreet Inc. Please visit LinuxToday.com for up-to-date news and articles about Linux and open source.