|
|
Subscribe / Log in / New account

Development

SDCC, the Small Device C Compiler

By Forrest Cook
April 1, 2008

SDCC is a multi-platform, multi-target C cross compiler that was originally written by Sandeep Dutta and has been further improved by a number of other people:

SDCC is a retargetable, optimizing ANSI - C compiler that targets the Intel 8051, Maxim 80DS390, Zilog Z80 and the Motorola 68HC08 based MCUs. Work is in progress on supporting the Microchip PIC16 and PIC18 series. SDCC is Free Open Source Software, distributed under GNU General Public License (GPL). Some of the features include:
  • ASXXXX and ASLINK, a Freeware, retargetable assembler and linker.
  • extensive MCU specific language extensions, allowing effective use of the underlying hardware.
  • a host of standard optimizations such as global sub expression elimination, loop optimizations (loop invariant, strength reduction of induction variables and loop reversing ), constant folding and propagation, copy propagation, dead code elimination and jump tables for 'switch' statements.
  • MCU specific optimizations, including a global register allocator.
  • adaptable MCU specific backend that should be well suited for other 8 bit MCUs
  • independent rule based peep hole optimizer.
  • a full range of data types: char (8 bits, 1 byte), short (16 bits, 2 bytes), int (16 bits, 2 bytes), long (32 bit, 4 bytes) and float (4 byte IEEE).
  • the ability to add inline assembler code anywhere in a function.
  • the ability to report on the complexity of a function to help decide what should be re-written in assembler.
  • a good selection of automated regression tests.

The SDCC package components include the sdcc compiler, the sdcpp C preprocessor, assemblers and linkers for the supported target processors, a simulator for the 8051 processor, the sdcdb source debugger and the packihx Intel hex file packing tool.

Version 2.8.0 of SDCC was announced on March 30, 2008, it includes the following changes:

added predefined preprocessor macro SDCC_REVISION holding SDCC's subversion revision number
added preprocessor macros SDCC_PARMS_IN_BANK1, SDCC_FLOAT_REENT and SDCC_INT_LONG_REENT
sdcpp synchronized with GNU cpp 4.2.3
multiple infiles for sdcclib
added option --acall-ajmp: replaces lcall/ljmp with acall/ajmp
added support for many PIC devices
sdcc executables on Mac OS X are built as universal binaries,
   so that they can run on both ppc and i386 Mac OS X 
added --Werror command line option
Windows installer enhancements
generation of cdb debug info for as-z80 and link-z80
generation of cdb debug info for variables in pdata for mcs51
Tail call optimization for functions that take no parameters on Z80
Improved multiplication of unsigned chars on Z80
ISO/IEC 9899 standard compliant integer promotion of integer function arguments
   if --std-cXX is defined in command line

Numerous feature requests and bug fixes are included as well.

Your author downloaded SDCC 2.8.0 as a .tar.bz2 file onto a machine running Ubuntu 7.04 "Feisty Fawn". The file was uncompressed, and untared. The configure script was run and one package dependency issue was resolved by installing flex. The second run of configure worked, as did the make and make install steps. Running sdcc -v produced the expected result: SDCC : mcs51/gbz80/z80/avr/ds390/pic16/pic14/TININative/xa51/ds400/hc08 2.8.0 #5117 (Apr 1 2008) (UNIX).

A few test cases were compiled and assembled using the default MCS51 target, then using the -mz80 switch to produce output for a Z80 processor. All of the tests seemed to work, and produced readable Intel Hex files that appear to be suitable for movement to a development platform. Your author recognized the hex C30001 at the beginning of the code as a Z80 jump instruction, activate the wayback machine. This may be a long way from developing a working embedded application on real hardware using SDCC, it does show that the system builds and is stable enough to consider using as a development platform.

The Z80 and mcs51 microprocessors have been around since the late 1970s, newer versions are still being produced. The Microchip PIC microcontroller family and the Atmel AVR family are currently very popular microcontroller platforms. The AVR is the processor used in the recently featured Arduino open hardware microprocessor design, although that uses a different development system.

