Sonntag, 30. Dezember 2007

One small step for arm, but ...

Der Durchbruch ist gelungen !

Nachdem ich mich mehrere Tage mit dem Erstellen und compilieren der Toolchain
geärgert habe, habe ich ine unter OpenSuse 10.3 lauffähige fertige Kompilierung
gefunden, bei uCLinux. Wenn man dort das File arm-elf-tools-20030314.sh herunterlädt und ausführt, bekommt man alle notwendigen Tools (gcc, binutils, newlib, elf2flt) die man für eine Entwicklung benötigt.

Also:
1. OpenSuse 10.3 installieren (geht bestimmt auch mit anderen Distributionen)
2. Toolchain herunterladen und ausführen als root mit sh ./arm-elf-tools-20030314.sh
3. ein kleines "Helloworld" mit Makefile schreiben:

helloworld.c:
#include
void main(int argc, char **argv)
{
FILE* pFile=NULL;
int i=0;

pFile=fopen("/mnt/kbipd/tmp/helloworld.txt","wa+");
for (i=0;i<1000;i++)
{
fprintf(pFile,"Hello World!!\n");
}
fclose(pFile);
}

Makefile:
EXEC = helloworld
OBJS = helloworld.o
SOURCE = helloworld.c
CC = arm-elf-gcc
CFLAGS =
LDFLAGS= -Wl,-elf2flt
LDLIBS= -lc


all: $(EXEC)

$(EXEC): $(OBJS)
$(CC) $(CFLAGS) $(LDFLAGS) -o $@ $(OBJS) $(LDLIBS)

$(OBJS): $(SOURCE)
$(CC) $(CFLAGS) -c $(SOURCE)


clean:
-rm -f $(EXEC) *.gdb *.o

4. mit "make" alles bauen. Sieht dann so aus:
# make
arm-elf-gcc -c helloworld.c
helloworld.c: In function `main':
helloworld.c:3: warning: return type of `main' is not `int'
arm-elf-gcc -Wl,-elf2flt -o helloworld helloworld.o -lc
#

5. das helloworld als Ersatz über das ftpd auf dem Flash schreiben, also nach
...\kbipd\bin\ftpd
6. Flashkarte in das IPDrive einsetzen und starten.
7. Ein ftp auf das IPDrive probieren (sollte nicht gehen !)
und dann IOPDrive wieder ausschalten
8. Auf dem Flash sollte nun im Verzeichnis
"/kbipd/tmp/" eine helloworld.txt
zu finden sein mit 1000 mal "Hello World !" drin.

Ich wünsche allen eine guten Rutsch ins Jahr 2008 !

Fossi


Dienstag, 25. Dezember 2007

Leider noch nichts neues ...

Leider habe ich noch keine neuen Fortschritte gemacht.
Mangels anderer Anwedungen, als der auf dem IP-Drive,
kann ich leider nicht prüfen, ob ich einen HOOK mit dem sysinit
gefunden habe.

Ich werde mich jetzt mal ein wenig mit gnuarm und der Tool-Chain beschäftigen
und versuchen eine "HelloWorld" Anwendung zu schreiben, welche eine File
(als Beweis) auf die Flashdiesk schreibt und dann sysinit aufruft.

Wünscht mir Glück ;-)

Fossi

Jetzt geht die Lucy ab !!!!

Habe so eben den Zugriff auf root hinbekommen (lesend) !
Einafch in der smb.conf den Eintrag
[Root]
comment = For Administrator only
path = /
valid users = root
read only = No

ändern ! Vorher stand beim Parameter path =/mnt !!!

Nun kann man über Windows oder SMB-Share auf root des IPDrive zugreifen.
Auch das proc Verzeichnis ist lesbar !

Viele Infos !!!!!!

z.B. Linux
Linux version 2.4.20-uc0 (max@localhost.localdomain) (gcc version 3.0) #403 Thu Nov 10 16:20:56 CST 2005

Speicher:
total: used: free: shared: buffers: cached:
Mem: 30490624 19066880 11423744 0 303104 2375680
Swap: 0 0 0
MemTotal: 29776 kB
MemFree: 11156 kB
MemShared: 0 kB
Buffers: 296 kB
Cached: 2320 kB
SwapCached: 0 kB
Active: 1920 kB
Inactive: 696 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 29776 kB
LowFree: 11156 kB
SwapTotal: 0 kB
SwapFree: 0 kB

CPU:
Processor : Winbond W90N740 rev 1 (v3l)
BogoMIPS : 39.83
Hardware : W90N740
Revision : 0000
Serial : 0000000000000000


Auch den Einstige habe ich nun gefunden:
/bin/inittab:
mount -t proc none /proc
mount -t vfat /dev/hda1 /mnt
/mnt/kbipd/bin/sysinit
sh


Jetzt wird es lustig !!

