skip navigational linksPJRC
Shopping Cart Download Website
Home Products Teensy Blog Forum
You are here: MP3 Player FAQ #2

PJRC Store
Main Board, $150
LCD & Pushbuttons, $42
LCD/Backlight/PB, $77
IDE Cable, $9
Complete Parts List
MP3 Player
Main Page
Detailed Info
User Photo Gallery
Connecting The Board
Firmware Download
Side Projects
Technical Docs
Freq. Asked Questions
selected FAQ #2
News And Updates

Frequently Asked Questions

These are the less frequently asked questions.
Here is the list of the most frequently asked questions.

What happens if my drive has non-MP3 files?

The firmware ignores all files that do not have a .MP3 extension. Version 0.1 only looks for files in the main directory. Planned for the near future is a firmware rev that will also look into 2-3 levels of sub-directories. Later (when the DRAM support is added and the LCD display is available), this sub-directory support will intergrate with on-screen navigation and playlist features.

How do I build/compile the code? What software is required?

First of all, the firmware download page has both downloadable HEX files as well as source code, so if you only need to compile the code if you want to make your own changes or fiddle with it.

The firmware source comes with a README file that some some instructions. To build the code, you'll need the as31 assembler, make, and perl. The latter two come with almost all linux systems, and I do all my development on a Red Hat 7.2 Linux system, so linux really is the easiest way to go. Upcoming firmware will include C code, that will require SDCC (available for free, GPL'd). It is possible to build the firmware on windows. Chris Brinton provided these instructions for setting up the windows based build environment.

Is it possible to add ethernet?

While it's possible in theory, there are some practical issues. Ethernet probably won't happen anytime soon. Here's some of the challenges that'll need to be met:

Adding ethernet would mean making a custom designed ethernet card to interface with the 34 pin bus expansion connector. The board is controlled by a low speed 8051 type microcontroller. The advantage of this MCU is low power, low cost, external code and data bus, and it's readily available from multiple vendors (compare w/ Atmel's AVR, which is on allocation!) Ethernet cards seem cheap and easy these days, but that's because the IC manufacturer's make a "no glue" bus interface on their chips to directly connect to a PCI bus. The bus on the board is nothing like PCI, and it's not even much like good 'ole ISA. A high intgration ISA bus chip like the Cirrus CS8920A or AMD 89C961A would probably be needed. That's 10 Mbps only, no fast ethernet. Glue logic will still be needed, for control signals and 8/16 bit bus sizes. This will probably turn into a CPLD to avoid using lots of chips. Some sort of way to get the 8051 to give up it's bus will probably be required, and even then a DMA controller will need to be added inside the xilinx chip to rapidly move the packet from the ethernet chip to the DRAM (read: a lot of tough design work). The 8051 relinquishing its bus will have to be implemented in code, so there'll be a huge latency (15-40 µs) to set up each data transfer. Having all that hard work, the board will have ethernet, but a network protocol will still be requried. If this is to be inside the 8051, it'll need to be fairly small, as there is only 96k of code space in the flash (32k of the 128k is needed for non-code usage), and some of that 96k is needed for the player itself, so the protocol stack needs to be simple. The CPU is very slow, but the good news is that it has a lot of free time available for these kind of things (will this remain the case as complex LCD user-interface code is added?). Developing a workable network stack for this environment will be a challenge. IP/UDP for a TFTP server might be do-able (without IP fragmentation), but a full TCP/IP stack with standard FTP server will probably not be feasible.

The process of adding ethernet and a network stack is so hard that it'd probably be easier to design a whole new player (without the low power usage for batteries), using a DragonBall processor that can run Linux (where you get a very nice network stack that already works!) It'd look something like the uClinux SIMM. A project like this would lose the lower power usage and would end up being more expensive. It would also have the high density surface mount chips, which doesn't make for a reasonable do-it-yourself kit.

Can I have a schematic diagram, board layout, parts list, etc?

YES.

These things are available in the technical documentation section. The parts list is broken into many short lists that correspond to the bags that we use the package the unassembled kit. These are shown on each of the kit assembly instruction pages.

