IDE-Schnittstelle 2

to stream or not to stream
tetzlav
Einsteiger
Einsteiger
Beiträge: 131
Registriert: Dienstag 6. April 2004, 12:08

Beitrag von tetzlav »

@DBoxBaer
WOW! Ich hab von Hardware-Programmierung/Busprotokollen keine Ahnung, aber die Erklärung war "Sendung mit der Maus" - das hab sogar ich (beinahe) Verstanden...

Kann ich dich/euch irgendwie Unterstützen? Ich kann leider bis auf HTML, PHP, CAD, BASIC, LÖTKOLBEN-HALTEN, GEDULT-HABEN... nicht viel. Aber ich mach grade Praktikum und hab ne dicke Internetleitung, ein Telefon und relativ viel Zeit; irgendwas raussuchen, recherchieren?

Gruß
tetzlav
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

@DboxBaer

Danke für Deinen Bericht! Ist wirklich der Hammer!

Ich glaube Du wirst das bestimmt hinbekommen... :D :D

Wünsche Dir und allen anderen schöne Weihnachten.


Gruß
____Paule
phaselinear
Interessierter
Interessierter
Beiträge: 21
Registriert: Donnerstag 24. Juni 2004, 19:49

Platinen....

Beitrag von phaselinear »

@DBoxBaer


Hallo... DBoxBaer

habe mich bei dem ersten Projekt schon mal angeboten..
Ich bin CAM-Operator und könnte Dir bei den Leiterplatten behilflich sein..
ich denke das ich einige umsonst machen lassen könnte und evtl. auch wegen SMD Maschinell Bestückung helfen könnte.

Wenn hilfe erwünscht ist, kurze PN reicht..

CU :wink:
Phase
phil2sat
Neugieriger
Neugieriger
Beiträge: 17
Registriert: Samstag 12. März 2005, 09:32

Beitrag von phil2sat »

Also erstmal grosses Lob an alle beteiligten, das doch noch Hoffnung besteht.

Ich selber hab ne Philips, darüber hab ich hier noch nicht so gelesen, hätte natürlich auch Interesse.

Jetzt mal ne ganz andere sache, von Hardware und dem ganzen Fachgerede mit den Chips und Interrupts und so versteh ich echt nicht viel, ich muss aber bei dem Thema immer an meine PS2 denken.

Die PS2 hat ja auch nen steckadapter der 100mbit Lan und IDE anschlüsse bietet (ca 20€) könnte man so etwas nicht ggf. nutzen und sich für ein paar euronen nen adapter schrauben.

Kann durchaus sein das so was nicht möglich ist aber mir hat mal jemand gesagt warum denn immer das Rad neu erfinden.

Also nicht gleich Kreuzigen mein gedanke waere nur es gibt da fü 20€ hardware die so etwas ermöglichen könnte, weil auch Sony hat denke ich mir nicht mehr als ne datenleitung und nen Interrupt um das ding anzusprechen. Sources und so gibts da auch reichlich siehe z.B. das linux kit oder hdloader

MfG
Phil2Sat
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

weil auch Sony hat denke ich mir nicht mehr als ne datenleitung und nen Interrupt um das ding anzusprechen
Naja, wenn das bei der PS2 nen PCI Port ist, dann hat das schon eine ganz andere Qualität als mit IO Ports...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

weil auch Sony hat denke ich mir nicht mehr als ne datenleitung und nen Interrupt um das ding anzusprechen
Naja, wenn das bei der PS2 nen PCI Port ist, dann hat das schon eine ganz andere Qualität als mit IO Ports...
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Hoffe dass das Projekt im Jahr 2006 zum Erfolg gebracht wird und
wünsche allen viel Glück und Gesundheit.


Gruß
____Paule
derget
Contributor
Beiträge: 1608
Registriert: Samstag 28. Juli 2001, 00:00

Beitrag von derget »

@chkbox

was jolt über die belegung der sagem speichererweiterung gepostet hatte stimmt

das ist aus dem sagen schaltplan

aber jetzt bitte nicht nach dem schaltplan fragen

den hat niemand , naja niemand stimmt nicht ,

aufjedenfall hatt den keiner der ihn rausrücken würde

btw das is ne lange geschichte aber die belegung ist da draus

aber damit hat diemade ja schon ein "funtzendes" ide interface für die sagem gebaut ... oder so :)
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

PauleFoul hat geschrieben:Hoffe dass das Projekt im Jahr 2006 zum Erfolg gebracht wird und
wünsche allen viel Glück und Gesundheit.

