Rockbox Technical Forums

Rockbox Development => New Ports => Topic started by: steveway on May 13, 2007, 09:19:55 AM

Title: Targa MP3 H2010/H3010
Post by: steveway on May 13, 2007, 09:19:55 AM
I got the 20 GB version of the MP3-Player Targa offers.
It uses eCos and the source of it is available here: http://www.targa.de/index.jsp?SID=0&NAV=1398&DOC=390&PAGE=540&PCAT=0&PROD=0&PTUBE=&PARAMS=&PARAMS2=&SPCAREA=undefined
Direct Link is here: http://www.targa.de/bilder/Targa_MP_H2010e_Cos_packages.zip
Here are the specs you can get from their site:
Quote
rech. battery       Rechargeable Li-Polymer battery for up to 12 hours run time    
Harddisc      30 GB, 1,8"   
Highlights      - Simple-to-operate file navigation
- Storage and playback of digital photos
- Portable storage device with fast USB 2.0 interface
- Built-in microphone for sound recording (dictaphone function)
Rechargeable via USB or power adapter
- USB host function for direct data transfer from digital camera or USB stick   
Display      2” TFT color display with 640 x 240 pixel resolution   
Main features audio      - Multi-equalizer with various pre-installed modes. Also manually adjustable.
- MP3, WAV, WMA-DRM playback
- ID 3 tag
- Playlist    
Main features video      Playback of Motion JPEG Video   
Card Reader      for SD Card   
Measurements (WxHxD)      65 x 108 x 16 mm    
Weight      approx. 142 g   
Type      MP3 player with 30 GB hard disk    
Connectors      USB 2.0 high speed/USB host
3.5 mm Audio Line-in
3.5 mm Audio Line-out
DC port   
Scope of delivery      Ear phones, Line-in cable, power adapter, USB cable and extension, USB host cable   
Warranty      36 months
Considering that the source-code is freely available someone with knowledge should be easily able to get the needed technical information to modify Rockbox to be able to run on it.
I'm using Ubuntu Linux 7.04 and I am willing to try out whatever you want if it doesn't kill the device.
Just tell me what to do.
Title: Re: Targa MP3 H2010/H3010
Post by: saratoga on May 13, 2007, 01:15:16 PM
Start with the instructions in this forum's sticky, and go from there.
Title: Re: Targa MP3 H2010/H3010
Post by: steveway on May 14, 2007, 03:15:33 PM
Ugh..I have no real programming experience but I'll look what I can find out.
With the source code of the used eCos OS there shouldn't be any need to rip it apart.
I managed to get this information here:

