Rockbox Player Little

Objectives

Make a simple and cheap DIY kind of prototype for be able to promote the Rockbox Player idea near to the companies that already produce and sells online electronics systems as the Olimex or Sparkfun.

We are a few individuals who believes on possibility of building our own DAP from the scratch, since the hardware to the firmware. We don't own any electronics company and as that we just can build our hardware using cheap and world available electronics parts - final prototype will not look as good as any commercial device. We believe that then we can convince some electronics companies to build and sell our own player to us but with all the characteristic as any commercial device.

Hardware

The MCU is one ARM9 operating at 180MHz (maximum). The memories are: 64MB SDRAM and 2MB DataFlash memory. The Rockbox bootloader will be stored on the 2MB DataFlash memory while the Rockbox firmware and audio data files will the stored on SD flash memory card.

Software

This section describes the RockBox port for the hardware. We are hosting our patch against Rockbox source here.

Bootstrap

Status - done.

The AT91SAM9260? will boot directly from DataFlash memory. A program called Bootstrap will run on boot and will launch another application - the Rockbox bootloader. Bootstrap also initializes the SDRAM and various peripherals of MCU.

The Bootstrap is already tested and actually launches applications that are flashed on DataFlash memory starting at address 0x1000.

Rockbox bootloader

The Rockbox bootloader is an application that will be launched by bootstrap.

The following was code was implemented:

/* Initialize system */ done.system_init(); /* to initialize some peripherals. Bootstrap already did initialize the SDRAM controller, the SDRAM, etc, so not need to do much on this stage. */

/* Initialize the kernel */ done.kernel_init(); /* to initialize the Rockbox kernel. Kernel sleep() function is used on LCD, buttons and ATA drivers.*/

/* Initialize the LCD */ done.spi_init(); /* to initialize SPI bus communications. We use SPI to communicate with the LCD. */lcd_init(); /* to initialize the LCD. */