Gruß
____Paule
Danke, und den Wünschen schliesse ich mich gleich an.

Wenn man denn mal Zeit hat, daran zu arbeiten, gehts auch weiter: Soll heissen wir kommen vorran: Gestern hat meine "testbox" die ersten IDE
Zugriffe aus dem Kernel durchgeführt. Da ich noch immer keinen Interrupt angeschlossen habe, gab es dann zwar ewige Timeouts mit "Interrupt Lost", aber:
- die Partitionstabelle hat der Kernel gelesen und verstanden,
- Device Files waren da
- und ich habe mit "df" schon einige wenige Sektoren gelesen.

Ciao,

DboxBaer
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

chkbox hat geschrieben: Hätte noch eine Idee: Wie wäre es wenn man eine USB-IDE-Bridge hinzufügt. Beim CPLD kann man die Pins sicher auf Z bringen. Bei der Bridge vielleicht auch oder man fügt einen Puffer ein. Ich kenne aber keinen der in beide Richtungen funktioniert und erstrecht nicht für UDMA133 takt.
Die Idee ist gut und ich habe gerade das per Google gefunden: In einem Datenblatt des erst besten USB2.0 IDE Bridge Chips....

2.4 Combo Mode Function
The µPD720133 can be used to realize that two IDE controller chips control one target IDE device in one system.

Die zwei Leitungen, die der dafür braucht haben wir am CPLD natürlich noch übrig. Mal sehen...

Ciao

DboxBaer
... und der Rest ist dann Software (TM)
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

- die Partitionstabelle hat der Kernel gelesen und verstanden,
- Device Files waren da
- und ich habe mit "df" schon einige wenige Sektoren gelesen.
und jetzt eben (nach mechanischen Umbauten, die Platte ist nun im Gehäuse festgeschraubt und das Modem wurde durch eine Lochrasterplatine ersetzt) auch
- ein mount einer FAT Partition und
- ein "ls".
Beides erfolgreich.


Allerdings mit sehr vielen Lost-Interrupts, da noch immer kein INT angeschlossen ist :-)

Ciao,
DboxBaer

PS:
Was kann man besser machen: Beim Layout die Mechanik! Die Bohrungen sind saudoof (= nahezu unbrauchbar) platziert.
Und die Stiftleisten (für die unbenutzten Pins) sollte man so zusammenfassen, das man mit einem Flachbandkabel zum ehemaligen Moden gehen kann. Ich habe so ein Kabel nun direkt an die Platine gelötet.
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

Es war mal wieder Donnerstag, da war es mal wieder DBox-IDE
Abend...

Die Leitung PC15 der CPU kommt am Modem Connector raus und kann
einen INT generieren: Weiss hier vielleicht jemand, ob die von
irgendeinem Treiber bereits verwendet wird?

Jedenfalls habe ich die einfach mal mit dem CPLD verbunden und es
hat sogar direkt funktioniert :-)

Filesystem gemountet und mit cd und ls herumgewandert, das hat
alles exakt und ohne Probleme funktioniert.
Schreiben auf die Platte habe ich nun auch zugelassen und auch das
hat (im Prinzip) funktioniert.

-> Das Konzept funktioniert also nun vollständig.

Nun kommen noch ein paar "kleine" Teile: Aufräumen und den Code
noch optimieren: Zur Zeit kann die CPU den CPLD auch noch überfahren,
wenn er mit dem IDE Zugriff noch gar nicht fertig ist. Das Problem ist
mir seit langem bekannt, und ich habe auch verschiedene Lösungsansätze,
aber ich wollte erstmal den Rest zum Laufen bringen.
Aus diesem Grund kann ich daher zur Performance noch
nichts endgültiges sagen und habe auch nichts reales gemessen, dafür
war es uns zu spät.

Ciao,

DboxBaer
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

DBoxBaer hat geschrieben:
chkbox hat geschrieben: Hätte noch eine Idee: Wie wäre es wenn man eine USB-IDE-Bridge hinzufügt. Beim CPLD kann man die Pins sicher auf Z bringen. Bei der Bridge vielleicht auch oder man fügt einen Puffer ein. Ich kenne aber keinen der in beide Richtungen funktioniert und erstrecht nicht für UDMA133 takt.
Die Idee ist gut und ich habe gerade das per Google gefunden: In einem Datenblatt des erst besten USB2.0 IDE Bridge Chips....

2.4 Combo Mode Function
The µPD720133 can be used to realize that two IDE controller chips control one target IDE device in one system.