SDCC allows microprocessor applications to be written in C, and that greatly expands the range of problems that can be solved by small embedded machines. The field of C cross-compilers has traditionally been dominated by proprietary Windows-based software. SDCC allows one to develop embedded microprocessor designs using open-source software under Linux.

Comments (9 posted)

System Applications

Backup Software

GPB: version 0.03 (SourceForge)

Version 0.03 of GPB has been announced. "GPB can be a ready to use out of the box backup solution or it can be the foundation for you to build and improve upon. The core and the power of GPB lies in the use of Bash scripting. I just released version 0.03 of the GPB backup software. This version is a cleanup of the 0.02 code."

Comments (none posted)

Database Software

Postgres Weekly News

The March 30, 2008, 2008 edition of the Postgres Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Interoperability

Samba 4.0.0alpha3 announced

Version 4.0.0alpha3 of Samba has been announced. "Samba 4 is the ambitious next version of the Samba suite that is being developed in parallel to the stable 3.0 series. The main emphasis in this branch is support for the Active Directory logon protocols used by Windows 2000 and above. Samba 4 is currently not yet in a state where it is usable in production environments."

Full Story (comments: none)

Mail Software

libdomainkeys: 0.69 released (SourceForge)

Version 0.69 of libdomainkeys has been announced. The software is: "A general purpose set of tools, C library and CPAN modules to help DomainKeys developers. The goal is that these tools and library can be easily adopted by all MTAs, LDAs and possibly MUAs. This project is about conforming to the DomainKeys standard, Here is a maintenance release. Nothing major, just some old patches that were sent in and a fix for a policy bug."

Comments (none posted)

Networking Tools

PowerDNS Recursor 3.1.5 released

Version 3.1.5 of PowerDNS Recursor has been announced. "We would like to thank Amit Klein of Trusteer for bringing a serious vulnerability to our attention which would enable a smart attacker to 'spoof' previous versions of the PowerDNS Recursor into accepting possibly mal[]icious data. Details can be found on http://www.trusteer.com/docs/powerdnsrecursor.html. It is recommended that all users of the PowerDNS Recursor upgrade to 3.1.5 as soon as practicable, while we simultaneously note that busy servers are less susceptible to the attack, but not immune."

Full Story (comments: none)

Twisted 8.0 announced

Version 8.0 of the Twisted networking framework has been released by Twisted Matrix Laboratories. "Twisted 8.0 is a major feature release, with several new features and a great number of bug fixes. Some of the highlights follow. - The IOCP reactor is now much improved and many bugs have been resolved. - Twisted is now easy_installable. - Many improvements were made to Trial, Twisted's unit testing system. - A new memcache client protocol implementation was added. - So much more!"

Full Story (comments: none)

Security

OpenSSH 4.9 released

Version 4.9 of OpenSSH has been announced, it includes a number of new features, bug fixes and the following security fix: "Disable execution of ~/.ssh/rc for sessions where a command has been forced by the sshd_config ForceCommand directive. Users who had write access to this file could use it to execute abritrary commands. This behaviour was documented, but was an unsafe default and an extra hassle for administrators."

Full Story (comments: none)

Desktop Applications

Audio Applications

Ardour 2.4 released

Version 2.4 of Ardour, a multi-track audio workstation, has been announced. "Well, its over a month later than expected, but Ardour 2.4 is finally released. Right now, there is a source tarball and an Intel native version (details on IRC). A respectable list of new features, many small improvements and an important set of bug fixes make up the news for this one. "

Comments (none posted)

Desktop Environments

xmonad 0.7 released

Version 0.7 of xmonad has been announced, this release includes improved GNOME support and more. "xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use. Window manager features are accessible from the keyboard: a mouse is optional. xmonad is extensible in Haskell, allowing for powerful customisation. Custom layout algorithms, key bindings and other extensions may be written by the user in config files. Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several physical screens."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (none posted)

KDE 4.0.3 Released

KDE 4.0.3 is out. This is primarily a maintenance release, but a number of improvements and optimizations have been folded in as well. See the changelog for details.

Full Story (comments: 8)

Digikam Plans for KDE 4 (KDE.News)

