ELF Hosted at SourceForge

Development

  • sdfirm forum
  • sdfirm code
  • sdfirm bugs
  • sdfirm files
  • Documentations

  • sdfirm blog
  • sdfirm wiki
  • Specifications
  • Datasheets
  • Distributions

  • Source codes
  • Binary releases
  • Appliances
  • Mailing Lists

  • sdfirm developers
  • sdfirm users
  • Latest updates

    A simple initial codes (a MCS51 keyboard and an AVR led samples) has been published here:
    sdfirm-core-0.0.0.tar.gz

    The first source codes release has been published here:
    sdfirm-0.1.0.tar.gz

    This is the first release of sdfirm.

  • 1. USB: Though USB functionalities are completed, the usb_dev.c is not released due to some license issues.
  • 2. SCS: There are bugs in the ifd.c that might cause a contact chip card reader not working properly.
  • 3. SCSI: scsi functions are completed for a MSD device.
  • 4. Time: There is a plan adding interrupt context timers to meet some protocol's realtime requirements. Though this has not been done in this revision, other functionalities may be enough for those without such requirments.
  • 5. DFU: Windows DFU driver is well completed. As bootloader facilities are not implemented in the firmware, DFU mode is not functioning in the firmware for this release.
  • 6. MCS51: MCS51 is compiled using SDCC. The loader code is linked from SDCC which might not be adequate for some boards.
  • 7. AVR: AVR is compiled using GCC, with a full link script support.
  • 8. ARM: ARM is compiled using GCC, with a full link script support.
  • 9. toolchains: There are simple toolchain generation scripts attached in the arch specific script folder.
  • 10.external packages: There are tow external projects' source code embedded in this release: libusb-win32, libnfc. You can find them in the scripts/libusb, scripts/libnfc, scripts/usbstub folders.
  • Welcome to sdfirm by ELF!

    The ELF (Embedded Linux Force) aims to bring embedded developers embedded innovations. sdfirm is one of its projects.

    The project sdfirm is abbrieviated for Small Device Firmware.
    It was started to build a firmware for a MCS51 chip (AT89C5122). Compiled with sdcc, we call it sdfirm. In the next step, sdfirm was ported to AVR chips (AT90USB1287 & AT90SCR100) with the gcc compiler support. Recently, sdfirm has been ported to ARM Cortex-M3 chips (LM3S9B92) with EABI gcc compilation support.
    Unlike other small device firmware architecture (sdcc or avr-libc), sdfirm does not require a libc to be linked. There is no complete multi-tasking support in the firmware (though you could find one in the AVR architecture support), but timing facilities are carefully implemented. Note that, sdfirm is not a good software architecture for low power consumption, it will busy polling interrupts with IRQs disabled to gain maximum realtime capabilities, thus instructions like WAIT/IDLE would have no chance to be executed. A good solution for power consumption is welcome. Any patches are welcome to be posted in the developers mailing list.

    Our mission is to add following features for this firmware, others are left for you to extend:

  • 1. supported architectures
  • 1.1. MCS51 support with SDCC compiler
  • 1.2. AVR support with GCC compiler
  • 1.3. ARM support with GCC EABI compiler
  • 2. supported simulators
  • 2.1. OpenOCD configuration for some boards
  • 3. timing facilities (delay, timer, jiffies)
  • There are tow kinds of timing devices supported:
  • 3.1. TSC (like linux's clock source device)
  • 3.2. GPT (like linux's clock event device)
  • 3.3. IRQ/BH context timeout event
  • Following timing features are not yet implemented:
  • 3.4. realtime time axis (not supported due to lack of RTC and usable TSC)
  • 4. background scheduler BH (like linux's soft IRQ)
  • 5. USB device protocol stack
  • Following USB features are implemented:
  • 5.1. control endpoint
  • 5.2. bulk/interrupt endpoints
  • 5.3. pipe halting (reset recovery, unhalt recovery)
  • 5.4. synchronous/asynchronous pipe IO
  • Following USB features are not yet implemented:
  • 5.5. buffering (global single buffering, local single buffering, local double buffering)
  • 5.6. isochronous endpoints
  • 5.7. bi-directional endpoints
  • 6. Smart card interface devices protocol stack
  • Following IFD features are implemented:
  • 6.1. ISO7816-3 support
  • 6.1.1. protocols: T=0, T=1
  • 6.1.2. exchanges: TPDU level, short APUD level
  • 6.1.3. auto sequences
  • 6.2. USB CCID and ICCD support
  • Following IFD features are not yet implemented:
  • 6.3. ISO7816-4 support
  • 6.4. ISO14443 support
  • 6.5. ISO18092 support
  • 7. SCSI device protocol stack
  • Following SCSI features are implemented:
  • 7.1. SAM and SPC support
  • 7.2. SBC support
  • 7.3. USB MSD support
  • There are still needs for performance tuning on MTD devices.
  • 8. Networking
  • This has been in the plan for months, but not yet implemented.

    This project is released under GPLv2. Sponsors and developers are welcome to contribute.


    Copyright © 2012, The Embedded Linux Force (ELF)