Quote
steveway@steveway-laptop:~/Desktop/packages$ tcl ecosadmin.tcl -list
ecosadmin warning: package CYGPKG_HAL_CALM16_CORE at /home/steveway/Desktop/packages/hal/calmrisc16/core missing
ecosadmin warning: package CYGPKG_HAL_CALM32_CORE at /home/steveway/Desktop/packages/hal/calmrisc32/core missing
CYGPKG_HAL: v1_0
CYGPKG_INFRA: v1_0
CYGPKG_IO: v1_0
CYGPKG_IO_PCI: v1_0
CYGPKG_KERNEL: v1_0
CYGPKG_MEMALLOC: v1_0
CYGPKG_ISOINFRA: v1_0
CYGPKG_LIBC_STRING: v1_0
CYGPKG_HAL_I386: v1_0
CYGPKG_HAL_I386_GENERIC: v1_0
CYGPKG_HAL_I386_PCMB: v1_0
CYGPKG_HAL_I386_PC: v1_0
CYGPKG_HAL_SYNTH: v1_0
CYGPKG_HAL_SYNTH_I386: v1_0
CYGPKG_HAL_MIPS: v1_0
CYGPKG_HAL_MIPS_MIPS32: v1_0
CYGPKG_HAL_MIPS_MALTA: v1_0
CYGPKG_HAL_CALM16_CORE:
CYGPKG_HAL_CALM32_CORE:
CYGPKG_DEVS_DISK_ECOSYNTH: v1_0
CYGPKG_ERROR: v1_0
CYGPKG_IO_FILEIO: v1_0
CYGPKG_LINUX_COMPAT: v1_0
CYGPKG_ASMT_OSAL: v1_0
CYGPKG_ASMT_OSAL_COMMON: v1_0
This  sounds like the packages it uses... I didn't change anything so the warnings are not my fault.
There is a System Folder besides the others (Music, Photos, Videos...) wich contains the folowing files:
Quote
DB_LINK.TBL
DB_MF.TBL
DB_STR.TBL
DEVCERT.DAT
HD1-MP.INI
LICENSE.SYS
MIMIC.INI
MPF.INF
MSCPRP.INI
MTPPROP.PRP
SETTING.INI
I'll update now and look what is happening.
There is also a folder called UPDATE, in wich I hope the Updater unpacks the compiled update wich then replaces the old system.
If it does it like I think then there is no real problem to solve.
So lets do an update.
Agh...the update-programm doesn't work, I wrote the a mail I'll tell you if I get a reply.
Title: Re: Targa MP3 H2010/H3010
Post by: saratoga on May 14, 2007, 03:43:08 PM
Source code or not, figuring out what CPU it uses is still a logical first step.  Its going to be hard to compile anything without knowing which compiler to use.
Title: Re: Targa MP3 H2010/H3010
Post by: steveway on May 14, 2007, 05:24:55 PM
Ok, I opened it carefully and now I see some chips and one says:
Quote
A logo that looks like ASMT
ASM3135-04 TO
FK6797101D 0612
Is that the processor?
Ok, I put it back together cause it's late here and luckily it still works.
I would have made a picture but that board is below the harddrive and hard to acess.
I'll try it later.
EDIT: Thanks for the help, and I hope you'll keep helping me on that cause I have only limited knowledge on this but a big will.
EDIT: I found something interesting, I think. In the pkgconf directory there are two files wich sound important:
1. is mssccprj.scc
It contains the following content:
Quote
SCC = This is a Source Code Control file

[rules.mak]
SCC_Aux_Path = "\\asmt-svr1\vss_sw$\"
SCC_Project_Name = "$/Project/ASM1310_3131/packages/pkgconf", QIFAAAAA
2. is rules.mak
It contains the following content:
Quote
#=============================================================================
#
#    rules.mak
#
#    Generic rules for inclusion by all package makefiles.
#
#=============================================================================
#####ECOSGPLCOPYRIGHTBEGIN####
## -------------------------------------------
## This file is part of eCos, the Embedded Configurable Operating System.
## Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.
##
## eCos is free software; you can redistribute it and/or modify it under
## the terms of the GNU General Public License as published by the Free
## Software Foundation; either version 2 or (at your option) any later version.
##
## eCos is distributed in the hope that it will be useful, but WITHOUT ANY
## WARRANTY; without even the implied warranty of MERCHANTABILITY or
## FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
## for more details.
##
## You should have received a copy of the GNU General Public License along
## with eCos; if not, write to the Free Software Foundation, Inc.,
## 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
##
## As a special exception, if other files instantiate templates or use macros
## or inline functions from this file, or you compile this file and link it
## with other works to produce a work based on this file, this file does not
## by itself cause the resulting work to be covered by the GNU General Public
## License. However the source code for this file must still be made available
## in accordance with section (3) of the GNU General Public License.
##
## This exception does not invalidate any other reasons why a work based on
## this file might be covered by the GNU General Public License.
##
## Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.
## at http://sources.redhat.com/ecos/ecos-license/
## -------------------------------------------
#####ECOSGPLCOPYRIGHTEND####
#=============================================================================
#####DESCRIPTIONBEGIN####
#
# Author(s):     jld
# Contributors:  bartv
# Date:          1999-11-04
# Purpose:       Generic rules for inclusion by all package makefiles
# Description:  
#
#####DESCRIPTIONEND####
#=============================================================================

# FIXME: This definition belongs in the top-level makefile.
export HOST_CC := gcc

.PHONY: default build clean tests headers mlt_headers