KDE.News looks at what's happening with Digikam. "There are many improvements including a cleaner user interface, improved performance, a new thumbnail bar, XMP support, ability to run on Mac OS X, GPS tagging using Google Maps, multiple album collections supporting collections on network shares and removable media, and auto gamma and white balance with RAW. Digikam is also the first open source photography tool with 16-bit colour depth support." Lots of screenshots included.

Comments (none posted)

KDE Software Announcements

KDE Software Announcements The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Desktop Publishing

Inkscape 0.46 released

Inkscape 0.46 is available; this release has a long list of new features, many of which were apparently developed by 2007 Google Summer of Code participants. "Inkscape can now directly import vector PDF files, and PDF export is greatly improved. Thus, Inkscape 0.46 provides an easy, open source tool for editing and creating PDF documents."

Full Story (comments: 1)

Electronics

gEDA Binary Suite v0.0.2 released

Version 0.0.2 of the gEDA Binary Suite, a collection of electronic design tools, has been announced. "I am pleased to announce the second official release (v0.0.2) of the gEDA Binary Suite for x86 GNU/Linux. I fixed some reported installation issues (thanks for all the reports) and I have linked this release on the gEDA download page."

Comments (none posted)

Encryption Software

GnuPG 1.4.9 released

Version 1.4.9 of the GnuPG encryption package has been announced, it features a fix for a possible security vulnerability that was introduced in version 1.4.8. "Note that this version is from the GnuPG-1 series and thus smaller than those from the GnuPG-2 series, easier to build and also better portable. In contrast to GnuPG-2 (e.g version 2.0.8) it comes with no support for S/MIME or other tools useful for desktop environments. Fortunately you may install both versions alongside on the same system without any conflict."

Full Story (comments: none)

Instant Messaging

Akonadi Sprint Readies for KDE 4.1 (KDE.News)

KDE.News covers a recent sprint that was aimed at improving the Akonadi PIM framework. "Last weekend a group of developers gathered in Berlin at the KDAB office for an Akonadi sprint. The goal was simple, getting Akonadi in shape for the first public release of Akonadi when KDE 4.1 is released. In the couple of days they met, they made an amazing amount of 270 modifications to the KDE repository, and worked on average from 10am to 3am to make a big step into reaching that goal."

Comments (none posted)

Mapping Software

eWorld: 0.5 beta released (SourceForge)

Version 0.5 beta of eWorld has been announced. "eWorld is a framework to import mapping data from providers, such as OpenStreetMap.org (OSM), visualize it, edit and enrich it with events or annotational attributes and pass it to traffic simulators, such as SUMO or VanetMobiSim. The old eWorld team is proud to announce its last release: 0.5 beta. Many bugs were fixed and eWorld has a new, shiny visualizer interface to be used from other applications."

Comments (none posted)

Music Applications

Csound 5.08 released

Version 5.08 of Csound, a music synthesis system, has been announced. "The Csound team are pleased to announce that v5.08 finally made it to the download site. Largely a bug-fixing release, it does include an(other) internationalisation scheme, together with new opcodes, better line number tracking and the usual gratuitous changes."

Full Story (comments: none)

Office Suites

AbiWord v2.6.0 released

AbiWord 2.6.0 is out. See the release notes for a long list of new features, including wider language support, Gnumeric integration, collaborative real-time editing and, inevitably, an OOXML import filter.

Comments (4 posted)

OpenOffice.org 2.4 released

OpenOffice.org 2.4 is out. "Users will appreciate changes such as usability improvements in printing, and further enhancements to PDF handling (OpenOffice.org creates PDF files 'out of the box' to ISO standard). The default font is now DejaVu, which supports more languages/localisations than the previous BitStream Vera -part of a raft of localisation improvements covering languages from Hiligaynon to Quechua." See the announcement for more details on new features and improvements.

Full Story (comments: 34)

OpenOffice.org Newsletter

The March, 2008 edition of the OpenOffice.org Newsletter is out with the latest OO.o office suite articles and events.

Full Story (comments: none)

Web Browsers

Mozilla Firefox 3 Beta 5 released (MozillaZine)