Die zwei Leitungen, die der dafür braucht haben wir am CPLD natürlich noch übrig. Mal sehen...

Ciao

DboxBaer
Eine Idee, die uns vor kurzem kam:
1. Es gibt IDE->SATA Adapter. Sowas sollte auch am CPLD funktionieren, für den ist das trotzdem eine Platte.
2. Es gibt externe Festplatten mit SATA und USB2.0 Anschluss.
-> braucht man also gar nichts umbauen, einfach nur zusammenstecken.

Klingt fast zu einfach.
... und der Rest ist dann Software (TM)
eule
Erleuchteter
Erleuchteter
Beiträge: 585
Registriert: Mittwoch 10. Oktober 2001, 00:00

Beitrag von eule »

DBoxBaer hat geschrieben:
DBoxBaer hat geschrieben: Eine Idee, die uns vor kurzem kam:
1. Es gibt IDE->SATA Adapter. Sowas sollte auch am CPLD funktionieren, für den ist das trotzdem eine Platte.
2. Es gibt externe Festplatten mit SATA und USB2.0 Anschluss.
-> braucht man also gar nichts umbauen, einfach nur zusammenstecken.

Klingt fast zu einfach.
Es gibt auch Festplattencontroller (SCSI / IDE) mit direktem Prozessorinterface.... z.B. den WD33C93. Ist ein SCSI-Controller, bekannt auch aus dem Amiga3000. Oder der NCR53C90A. Dieser CHip hat ein Interface direkt zu Motorola/Intel Prozessoren. Treiber für Linux gibts auch. Warum also alles noch einmal aufrollen?
chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

Beitrag von chkbox »

@DBoxBaer

Ich habe mal am Layout für die Sagem weitegemacht. Dabei ist jetzt mein Problem, welche Addressleitungen ich verwenden soll. Denn einige sind nicht vorhanden, dafür insgesamt mehr. Welche soll ich nehmen? Einfach alle?

Wie hast du das mit PC15 herausgefunden? Schaltplan?
dietmarw
Contributor
Beiträge: 1833
Registriert: Mittwoch 10. April 2002, 15:39

Beitrag von dietmarw »

was auch immer dabei rauskommt..
hoffentlich nur kein scsi !! ;)
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Vielleicht sollt man nicht versuchen eine EierlegendeWollMilchSau draus
zu machen...

Also eine ganz normale IDE-Schnittstelle wäre echt schon der

ABSOLUTE HAMMER!!


Gruß
____Paule
chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

Beitrag von chkbox »

PauleFoul hat geschrieben:Vielleicht sollt man nicht versuchen eine EierlegendeWollMilchSau draus
zu machen...
Da sich der CPLD beliebig programmieren lässt, ist das ganze im Prinzip deine EierlegendeWollMilchSau. Es wäre zum Beispiel möglich, die Datenleitungen des IDE als Multiplex für Daten und Adressen eines ISA Bus zu nehmen. Dann kannst du dranhängen, was du willst. Ursprünglich war IDE ja auch einfach eine Verländerung des ISA Bus zur Festplatte (mal abgesehen von den Adressleitungen). Das Problem ist ja "nur" wie man das ganze als SDRAM-Fake umsetzt. Und was das betrift, hat DBoxBaer offensichtlich das perfekte Konzept erfunden... (Und freundlicherweise auch schon veröffentlicht, fehlt eigentlich nur noch der Source :D )
Npq
Senior Member
Beiträge: 1339
Registriert: Donnerstag 24. April 2003, 12:12

Beitrag von Npq »

DBoxBaer hat geschrieben:Die Leitung PC15 der CPU kommt am Modem Connector raus und kann einen INT generieren: Weiss hier vielleicht jemand, ob die von irgendeinem Treiber bereits verwendet wird?
Sieht nicht so aus.

Sagem-Modem-Stecker:

1: SMTXD2
2: SMRXD2
3: GND
4: CTS (PC4)
5: Vpp
6: !DTR (PB16)
7: GND
8: !DCD (PC15)
9: !Resetleitung (vom FP)
10: !RTS (PB17)
11: KR/RETRY/IRQ4/SPKROUT (Pin B7 vom MPC823)
12: !Sleepmode (vom FP)

Achtung: der Avia600 verwendet bereits !IRQ4, allerdings über Pin D4. IRQ-Sharing wäre zwar möglich, aber nicht besonders sinnvoll. Dafür ist IRQ6 besser geeignet (RI, Pin 9 vom RS232).