How about a flowchart and block diagram (for my student project?)

Perhaps someday I will make some block diagrams and describe in more detail some of the hardware design decisions and tradeoffs, but I never plan to create flowcharts for the firmware. As a student using this design, you could actually learn quite a bit by reading the source code to understand how it works. This site provides a lot of information to help you, but if your assignment has an arbitrary requirement for firmware flow charts (as most seem to), you will have to do some work on your own to understand the code and create these flow charts yourself.... and you might learn something along the way :)

Please do not email asking for these, particularily if your student project is behind schedule (left to the 11th hour). If you are a desparate student who's left most of the project to the last minute, your best email-request chance is to lie and pretend like you're actually a dedicated hobbist who's put a tremendous effort into the project and really needs a bit of help. Having actually paid for an assembled board or unassembled kit also greatly improves your chances (mentioning your order ID number is a good idea). Questions like "why is that resistor 1K" or "why doesn't the FAT32 code directly call the IDE driver" are much better than "I need some description of XXX to copy-n-paste into my paper that's due in 4 days" !!

Some student projects have a scope of work where using this design is legitimate, like this legitimate student project where they tried to write ATAPI drivers. Many papers merely report on an existing design, which is also an excellent use, and you can learn a lot as this design is quite open.

Student projects where the design of original hardware is the objective should avoid using this mp3 player. Ethical issues aside, this design is much more sophisticated than a typical student project. Any student who uses this design and calls it their own will have a difficult time answering questions about the custom designed DRAM/DMA controller, which is far beyond what a group of students could accomplish in a couple months. This older design is realistic for a student project, and it has a complete schematic available. It wouldn't be hard to convert that design to the STA013/CS4334, using the How To Use The STA013 page (that also includes working code). You are free to use the on-line material from either design for a non-commercial project. Please take a moment to choose wisely.

Laptop hard drives are too expensive...

Unlike 3.5 inch drives, there seems to be a wide range of prices on the market, for the identical drives. You can save yourself quite a bit of money or get more storage capacity by doing a bit of shopping.

Sept 25, 2000: The smaller laptop drives (4 to 6 gigs) seem to run between $120 to $150. Larger capacity (10 to 15 gigs) seems can be found from $200 to $250, and very large drives at 30 gigs from IBM are about $500.

Here are some vendors with competitive prices:

Usually the very lowest prices can be found at Price Watch (click on their "Notebook Drives" link... it's frame based so we can't link you directly to that page). But beware, many of the vendors with rock-bottom prices listed on pricewatch will attempt to make up their losses with excessive shipping charges. They also tend to have minimal staff for customer service and some will claim an item is in stock when in fact they do not have it yet but a delivery is scheduled. You might want to check the vendors at Reseller Ratings before choosing which one. (thanks to David Gillham for suggesting the Reseller Ratings link).

Laptop drives are actually made by IBM, Hitachi, and Toshiba, so you'll need to visit these manufacturers if you're looking for technical info about their drives. For using the laptop drive inside your PC, you'll need a cable converter and bracket. I am also planning a removable drive kit, which will offer a converter cable and hardware to make it easy to put the player (with the drive) into your PC.

Have you seen Ogg Vorbis, and what about MP3 royalties?

Vorbis is at an early stage of development. We did not know of its existance until this player's design was nearly complete. It looks like Vorbis has a bright future in the streaming market. As far as displacing MP3 with consumers and file sharing, it remains to be seen if that'll happen. This player is designed so that you put the drive into your PC and just copy all the existing files onto it, so it really needs to support whatever format the files happen to be on the user's drive. Today that's MP3 and it is not Ogg Vorbis.

The player uses the STA013 chip. The royalty is rolled up into the price of this chip, so every one of our players has the royalty properly paid. Even without the royalty, the STA013 seems to be the most cost effective choice.


MP3 Player, (Less) Frequently Asked Questions, Paul Stoffregen.
http://www.pjrc.com/tech/mp3/less_faq.html
Last updated: February 23, 2005
Questions, Comments?? <paul@pjrc.com>