[fpc-pascal]Embedded Linux Journal - ThinkNIC Contest

Jeff Wormsley daworm at cdc.net
Wed May 16 20:03:57 CEST 2001

  The current (May/June) issue of the Embedded Linux Journal (http://embedded.linuxjournal.com) is running a contest using the ThinkNIC (http://www.thinknic.com) internet appliance as an embedded system.  I am thinking of entering this contest using FreePascal as the programming language, and would like to know if anyone could make any recommendations or would like to help (I don't think I could share the prizes if we won, though. ;^) )

  I hope this message isn't off topic, but perhaps others in the FreePascal community might want to enter as well, and if one of us made it as a finalist, then it would be great publicity!

  Anyway, here is what I plan to submit as my entry.  If anyone wants to give me some pointers on cleaning it up, I would appreciate it.

  Jeff Wormsley

- - -

  I am seriously considering entering the NIC contest, but I am unsure if my limited Linux experience will allow me to complete it.  But, with the availability of resources such as the Embedded Linux Journal and many newsgroups and websites out there, I think I may be able to do it.  So, here's my entry.  We'll see!

1. What is the title for your project?

Linux Digital Jukebox

The concept is to build a replacement for bulky, expensive, hard to maintain jukeboxes (this is NOT yet another home/car MP3 jukebox!) by using commercial, off the shelf products and employing the Linux operating system.

2. What need or desire will your embbeded Linux project satisfy?

Tranditional jukebox systems employ complicated mechanical systems for changing CD's or 45's.  These systems are expensive and very prone to mechanical breakdown.  Loading and unloading these mechanical changer units is also a difficult and error prone procedure.  Also, the control boards in these units are expensive to replace when damaged, and are difficult to update.

By replacing the control system with low cost, commercial off the shelf (COTS) PC components, and the mechanical changer systems with very low cost, easily replacable hard drive units, system costs can be greatly reduced while increasing reliability, capacity, and upgradeability.  The Linux operating system can control most of the needed functionality of a jukebox system "out of the box", and can easily support remote diagnostics, software upgrades, and content replacement via either dialup or broadband (preferable due to file sizes) internet connections.

The resulting system will be much smaller than a conventional jukebox, offer much quicker search times for finding selections (including category, artist, and song title lookups), cost far less than conventional jukeboxes, offer a much larger selection, and be much easier to maintain.

Bullet List

o Low cost hardware and software
o Ease of updates (via internet)
o Greater capacity (Approximately 300 CD's on a 20GB hard drive, vs typically 100 CD's per jukebox)
o Greater reliability
o Easier use by customer via genre and artist searches
o Smaller size
o Easier accounting

3. What are your qualifications for carrying out an embedded Linux project, including programming and hardware experience?

While my use of Linux has been limited (light hobby use of FreeBSD and RedHat 5.0 through 7.0), I have been a professional programmer for 10 years, working with both PC and embedded systems.  I have developed applications in C for Echelon Neuron processors with as little as 256 bytes of total space (code and data).  I have programmed in Pascal since the earliest Turbo Pascal for CP/M machines, and currently concentrate on coding with Delphi.  This experience can be leveraged into the chosen language for software development, FreePascal, which I have had experience with as well working with the Lazarus Project.  My formal education is a BSEE from the University of Tennessee, and my current job is approximately 25% embedded design related, with the remainder in back end PC systems, supporting the embedded systems, as well as smart card applications.

4. What additional hardware, if any, are you considering using?

For faster boot time, I am considering replacing the 4MB flash card with a 32MB Compact Flash card as detailed in the May/June issue.  The CD-ROM drive will be replaced by a large (20 to 40GB) hard drive used to store song files.  Since the ThinkNIC does not have parallel or serial ports, nor an ISA bus, the keyboard will be modified to control a pulse mode bill validator, using the pulse relay output to drive a keypress, and the SCROLL LOCK LED to control the validator's Bill Enable line, with interfacing circuitry in between to adapt the signal levels and timing appropriately.  To reduce cost, a standard CRT will be used for display, although an LCD panel would be more appropriate to reduce size, heat, and RF noise.

5. What software do you plan to develop?  What tools and or libraries do you plan to use?

The first generation software will provide a simple graphical interface to control the playing of songs, displaying of cover art images, and control the bill validator.  Also included will be simple accounting functions usable by the system operator.  Later versions will incorporate remote software and content updates, both via an external telnet login and via front panel access to a server based repository.  Billing and licencing issues can be incorporated into the server, for example to handle collection and reporting of RIAA public performance fees.

The software development will be done with FreePascal wherever possible, supplemented by C if required.  Libraries will include either the SVGALIB, Graph3d, or fpGFX libraries, and one of the available Linux MP3 (or other compressed digital audio) libraries.

6. What sources of information and support will you consult while carrying out your project?

Linux Embedded Journal - Information on building very small customized kernals (ie: BusyBox project) and using Compact Flash interfaces.

www.freepascal.org - Freepascal documentation and libraries.

Usenet Newsgroups with Linux and embedded system focus.

Linux websites such as the Linux Router Project that concentrate on creating very small but useful kernals.

Various books on Linux usage and development.

Considering the scope of this project, I will most likely consider creating a SourceForge project and invite other members of the FreePascal community to assist in the project, if they would like.  

- - -

More information about the fpc-pascal mailing list