# include any dependency rules generated previously
ifneq ($(wildcard *.deps),)
include $(wildcard *.deps)
endif

# GCC since 2.95 does -finit-priority by default so remove it from old HALs
CFLAGS := $(subst -finit-priority,,$(CFLAGS))

# -fvtable-gc is known to be broken in all recent GCC.
CFLAGS := $(subst -fvtable-gc,,$(CFLAGS))

# To support more recent GCC whilst preserving existing behaviour, we need
# to increase the inlining limit globally from the default 600. Note this
# will break GCC 2.95 based tools and earlier. You must use "make OLDGCC=1"
# to avoid this.
ifneq ($(OLDGCC),1)
CFLAGS := -finline-limit=7000 $(CFLAGS)
endif

# Separate C++ flags out from C flags.
ACTUAL_CFLAGS = $(CFLAGS)
ACTUAL_CFLAGS := $(subst -fno-rtti,,$(ACTUAL_CFLAGS))
ACTUAL_CFLAGS := $(subst -frtti,,$(ACTUAL_CFLAGS))
ACTUAL_CFLAGS := $(subst -Woverloaded-virtual,,$(ACTUAL_CFLAGS))
ACTUAL_CFLAGS := $(subst -fvtable-gc,,$(ACTUAL_CFLAGS))

ACTUAL_CXXFLAGS = $(CFLAGS)

# pattern matching rules to generate a library object from source code
# object filenames are prefixed to avoid name clashes
# a single dependency rule is generated (file extension = ".o.d")
%.o.d : %.c
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) > $@
   @rm $(@:.o.d=.tmp)

%.o.d : %.cxx
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) > $@
   @rm $(@:.o.d=.tmp)

%.o.d : %.cpp
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) > $@
   @rm $(@:.o.d=.tmp)

%.o.d : %.S
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif   
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.o.d=.tmp) -o $(dir $@)$(OBJECT_PREFIX)_$(notdir $(@:.o.d=.o)) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.o.d=.tmp) > $@
   @rm $(@:.o.d=.tmp)

# pattern matching rules to generate a test object from source code
# object filenames are not prefixed
# a single dependency rule is generated (file extension = ".d")
%.d : %.c
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) > $@
   @rm $(@:.d=.tmp)

%.d : %.cxx
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) > $@
   @rm $(@:.d=.tmp)

%.d : %.cpp
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CXXFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) > $@
   @rm $(@:.d=.tmp)

%.d : %.S
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif   
   $(CC) -c $(INCLUDE_PATH) -I$(dir $<) $(ACTUAL_CFLAGS) -Wp,-MD,$(@:.d=.tmp) -o $(@:.d=.o) $<
   @sed -e '/^ *\\/d' -e "s#.*: #$@: #" $(@:.d=.tmp) > $@
   @rm $(@:.d=.tmp)