Software Anlayse

So, nachdem Weihnachten hinter uns liegt, alle Geschenke ausgepackt sind,
kann ich nun fortfahren.

Die SW-Analyse erweißt sich als einfach und doch schwierig. Warum ?
Einfach, weil es nur wenige Dateien gibt und schwierig, weil die nicht so laufen,
wie man es von einem Linux gewöhnt wäre.

Hier die Datei-Liste und Verzeichnis-Liste die auf der Flashdisk/Platte installiert werden:
kbipd
kbipd\bin
kbipd\bin\dhcpcd
kbipd\bin\ftpd
kbipd\bin\gwadd
kbipd\bin\hdstand
kbipd\bin\hkd
kbipd\bin\ifconfig
kbipd\bin\inetd
kbipd\bin\nmbd
kbipd\bin\rdate
kbipd\bin\remount
kbipd\bin\smbd
kbipd\bin\swat
kbipd\bin\sysboot
kbipd\bin\sysinit
kbipd\etc
kbipd\etc\config
kbipd\etc\dhcpc
kbipd\etc\group
kbipd\etc\lang
kbipd\etc\passwd
kbipd\etc\smb.conf
kbipd\etc\sysfile
kbipd\etc\system.conf
kbipd\home
kbipd\share
kbipd\share\public
kbipd\tmp
kbipd\usr
kbipd\usr\local
kbipd\usr\local\samba
kbipd\usr\local\samba\lib
kbipd\usr\local\samba\private
kbipd\usr\local\samba\private\smbpasswd
kbipd\usr\local\samba\sbin
kbipd\usr\local\samba\swat
kbipd\usr\local\samba\swat\help
kbipd\usr\local\samba\swat\help\welc-cs.html
kbipd\usr\local\samba\swat\help\welc-cs1.html
kbipd\usr\local\samba\swat\help\welc-ct.html
kbipd\usr\local\samba\swat\help\welc-ct1.html
kbipd\usr\local\samba\swat\help\welc-fr.html
kbipd\usr\local\samba\swat\help\welc-fr1.html
kbipd\usr\local\samba\swat\help\welc-ger.html
kbipd\usr\local\samba\swat\help\welc-ger1.html
kbipd\usr\local\samba\swat\help\welc-jp.html
kbipd\usr\local\samba\swat\help\welc-jp1.html
kbipd\usr\local\samba\swat\help\welc-kr.html
kbipd\usr\local\samba\swat\help\welc-kr1.html
kbipd\usr\local\samba\swat\help\welcome.html
kbipd\usr\local\samba\swat\help\welcome1.html
kbipd\usr\local\samba\swat\include
kbipd\usr\local\samba\swat\include\footer.html
kbipd\usr\local\samba\swat\include\header-cs.html
kbipd\usr\local\samba\swat\include\header-ct.html
kbipd\usr\local\samba\swat\include\header-fr.html
kbipd\usr\local\samba\swat\include\header-ger.html
kbipd\usr\local\samba\swat\include\header-jp.html
kbipd\usr\local\samba\swat\include\header-kr.html
kbipd\usr\local\samba\swat\include\header.html
kbipd\usr\local\samba\swat\include\images
kbipd\usr\local\samba\swat\include\images\lang.jpg
kbipd\usr\local\samba\swat\include\images\logo.jpg
kbipd\usr\local\samba\swat\include\sysscript.html
kbipd\usr\local\samba\swat\photo
kbipd\usr\local\samba\swat\photo\photo.html
kbipd\usr\local\samba\swat\photo\photo1.html
kbipd\usr\local\samba\swat\photo\photo2.html
kbipd\usr\local\samba\var
kbipd\usr\local\samba\var\locks
kbipd\var
kbipd\var\run

Die Dateien sind fett markiert. Alles andere sind nur Verzeichnisnamen !

Dreh und Angelpunkt für die Standardkonfiguration sind die Dateien system.conf und smb.conf.
smb.conf ist die Konfigurationsdatei für den SAMBA Server:
# Samba config file created using SWAT
# from 192.168.0.223 (192.168.0.223)
# Date: 1970/01/01 00:13:48

# Global parameters
[global]
dos charset = ISO-8859-1
unix charset = ISO-8859-1
display charset = ISO-8859-1
netbios name = KBIPD
server string = IP Drive
security = SHARE
show add printer wizard = No
local master = No
domain master = No
oplocks = No
level2 oplocks = No

[homes]
valid users = %S
read only = No
browseable = No

[Root]
comment = For Administrator only
path = /mnt
valid users = root
read only = No

[Public]
comment = public share folder
path = /mnt/kbipd/share/public
read only = No
guest ok = Yes

