Embedded
PC Programming Links
provided by Warren Postma


C and C++

So far I've used C instead of C++, because C++ code tends to get bloated quickly, especially if you use a lot of inheritance, or templates. That's annoying and impractical when your program has to fit in 64K to 256K of flash disk storage.  Somebody is doing something about this, now, though:

Embedded C++:  A Proper Subset of C++ Designed for Smaller Code.  Major proponents include P.J. Plaugher, author of the Programming On Purpose column in the well respected Dr. Dobbs Journal.

Another C issue is Re-entrant Standard C Libraries.  My first product was written in straight C DOS with a few hardware level hacks to support higher resolution timers than the default PC 55 ms timer tick would allow. I am currently rewriting using uC/OS libraries to provide full multitasking.  My kernel is a single executable. uC/OS is extremely light on features. I can't start or spawn other executables, and I have no DLL capabilities yet. Another problem of having your code multitask in DOS is that the standard C libraries, and the BIOS code are both non-re-entrant. P.J. Plaugher happens to also have written some standard C libraries that are mostly reentrant. However, since Borland C++ comes with Standard C library source, I haven't decided if I have time to just hack the BC libraries or if I'll buy PJ's libraries and pay a per programmer license.


80x86 Assembly Language

The comp.lang.asm.x86 newsgroup Frequently Asked Questions (FAQ) list is the best source I have found yet for information on X86 Assembler.

The Art Of Assembly Language: A complete book on assembly language, prepared as a university course is available online in PDF format. You need Adobe Acrobat to view it. I suggest you view it online, as it's really big when printed out.

Randall Hyde's Assembler Language Resources: Lots of links, including to the book listed above.

A few books that have been recommended by fellow assembler geeks are:

Revolutionary Guide to Assembly Language : Introductory textbook on 16 bit 80x86 asssembly.   Sequel Assembly Language Master Class covers 32 bit protected mode, etc.

Mastering Turbo Assember by Tom Swan. The most mentioned classic work on 16 bit 80x86 assembly.


Embedded DOS/80x86

I haven't found the "Perfect" environment for development on single board DOS PCs yet, but I have found that there are a lot of people out there working on improvements to the way they do embedded programming. DOS is going to be around for a little while yet.  Things I have found on the web that show me that there's still a lot of activity in the DOS programming world, especially related to embedded systems.

Dissecting DOS: A neat book about DOS internals, that takes you through writing your own DOS compatible OS, complete with source code. Written by Michael Podanoffsky. From the cover: "The source code of MS-DOS is both secret and copyright-protected. Using the DOS work-alike RxDOS, created to emulate and parallel the commercial system, Dissecting DOS reveals for the first time the code-level operation of DOS. By studying the source code of RxDOS included on disk, readers will be able to understand MS-DOS's inner workings."

 

Caldera has purchased the rights to DR DOS from Novell, which purchased the product from Digital Research.  Caldera marketed the product as Open DOS 7.01, and now as DR DOS 7.02. It includes DOS kernel source code and Personal Netware  Networking, and a ROM and Embedded Toolkit has just been released.

FreeDOS: A portable free DOS clone with source code. So far no multitasking.

DJGPP Programming System: If your targets are 32 bit processing capable, there are many valuable extensions to this freely available extension of the GNU G++ compiler that let you make DOS programs that break the 640K barrier using this compiler and tool's built in 32 bit DPMI DOS EXTENDER. It is very popular for games programming, but it is also great for embedded programming. Multithreading libraries, and GUI Libraries have all been written already.
Caveat: Won't generate 16 bit real-mode 8086/80186/80286 code

PharLap TNT Embedded Toolsuite:   These guys made the most well known DOS extenders back when almost all games were still written in DOS. Now they make two soft realtime kernel products. The ETS kernel is a protected mode kernel that can boot from ROM without DOS, or bootstrap from a loader program within DOS.  This toolkit also allows you to write DLLs for DOS, and other nice things. Caveat: 386 protected mode is not fully implemented; multiple tasks run in a common memory space, without memory protection from each other.

 


PC Hardware

Dick Perron's PC Hardware Pages:   Index of detailed information on various PC hardware devices, including motherboard and peripheral hardware.

HELPPC: Indispensible command line reference information program. If you can't remember what the base address or IRQ of COM2 is, or something like that, you need this little utility.


Serial Communications

The CTS Serial FAQ:  A lot of serial port and serial programming information in one handy spot.

The Computer Journal (TCJ) Serial Communications Page:  A PC and programming publication with a special interest in DOS, embedded systems, and older technologies in general.

Computer and Communications Search Page: An index specific to serial communications.

Introduction to RS-232, RS-422, and V.35 : Technical introduction to the differences between these three signalling standards.

See also HELPPC in the PC Hardware Section!


General Embedded Systems Development Topics

The Ganssle Group: Independant embedded systems programming consultant. Offers courses on embedded systems programming. This guy also wrote a book called The Art of Embedded Systems Programming. Looks neat, although I haven't read it yet.

Niall Murphy's Embedded User Interface Page: No matter what you're developing, you should give some thought to your user interface. This fellow has written a book on the subject.  I haven't read it, but the web site is worth a read.


Email me about any broken links or any new information at embed@geocities.com