Bevor jemand fragt, siehe derget's Antwort woher die Info stammt.
just_me
Einsteiger
Einsteiger
Beiträge: 123
Registriert: Montag 28. November 2005, 11:31

Beitrag von just_me »

chkbox hat geschrieben:Ich habe mal am Layout für die Sagem weitegemacht.
Hmm, (auf dem Weg zur Eierlegenden Wollmilchsau...) vielleicht findet noch Platz für ein SD Card Adapter? Z.B.:
http://de.farnell.com/jsp/endecaSearch/ ... =gensearch
chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

Beitrag von chkbox »

DBoxBaer hat geschrieben:Die Leitung PC15 der CPU kommt am Modem Connector raus und kann einen INT generieren: Weiss hier vielleicht jemand, ob die von irgendeinem Treiber bereits verwendet wird?
Npq hat geschrieben:Achtung: der Avia600 verwendet bereits !IRQ4, allerdings über Pin D4. IRQ-Sharing wäre zwar möglich, aber nicht besonders sinnvoll. Dafür ist IRQ6 besser geeignet (RI, Pin 9 vom RS232).
Wenn ich DBoxBaer richtig verstanden habe, verwendet er das CPM. Das ist in der Lage aus allen PCx Anschlüßen Interrupts zu erzeugen. An den PPC Core kommen die dann über den gemeinsamen Interrupt des CPM, während die IRQs direkt im Interrupt Controller des PPC Core verarbeitet werden.

Oder meinst du den Umweg über den CPM mit "IRQ-Sharing"?
Habe ich das so weit richtig verstanden?
chkbox
Erleuchteter
Erleuchteter
Beiträge: 440
Registriert: Samstag 10. April 2004, 15:17

Beitrag von chkbox »

just_me hat geschrieben:
chkbox hat geschrieben:Ich habe mal am Layout für die Sagem weitegemacht.
Hmm, (auf dem Weg zur Eierlegenden Wollmilchsau...) vielleicht findet noch Platz für ein SD Card Adapter? Z.B.:
http://de.farnell.com/jsp/endecaSearch/ ... =gensearch
Ich wäre eher dafür das zu lassen. Es bleiben ein paar Pins über, die dann auch an einen Stecker geführt werden. Du kannst dann eine gesonderte Platine mit dem SD Sockel machen, irgendwo in der Front einbauen (was zum benutzen ja so oder so nötig wäre) und dann ein paar Kabel zum IDE Board legen.
DBoxBaer
Senior Member
Beiträge: 255
Registriert: Donnerstag 25. August 2005, 11:34

Beitrag von DBoxBaer »

chkbox hat geschrieben:@DBoxBaer

Ich habe mal am Layout für die Sagem weitegemacht. Dabei ist jetzt mein Problem, welche Addressleitungen ich verwenden soll. Denn einige sind nicht vorhanden, dafür insgesamt mehr. Welche soll ich nehmen? Einfach alle?

Wie hast du das mit PC15 herausgefunden? Schaltplan?
Sehr gut!
Zu den Adress-Leitungen: Ich habe einfach alle angeschlossen. Durch die RAS/CAS Aufteilung braucht man aber gar nicht alle. Auf der anderen Seite kann man den CPLD später ja auch noch (begrenzt) erweitern. Je nach Anwendung fehlen einem aber später vielleicht eher IO-Pins. (vgl: ISA Bus in der DBox...). An ein LAN Interface da noch mit dran glaube ich jedenfalls im Moment nicht so recht, weil evtl. einfach die Pins nicht reichen und einfach wirds das im Chip dann auch nicht.
Wer eine Eierlegende Wollmilch Sau will dem würde ich dann einen FPGA empfehlen mit ordentlich vielen Pins (evtl. sogar ein BGA Gehäuse) und das dann bestücken lassen. Wenn man es clever anstellt, wird dann die "Firmware" auch gleich von der CPU reingeladen (über weniger Port-Pins der CPU zum Beispiel). Kompatibel zum IDE-CPLD kann man dann trotzdem sein.

Aber zurück zum Layout mit CPLD: Versuch die Leitungen zwischen CPLD und Connector kurz zu halten, das ist immer gut und erspart Probleme.
Und die Masse/VCC Leitungen "gut" anbinden, Abblock Kondensatoren dicht am Chip sind Pflicht.
Da ich nicht an ein gemeinsames Layout für alle Varianten glaube, ist auch eine gemeinsame CPLD "Firmware" nicht unbedingt notwendig, man kann die Belegung des CPLD sehr einfach in der Xilinx Software ändern. Der Inhalt im CPLD ist dann trotzdem gleich und der Software ist das egal.

In dem Fall kann man dann auch gerne ein paar Pins anders beschalten (zu tauschen), wenn das Layout dadurch einfach wird. Vorschlag wäre hier, wenigstens die Gruppen gleich zu lassen (also nicht Datenleitungen mit Adressleitungen tauschen), da sich sonst das Timing stärker verschieben könnte. Bevor ein Layout produziert wird kann ich aber die Anschlussbelegung mal durch die Software jagen, ob sich da was dramatisch ändert.

Interessant wäre hier vielleicht mal ein Detail: Wie ist der Inhalt des MEMC_MAMR Registers bei den verschiedenen Boxen? Da drin gibt es drei Bits "AMA", bei mir sind diese "001". Diese legen die Verschiebung bei RAS/CAS fest und sind gemeinsam fürs externe und interne RAM. Übrigens sollte man damit bei einem Speicher-Modul mit mehr als 32 MB dieses auch vollständig in der Box zum Laufen bringen können. (Allerdings kann man dann wohl nicht mehr das interne RAM benutzen).
Bei einer Box mit nur 16MB on Board habe ich jedenfalls einen anderen Wert gefunden, und der Treiber müsste dann die Zugriffsadressen anpassen. Etwas aufwendiger auszulesen: Den Inhalt der UPM-A würde ich auch gerne mal zwischen den verschiedenen Boxen vergleichen. Das macht nämlich evtl. schon Unterschiede beim Chip.

Zu den Belegungen:
Im Prinzip braucht man für die Belegung des RAM-Steckers keinen Schaltplan bei Nokia, das kann man auf der Oberseite der Platine gut erkennen :-) Beim Modem ist das schwieriger, ein Schaltplan hilft da natürlich.
Wenn man aber wie auch immer eine Idee hat, welche Leitung es sein könnte, kann man einfach "nachmessen":
Ich habe sie einfach über einen 20k Widerstand auf Masse gelegt, und
dann war (per u-boot Kommando ausgelesen) das Bit im Port C Daten
Register "plötzlich" low. Die 20k hatte ich genommen, um nichts kaputt machen zu können. Paranoia Rulez.
Man kann aber auch einfach zum Beispiel im u-boot eine Routine laufen lassen, die den Pin auf Ausgang schaltet und dann zwischen High und Low toggeln lässt und dann einfach danach mit dem Oszi suchen... So hatte ich das wenigstens gelpant, war aber nicht notwendig, da der erste Versuch ja schon passte.

Wie das mit IRQ nun genau im Kernel abläuft habe ich mir gar nicht weiter angeschaut, nachdem ich durch ein wenig rum-grep-en in den Sourcen einfach den Wert "31 + CPM_IRQ_OFFSET" den IDE-Routinen übergeben hatte... 31, weil das PortC Pin 15 ist. Sieht da jemand ein Problem?

Zur Zeit beschränken sich die Änderungen am Code übrigens auf eine geänderte Kernel-Config, so dass die IDE Module compiled werden. Ansonsten habe ich da nur hunderte Debug-Outputs hinterlassen, das prüfe ich demnächst mal nach. Der eigentliche Treiber "dboxide" ist zur Zeit ein relativ einfaches Modul, die Hauptarbeit machen die IDE Layer vom Linux Kernel.

Ich schaue jetzt aber erstmal wieder in den Source und räume auf, damit ich bald auch mal davon was posten kann...

Ciao,

Dboxbaer

PS:
Vielleicht sollte man die Infos, wie das ganze Ding funktioniert irgendwie mal ins Wiki stellen? Ein paar Hardware Erweiterungen liegen da ja schon...
Houdini
Developer
Beiträge: 2183
Registriert: Mittwoch 10. Dezember 2003, 07:59

Beitrag von Houdini »

Sieht da jemand ein Problem?
in commproc.h:

Code: Alles auswählen

#define	CPMVEC_PIO_PC15		((ushort)0x1f)
sollte also richtig sein

Weiter so :-)
Houdini
PauleFoul
Wissender
Wissender
Beiträge: 1839
Registriert: Sonntag 17. August 2003, 01:39

Beitrag von PauleFoul »

Wenn Ihr mir die Daten zusendet melde ich mich freiwillig um diese
in Wiki einzustellen. Einfach via PN melden...


Gruß
____Paule