MozillaZine has announced the release of Mozilla Firefox 3 Beta 5. "Mozilla Firefox 3 Beta 5 has been released for testing. The fifth beta of the next major Firefox version offers over 750 bug fixes over Beta 4, including improvements in user interface, location bar autocomplete, bookmark backup and restore, full page zoom and other new features based upon user feedback."

Comments (none posted)

Languages and Tools

BASIC

FreeBASIC: v0.18.4b released (SourceForge)

Version 0.18.4b of FreeBASIC, an open-source 32-bit compiler with MS-QuickBASIC syntax, has been announced. Changes include: "new fblite dialect, restructured installation on Linux (/usr/local), improved QB compatibility, bug fixes, bug fixes, bug fixes."

Comments (1 posted)

C

GCC 4.2.4 Status Report

The March 31, 2008 GCC 4.2.4 Status Report has been published. "The GCC 4.2 branch is open for commits under normal release branch rules. All fixes going on that branch should first have gone on trunk and 4.3 branch. GCC 4.2.4 was due around 2008-04-02, which we will miss by at least a week. No release manager did yet volunteer to handle this release."

Full Story (comments: none)

GCC 4.3.1 Status Report

The GCC 4.3.1 Status Report for March 31, 2008 has been published. "GCC 4.3.1 is due around 2008-05-05. If a workaround for the x86 direction flag issue is agreed and committed then 4.3.1-rc1 may come around a week after such a workaround is committed to the branch, with the release following about a week later subject to no problems requiring 4.3.1-rc2 to be built."

Full Story (comments: none)

Caml

Caml Weekly News

The April 1, 2008 edition of the Caml Weekly News is out with new articles about the Caml language.

Full Story (comments: none)

Perl

This Week on perl5-porters (use Perl)

The March 16-22, 2008 edition of This Week on perl5-porters is out with the latest Perl 5 news. has been published.

Comments (none posted)

Python

CodeInvestigator 0.8.0

Version 0.8.0 of CodeInvestigator is out with a change to the directory setting screen. "CodeInvestigator is a tracing tool for Python programs. Running a program through CodeInvestigator creates a recording. Program flow, function calls, variable values and conditions are all stored for every line the program executes. The recording is then viewed with an interface consisting of the code. The code can be clicked: A clicked variable displays its value, a clicked loop displays its iterations."

Full Story (comments: none)

Tcl/Tk

Tcl-URL! - weekly Tcl news and links

The March 29, 2008 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

Build Tools

CMake 2.6.0 Beta is ready for testing

Version 2.6.0 Beta CMake of has been announced. "Please try this version of CMake on your projects and report any issues to the list or the bug tracker ( I have added a CMake-2-6 version ). The biggest change by far is the new new cmake policies." (Thanks to Alexander Neundorf).

Comments (none posted)

Editors

GNU Emacs 22.2 released

Version 22.2 of GNU Emacs has been announced. "Emacs version 22 has a wide variety of new features, including GTK+ toolkit support, enhanced mouse support, a new keyboard macro system, improved Unicode support, and drag-and-drop operation on X, plus many new modes and packages including a graphical user interface to GDB, Python mode, the mathematical tool Calc, and the remote file editing system Tramp."

Full Story (comments: 1)

Version Control

GIT 1.5.4.5 announced

Version 1.5.4.5 of the GIT distributed version control system has been announced. "Among many fixes, a notable one is a regression we introduced in 1.5.4 that changed the behaviour of "git fetch there" when you have the URL information for "there" in .git/branches/there. Such a fetch should have updated your local branch "there", but 1.5.4 and later didn't. This should fix the breakage."

Full Story (comments: none)

Miscellaneous

How Do I Make This Hard to Misuse?

Kernel hacker Rusty Russell has some thoughts on how to make APIs hard to misuse. The idea is that in addition to making APIs easier to use, that they also be made hard to misuse. "So I've created a 'best' to 'worst' list: my hope is that by putting 'hard to misuse' on one axis in our mental graphs, we can at least make informed decisions about tradeoffs like 'hard to misuse' vs 'optimal'."

Comments (29 posted)

Page editor: Forrest Cook
Next page: Linux in the news>>


Copyright © 2008, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds