SDCC in open source

SDCC is an open source retargettable, optimizing ANSI - C compiler. The current version targets the Intel 8051, Zilog Z80, Dallas 80C390, Motorola HC08 and Microchip PIC MCUs.

The latest file releases

Package Release Date Notes / Monitor Downloads

sdcc 2.9.0 March 22, 2009 Release notes Monitor this package Download
sdcc-doc 2.9.0 March 22, 2009 Release notes Monitor this package Download
sdcc-linux-ppc 2.3.0 September 29, 2001 Release notes Monitor this package Download
sdcc-linux-x86 2.9.0 March 22, 2009 Release notes Monitor this package Download
sdcc-macosx 2.9.0 March 22, 2009 Release notes Monitor this package Download
sdcc-win32 2.9.0 March 22, 2009 Release notes Monitor this package Download
SuSE Linux rpm 2.4.0 March 9, 2004 Release notes Monitor this package Download

Using the Free SDCC C Compiler to Develop Firmware for the DS89C430/450 Family of Microcontrollers

Abstract: The SDCC (Small Devices C Compiler) is a free C compiler developed for 8-bit microcontrollers. This application note demonstrates how to use the SDCC to develop firmware for the DS89C430/450 family of ultra-high-speed 8051-compatible microcontrollers. Installing the SDCC free C compiler is also explained.

Introduction

The SDCC (Small Devices C Compiler) is a free C compiler developed for 8-bit microcontrollers. Although compatible with many different architectures, the SDCC compiler has extended support for devices based on the 8051-core. This application note will focus on using the SDCC to develop firmware for the DS89C430/450 family of ultra-high-speed 8051-compatible microcontrollers from Maxim/Dallas Semiconductor.

The SDCC is a command line, firmware development tool that includes a preprocessor, a compiler, an assembler, a linker, and an optimizer. Also bundled with the install file is the SDCDB, a source level debugger similar to gdb (GNU Debugger). When an error-free program is compiled and linked with the SDCC, a Load Module in Intel hex format is created. This file can then be loaded into the DS89C430/450 microcontroller's flash memory using a Serial Loader. (See DS89C430/450 documentation and application notes for details on downloading firmware to device).

For the most up-to-date information about the SDCC, visit http://sdcc.sourceforge.net or read the SDCC manual, sdccman.pdf (copied to your hard drive during installation). Questions can also be submitted to the online SDCC message forum or mailing list which can be found in the "Support" section of the SDCC webpage.

Installing the SDCC Free C Compiler

To install the SDCC, download the latest version from the "Download" section of the SDCC website at http://sdcc.sourceforge.net. Although nightly builds of the software are available, it is usually safest to download the latest fully tested release version.

On the "Download" page, builds of the SDCC are available for several different operating systems. If you are working on a PC running Microsoft Windows, download the win32 self-executing SDCC install file and run the executable.

When installing the program, a prompt will appear asking to add the directory containing the program binaries to your path. This is recommended, and the remainder of this application note will assume that the user has done so.

Compiling a Simple C Program with the SDCC Compiler

To ensure that the SDCC installed correctly on your hard drive, open a Command Prompt and type sdcc --version. Press [Enter], and the text displayed in Figure 1 should appear in the window (actual text will depend on the SDCC version that you downloaded):

Figure 1. Verifying the correct installation of the SDCC by performing a version check.
Figure 1. Verifying the correct installation of the SDCC by performing a version check.

Enhanced Small Device Interface (ESDI)

Enhanced Small Device Interface (ESDI)

The first attempt at improving the original ST-506/ST-412 hard disk interface was the Enhanced Small Device Interface or ESDI. ESDI was developed in the mid-1980s by a consortium of hard disk manufacturers led by Maxtor. It was eventually codified as an ANSI standard; the peak of its popularity was in the late 1980s.

ESDI improved on ST-506/ST-412 in several ways. It moved some drive controller functions to the hard disk from the controller card, eliminating some of the reliability problems associated with its predecessor. It had a maximum theoretical bandwidth of 24 Mbits/second (fairly fast for those days), though in practice the limit was about half of that. There were other added features and small performance enhancements as well. Its primary design still had almost all of the intelligence on the controller and not on the hard disk.

While ESDI was a real improvement over the older ST-506/ST-412 interface, it was "too little, too late" in a lot of ways. In the late 1980s ESDI suffered under competition from IDE/ATA in the mainstream market and from SCSI in the high-end market, both of which offered significant advantages over ESDI, such as simpler configuration, lower cost and improved performance. As a result, by the early 1990s ESDI had been all but wiped off the interface map.

Latest Release of Openwrt

The second (and final) release candidate for the upcoming 8.09 release is ready for testing now.
You can find it at http://downloads.openwrt.org/kamikaze/8.09_RC2

Changes since RC1 include:
* Stability fixes for MadWiFi
* Firewall fixes
* Lots of package updates
* PPPoE hotplug fixes
* Atheros AR231x ethernet driver fixes
* PowerPC fixes
* ADM5120 support for both little and big endian
* AVR32 compiler upgrade
* Fixes for Broadcom 2.4 (stability, support for fixed bssid in ad-hoc mode)
* Improved ethernet driver performance for Broadcom 47xx (Linux 2.4 and 2.6)

Known issue:

The workaround for broken Path MTU detection in some buggy ISPs is now disabled by default,
because it produced a significant throughput decrease for TCP.

If you have problems connecting to some web sites, or form submission no longer works,
you can enable it again, either manually in /etc/config/firewall (see comments),
or in the web interface under 'Network -> Firewall -> Traffic Control'

VinChip Systems released VinRZ5110 32-bit RISC processor in india

'First' India-developed 32-bit processor debuts

VinChip Systems Inc. has released VinRZ5110 32-bit RISC processor core, which it claims is the first 32-bit processor to be developed in India. It has a DSP-centric instruction set and low gate count for low power consumption, the company said.

VinChip, which has a design center in Chennai, India, said the VinRZ5110 is suitable for use in applications including mass storage, automotive control, wireless devices and audio/video encoders and decoders. It is also suitable for FPGA-based embedded systems.

The core has been developed with on-chip debug logic based on OpenOCD, which also supports in-system programming via JTAG. An optional module, the VinSMDP, provides static and dynamic capture of debug data and in-system programming over USB 2.0 achieving speeds of 480-Mbits per second. The VinSMDP can also multi-task as a USB port for user tasks on the AHB bus.

The VinRZ5110 core has been ported to binutils 2.19, gcc 4.3.2, gdb 6.8 and Eclipse IDE. Support for virtual prototyping has been provided by the Open Virtual platform (OVP) and OVPsim simulator from Imperas Ltd. (Thame, England). The instruction set simulator (ISS) built using OVPsim enables development of embedded software ahead of the hardware production cycle.

Simon Davidmann, CEO of Imperas, said that the tools include providing the instruction set simulator using Open Virtual Platforms modeling technology, so that virtual platforms based on the VinRZ5110 can be built using both OVP and SystemC/TLM-2.0 simulators.

Vxworks Real Time Operating System (RTOS)

Vxworks Real Time Operating System - Dma Error Vxworks, Vxworks Pci Express, Vxworks Programers Guide, Vxworks Telnet Port

Vxworks Real Time Operating System (RTOS)

VxWorks is a proprietary , real-time operating system developed by Wind River Systems of Alameda , California , USA in 1987 . The key features of the current OS are:

  • Binary, counting, and mutual exclusion semaphores with priority inheritance
  • Error handling framework
  • Fast, flexible inter-process communication including TIPC
  • File system .
  • Full ANSI compliance and enhanced C++ features for exception handling and template support
  • IPv6 networking stack
  • Local and distributed message queues
  • Memory protection to isolate user applications from the kernel
  • Multitasking kernel with preemptive and round-robin scheduling and fast interrupt response
  • POSIX PSE52 certified conformance
  • SMP support
  • VxSim simulator
vxworks

  • The VxWorks Shell - Perhaps will have better chance of success if we take one step at a time. The VxWorks shell is the command-line interface which allows you to interact directly with VxWorks. You may use commands to load programs

  • Filesystems in VxWorks - Now that we've considered some of the basic stuff and configuration details, let's look at how we might do When you boot VxWorks over the network, an automatic network filesystem entry is created based on the boot parameters.

  • The VxWorks Symbol Table - One-on-one guide on. Since VxWorks performs load-time linking, it must maintain a symbol table. A "symbol" in this context is a named value.

Digital and Analog Circuit Simulation with Ksimus

I took a Computer Logic Design class in college, so when I stumbled upon the Ksimus Circuit Simulator, I was intrigued. At the risk of waxing nostalgic, I remember what it was like to build circuits in school. We'd spend hours the night before the lab designing our circuit, being careful to list each interconnection. We had to keep track of which pin numbers on each chip were to be connected. Then, we took our design and our box of parts to the lab. When we got to the lab, we were given a breadboard and a power supply. Then began the tedium of connecting everything up.

I will admit to miswiring at least one circuit and burning up a chip or two. Those little buggers can get hot! Then, there were times when our original design just simply didn't work. In those cases, we had to redesign our project and get it built in time to be graded. Even though the class was fun, the labs were very stressful. Fortunately, we have better tools now.