Wie man hier schon erkennen kann, ist das auf der Platte installierte System nicht das eigentliche Linux-System, denn root wird hier mit /mnt angegeben. Eine Recherche ergab, dass es üblich ist auf einem ARM erst aus einem ROMFS zu booten und dann das eigentliche root
bzw. Ergänzungen hinzu zu mounten. Was wir also auf der Platte sehen, ist
nur das hinzu gemaoutete System. Wie sieht wohl das echte aus ?

Die system.conf enthält:
[User]
granted users = 5

[Network]
dhcp enable = yes
fixed ip = yes
ip address = 192.168.0.100
network mask = 255.255.0.0
gateway address =

[Timer]
manual setting = yes
time server = yes
ip address = 129.6.15.29

und damit die Systemeinstellungen des Netzwerks und der Uhrzeit.

system.conf ist keine mir bekannte Konfigurationsdatei. Lets google !

CU Fossi

Samstag, 22. Dezember 2007

CF Card als Festplatte läuft ! Ziel Nr 1 erreicht

Habe das einfachste Ziel erreicht.

Habe mir beim Conrad eine 1GB Flashcard von Sandisk geholt und ein CF-Card nach IDE Adapter. Wenn man die CF-Karte neu mit einem Festplattentool (z.B. von Acronis) als Primäre FAT Parttition (nur eine) einrichtet und die IP-Drive Software in das Verzeichnis kbipd aufspielt,
bootet das IPDrive brav auch von der CF-Karte.

Das sieht dann so aus:


bzw.



So nun erstmal ein bisschen spielen ;-)

Fossi

Ahh, ein ARM7

Ha, ein bisschen googlen hat den ersehnten Hinweis gegeben.
In einem Forum habe ich folgenden Hinweis gefunden:
Prozessor: W90N470 von Winbond, also eine 32Bit ARM7TDMI-based MCU

Und die Analyse der beigefügten Software ergabe ausserdem, das ein uCLinux eingesetzt wurde.
Version 2.4.20-uc0

Na dann mal ran an die SW !
Fossi

Chipanalyse

So hier meine Erkenntnisse zu den verbauten Chips:
  • KBIC-2700A (keine Ahnung !)
  • Der CY7068300A-56PVC ist ein USB-IDE Treiber Chip, um eine Festplatte an USB 1.1 betreiben zu können.
  • DM9161AE ist ein 10/100 Mbps Fast Ethernet Physical Layer Single Chip Transceiver der Firma DAVICOM
  • Die 74HC2450 ist ein Octal bus transceiver; 3-state - Philips Semiconductors
  • Der 29LV160BBTC-70 ist ein Flash Chip ( 2MB bei 8Bit , 1MB bei 16Bit)
  • Der W9812G2DH-7 ist SDRAM (leider weiß ich nicht wie groß :-) )
  • Der 74HCT00 ist ein Quad 2-input NAND gate von Philips
  • Der AMTEL504n 24CO2N ist ein EEPROM

Erste Schritte und Analyse (Hardware)

OK, los gehts !

Fangen wir erstmal an das IP-Drive zu zerlegen. Nach dem Handbuch ziemlich einfach:


Wenn man es dann komplett zerlegt hat, sehen die Teile dann so aus:


Wenn man sdich die Platine genau betrachtet, sieht man auf der Vorderseite
den Stromanschluss, den Ein/Ausschalter, den Festplattennschluss, den USB-Port und den
Ethernetportz. Ausserdem ein 24Mhz Quarz, den Resettaster, die Status-LED und zwei Elkos.

Die Rückseite sieht vielversprechend aus:



Man erkennt in der Mitte einen Chip von Kingbyte KBIC-2700A 0516. Desweiteren findet man folgende Chips:
1x CY7068300A-56PVC CYP 643300 (Wahrscheinlich ein USB-IDE Chip)
1x DM9161AE (wahrscheinlich ein Ethernet-Treiberbaustein
3x 74HC2450 (?)
1x 29LV160BBTC-78 (?)
2x W9812G2DH-7 (?)
1x 74HTC000
1x Quarz 15MHz
1x Quarz 25MHz
1x AMTEL504n 24CO2N

So jetzt rauskriegen was das für Chips sind.

Fossi

Es geht los......

Hallo Welt,

dies ist mein erster Blog und er soll meine Versuche dokumentieren,
hinter die Geheimnisse meines IP-Drives von Kingbyte (KNS-600) zu kommen.

Mein Ziel:
1. das IP-Drive soll mit einer Flshdisk arbeiten
2. ich will einen HTTP Dienst darauf laufen lassen
3. ich will ein Login auf dem System ausführen können
4. ich will weitere externe Gerüäte (USB-Kamera oder ähnliches) daran anschließen.

Da das Teil ein Low-Budget Gerät ohne nenneswerten Support ist, bin ich auf das WWW
angewiesen, mit allen Infos die ich dort ergooglen kann.

So es geht los !

Fossi