# rule to generate a test executable from object code
$(PREFIX)/tests/$(PACKAGE)/%$(EXEEXT): %.d $(wildcard $(PREFIX)/lib/target.ld) $(wildcard $(PREFIX)/lib/*.[ao])
ifeq ($(HOST),CYGWIN)
   @mkdir -p `cygpath -w "$(dir $@)" | sed "s@\\\\\\\\@/@g"`
else
   @mkdir -p $(dir $@)
endif   
ifneq ($(IGNORE_LINK_ERRORS),)
   -$(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(<:.d=.o) $(LDFLAGS)
else
   $(CC) -L$(PREFIX)/lib -Ttarget.ld -o $@ $(<:.d=.o) $(LDFLAGS)
endif

# rule to generate all tests and create a dependency file "tests.deps" by
# concatenating the individual dependency rule files (file extension = ".d")
# generated during compilation
tests: tests.stamp

TESTS := $(TESTS:.cpp=)
TESTS := $(TESTS:.cxx=)
TESTS := $(TESTS:.c=)
TESTS := $(TESTS:.S=)
tests.stamp: $(foreach target,$(TESTS),$(target).d $(PREFIX)/tests/$(PACKAGE)/$(target)$(EXEEXT))
ifneq ($(strip $(TESTS)),)
   @cat $(TESTS:%=%.d) > $(@:.stamp=.deps)
endif
   @touch $@

# rule to clean the build tree
clean:
   @find . -type f -print | grep -v makefile | xargs rm -f

# rule to copy MLT files
mlt_headers: $(foreach x,$(MLT),$(PREFIX)/include/pkgconf/$(notdir $x))

$(foreach x,$(MLT),$(PREFIX)/include/pkgconf/$(notdir $x)): $(MLT)
   @cp $(dir $<)/$(notdir $@) $(PREFIX)/include/pkgconf
   @chmod u+w $(PREFIX)/include/pkgconf/$(notdir $@)

# end of file
Can you get the needed parameters from that?
Well I allready posted the link to the source, if there are things in it wich we could need you and the other developers should be able to find it.
I keep seeking what I can find, tell me what you need, what I should do and we will hopefully be able to port Rockbox to this thing.
Title: Re: Targa MP3 H2010/H3010
Post by: steveway on May 15, 2007, 10:55:18 AM
Sorry for the double post but I have to tell you this:
Success! Well I didn't managed to port Rockbox but I made one major step today.
About ten minutes ago a guy from Targa called me on the phone.
He told me that they will put the filed needed for an upgrade on their site.
The procedur will be like this, we download the files put the into the directory called UPDATE on the player and then we only need to continue at step three of the normal update:
Quote
- Execute setup.exe, the firmware-update program starts. By pressing "Next" the firmware is transfered to the player.
- After a short time a progress-bar appears.When the update is finished, a message tells you to restart the player.
- Switch the player off and on again.
- Use Settings | General | Load Defaults to reset the player to its default-values.
Not even, that Users of almost all other Operating Systems are now able to upgrade their firmware, no we should be able to do this on the same way only with our "update".
I'm really impressed by this helpful step from Targa.
EDIT: Forgot to say that he doesn't know when they will upload the files, it could be tomorrow or in three weeks.
Title: Re: Targa MP3 H2010/H3010
Post by: steveway on May 22, 2007, 03:37:46 PM
No news from Targa but I found a site with the logo wich is on the chip:
It's in chinese so here is Googles translation: http://translate.google.com/translate?hl=en&sl=zh-TW&u=http://www.asmedia.com.tw/&sa=X&oi=translate&resnum=10&ct=result&prev=/search%3Fq%3Dasmedia%26hl%3Den%26safe%3Doff%26sa%3DG
Besides the monitor there is a chip wich seems to be this: http://www.alcormicro.com/products_detail.php?main_id=5&p_id=42
There is this Chip (The highlighted one) http://66.102.9.104/search?q=cache:ghdd02Zc0yQJ:www.hynix.com/datasheet/pdf/dram/HY5DU561622ETP(Rev1.1).pdf+hy5du561622etp-5&hl=en&ct=clnk&cd=2
Then there is a very small chip that says b4-7k and RO9 (Could be R09, sorry dunno).
I made some pictures, I hope the quality is good, Ill upload them later.
Title: Re: Targa MP3 H2010/H3010
Post by: petur on June 25, 2007, 05:55:39 AM
seems you still haven't found the CPU ;)

I saw this player some time ago in a store and hesitated at getting it seeing it was open source. But looking at the code didn't really make me much wiser (but only looked at it for a short time)
Title: Re: Targa MP3 H2010/H3010
Post by: steveway on June 28, 2007, 09:24:44 AM
I talked today, with the guy from the support.
A few days ago I pushed a little for the OS-Independent Update.
And I asked a little bit about the hardware;
The ASM3135 is indeed the CPU.
I'm gonna ask on the ecos-devel mailing list about the mssccprj.scc file.
Title: Re: Targa MP3 H2010/H3010
Post by: petur on July 16, 2007, 07:20:48 AM
I'm gonna ask on the ecos-devel mailing list about the mssccprj.scc file.
don't bother, it is a control file from MS Visual SourceSafe (versioning system like SVN)...