Ksimus is a circuit simulator that allows you to build digital and analog circuits with discrete components and simulate them in real time. Ksimus does have its limitations though. Ksimus doesn't supply any of the larger circuits like addressable memory or 8-bit adders, but you can build one for yourself and package it up as a Ksimus module. Also, because Ksimus provides only discrete logic components, you're probably not going to be designing a quad-core microprocessor or anything moderately complex. That said, you certainly can use Ksimus to learn about computer logic design, and you even can use it to simulate basic logic circuits. But, best of all, it's just fun to play with!

Ksimus' user interface is fairly straightforward. You have a list of components on the left side of the window and a canvas on the right side. To place a component on the canvas, you click on the component and then click on the canvas where you want the component to appear. Making a connection between two devices is also intuitive. You place your cursor on the first pin, and you'll notice that the cursor changes. Then, you hold the left mouse button down and drag the cursor to the second pin and release the button. I had been playing with Ksimus for some time before I realized what the cursor was changing to when I made an interconnection; it was turning into a tiny wire wrap tool! Ksimus is smart enough not to let you connect two inputs or two outputs, so you don't need to worry about burning up your virtual logic gates!

When you've built a design you want to test, you can start the simulation from the menu bar at the top.

The Ksimus program is easy to use, and there are lots of components available for use in your designs. Obviously, any digital logic simulator will have the typical AND, OR, NOT and XOR gates.

Many of the components are configurable. For example, the counter component can be configured to be anything from a 3-bit counter to a 16-bit counter. There also is a variety of Flip Flops included in Ksimus, including JK, RS and D Flip Flops. In fact, there are two different D Flip Flops: one is a single gate, and the other is a module with anywhere between 1 and 26 gates. With the addition of some extra addressing logic, which is included with Ksimus, you can build your own addressable memory almost trivially. Ksimus also provides both a variable size Muliplexer as well as a Demultiplexer.

Ksimus allows you to provide input for your circuits from various sources. One of the most basic input sources is the clock generator. The clock generator allows you to configure initial startup delay as well as on-time and off-time duty cycle. You also can include buttons that can be “pushed” by the user during simulation. Ksimus includes both a momentary contact/disconnect switch and a latching switch, and these switches don't bounce like real switches do! Of course, there also are the boolean true and false values that can be provided as constant inputs to your circuit.

Logic circuits wouldn't be any fun if they didn't produce any output, and Ksimus provides users with the LED output as well as a 7 Segment Display, with built-in decoder. To use the 7-Segment Display, you simply provide the appropriate binary value on its four input lines, and it displays the appropriate number. You also can use the Data Recorder and Text Recorder as outputs for your circuit. The Data Recorder is essentially a multi-channel logic probe. You simply add (and connect) input channels to the Recorder and run your simulation. Then, you can open up the probe's graph and watch the display in real time. The Text Recorder performs the same function, except that it logs to an external file for later analysis.


Figure 1 shows a simple circuit I built in just a couple minutes. This circuit uses a clock signal to drive a counter. The output of the counter is used as an address for a demultiplexer that simply drives a row of LEDs. The circuit simply strobes the LEDs in order—a simple but effective demonstration.

So far, you've seen a pretty detailed rundown on the digital capabilities of Ksimus, but the program also has quite a few floating-point or analog capabilities. Using the wave-form generator and various arithmetic operators, I was able to build up some fairly complex wave-forms to supply to my circuit. Using these functions would let you create a model of a physical phenomenon and interface it with your digital circuit for simulation.

The floating-point arithmetic components include adders, subtractors, dividers and multipliers. You also can use exponential, log and trigonometric functions in your simulation.

The floating-point comparison components allow you to compare two analog signals and output an appropriate digital logic level. The Data Selector component lets you use a digital address to select one of many analog signals. You also can create inputs that have a constant analog value. From these components, it's easy to see how you could build an Analog-to-Digital converter or a Digital-to-Analog converter.

The only variable input I found useful for analog input was the Slider. The Slider allows you to vary the output voltage manually during the simulation. You can configure the upper and lower limits of the output too.


As you can see, Ksimus' analog capabilities are fairly complete. Figure 2 shows an analog circuit I built to demonstrate the Slider input as well as the Data Recorder. In this circuit, I have a sine wave and an analog slider that ranges from -1 to 1. I send these two outputs into the two comparison operators and get a digital output that I use to drive a couple LEDs. I've also included a label that displays the actual value being output by the slider. Finally, you can see the various wave forms and logic states in the graph windows. When the simulation is running, I can adjust the slider to change the relative duty cycle of the two LEDs.

So, there you have it. Ksimus is a great laboratory for exploring digital logic as well as analog interfacing problems. And like I said earlier, it's a lot of fun to play with!