Forum: Mikrocontroller und Digitale Elektronik Ansteuerung eines Speicherbausteins (hypothetisch)


von Kai S. (freewarehookie)


Lesenswert?

Hallo,

wie viele von euch wissen gibt es ja in der Fritzbox z.B. fest 
eingebaute Flash Speicher, auf denen entweder die Software liegt, die 
die Fritzbox bootet oder in der auch z.B. die Daten gespeichert sind.
Wird eine Fritzbox (mein Beispiel) geflasht, so wird der Speicher für 
das Betriebssystem gelöscht und neu beschrieben und dann neu gebootet, 
damit das aufgespielte System laufen kann.

Ich frage mich jetzt, mit Bezug zu einem Raspberry PI, ob ich 
(hypothetisch) wohl die SD-Karte durch einen Festspeicher ersetzen 
könnte.
Bei meinem Computer weiß ich, dass das BIOS des Systems diese Festplatte 
als solchen Speicher erkennt.
Beim Raspberry PI wird der Broadcom Prozessor das erste Bit der 
Speicherkarte aufrufen und dort den Bootloader starten; zumindest gehe 
ich davon aus.
Kann (und wenn wie) ich einen Speicher an dieser Stelle integrieren und 
ist die Schnittstelle des Broadcom Chips, dort wo die SD Karte 
angeschlossen ist, kompatibel zu Festspeichern?

Wir befinden uns ja noch vor jedem Bootvorgang, also noch vor dem Laden 
einer jeden Software, weshalb das aus meiner Sicht eine Frage zum Chip / 
zur Hardware ist.

Ein kurzer Überblick und / oder eine Beantwortung wäre sehr nett.

MfG

: Verschoben durch Moderator
von Gustl B. (-gb-)


Lesenswert?

Kai S. schrieb:
> Ich frage mich jetzt, mit Bezug zu einem Raspberry PI, ob ich
> (hypothetisch) wohl die SD-Karte durch einen Festspeicher ersetzen
> könnte.

Klar. Es gibt viele verschiedene "Festspeicher". Die SD-Card ist auch 
ein Festspeicher.

An Schnittstellen sind (Q)SPI, Hyperbus, (E)MMC, SD-Bus, PCIe, ... 
üblich. Auch die SD-Card kann SPI.

Kai S. schrieb:
> Kann (und wenn wie) ich einen Speicher an dieser Stelle integrieren und
> ist die Schnittstelle des Broadcom Chips, dort wo die SD Karte
> angeschlossen ist, kompatibel zu Festspeichern?

Wenn du dir einen kompatiblen "Festspeicher" suchst dann ja. Du könntest 
die SD-Card schlicht festkleben und schon ist es ein "Festspeicher".

: Bearbeitet durch User
von Kai S. (freewarehookie)


Lesenswert?

Dem entnehme ich, dass da nichts zwischen kommt, sofern die 
Schnittstelle gleich ist und Festspeicher direkt mit 8 Pins angebunden 
werden?

Wie kann über jegliche Schnittstelle festgestellt werden, welche 
Kapazität der betreffende Speicherchip hat; darf ich das auch noch eben 
fragen?

Ist im Speicherchip ein Bereich für die Kennzeichnung, Größe, Art, etc. 
definiert, der nicht überschrieben wird? Funktioniert das so?

Denn den gesamten Speicher einmal durchtesten wie groß er ist (bis er 
nicht mehr beschreibbar ist), würde zu lange dauern.

Danke im Voraus.

(es geht bei mir um Grundlagen)

: Bearbeitet durch User
von Gustl B. (gustl_b)


Lesenswert?

Kai S. schrieb:
> Festspeicher direkt mit 8 Pins angebunden werden?

Das kommt sehr drauf an was das für ein Speicherinterface ist. SPI gibt 
es mit 4 Leitungen, HyperBus hat minimal 12.

Kai S. schrieb:
> Wie kann über jegliche Schnittstelle festgestellt werden, welche
> Kapazität der betreffende Speicherchip hat; darf ich das auch noch eben
> fragen?

Entweder man muss das nicht wissen weil das schon eingebaut ist als 
feste Konstante oder man kann den Speicher fragen. Die haben oft ein 
paar Konfigurations- und Statusregister.

Kai S. schrieb:
> Ist im Speicherchip ein Bereich für die Kennzeichnung, Größe, Art, etc.
> definiert, der nicht überschrieben wird? Funktioniert das so?

Kann man machen bei manchen Modellen. Aber so ein Write Protect gibt es 
nicht immer.

Kai S. schrieb:
> Denn den gesamten Speicher einmal durchtesten wie groß er ist (bis er
> nicht mehr beschreibbar ist), würde zu lange dauern.

Naja als Hersteller baut man die Firmware für ein Produkt das man kennt. 
Da muss man die Speichergröße nicht herausfinden. Den Speicher hat man 
da selber hingebaut oder zumindest entschieden dass der da hingebaut 
wird.

von Kai S. (freewarehookie)


Lesenswert?

Gustl B. schrieb:
> Naja als Hersteller baut man die Firmware für ein Produkt das man kennt.
> Da muss man die Speichergröße nicht herausfinden. Den Speicher hat man
> da selber hingebaut oder zumindest entschieden dass der da hingebaut
> wird.

In meinem Beispiel spreche ich jetzt von einem Raspberry PI und ersetze 
z.B. den SD Slot mit einem passenden Bus durch einen Speicher. Dann gibt 
es, da ich Raspbian benutze, ja keine genaue Kennzeichnung im Prozessor 
für den Speicher (dürfte ja wie bei einem PC sein und keine Firmware 
außer dem Kernel verbaut sein).
Der Kernel hat ggf. für die entsprechende Festplatte  SD-Drive  
Speicherchip den richtigen Treiber bereits integriert oder ich muss ihn 
als Modul nachladen oder einkompilieren.

Gibt es da Anforderungen an ein SpeicherMODUL, sodass dem eigentlichen 
Speicher noch ein Mikroprozessor / fester Chip vorgeschaltet sein muss, 
der dann diese Register mit der Größe, etc. beinhaltet? Ist das in der 
Spezifikation ((Q)SPI, Hyperbus, (E)MMC, SD-Bus, PCIe, ...) festgelegt 
oder wie funktioniert das?

Nehmen wir zum Beispiel einen ATMEL AT27C010, was laut meiner Sicht ein 
"reiner" Speicher, ohne feste Register ist.
Wenn ich den jetzt in Raspbian auf meinem Raspberry PI als /dev/sda 
einbinden möchte, mit einem Dateisystem versehen und formatieren möchte, 
was muss ich dann noch gemacht haben (vorgeschaltet haben), damit das 
funktioniert?
Betrachten wir den Speicher und die vorgeschalteten Chips als "imaginäre 
Festplatte".

Das wäre meine Frage.

Für die Antwort und Geduld schon jetzt vielen Dank.

: Bearbeitet durch User
von Kai S. (freewarehookie)


Lesenswert?

> In meinem Beispiel spreche ich jetzt von einem Raspberry PI und ersetze
> z.B. den SD Slot mit einem passenden Bus durch einen Speicher. Dann gibt
> es, da ich Raspbian benutze, ja keine genaue Kennzeichnung im Prozessor
> für den Speicher (dürfte ja wie bei einem PC sein und keine Firmware
> außer dem Kernel verbaut sein).
> Der Kernel hat ggf. für die entsprechende Festplatte / SD-Drive /
> Speicherchip den richtigen Treiber bereits integriert oder ich muss ihn
> als Modul nachladen oder einkompilieren.

Ich habe mich ein wenig umständlich ausgedrückt:

Z.B. weiß das Betriebssystem, dass es ein SMD20 Chip ist, hat aber 
keinen Treiber dafür.
Also muss es doch eine spezielle Kennzeichnung geben, die entweder, wie 
ich hier bereits erfahren habe, in speziellen Registern im Speicherchip 
vorliegt oder, wie ich mir das dachte, auch von einem vorgeschalteten 
Chip bereitgestellt wird. Ist das so?

Zum 2. Teil:

Und dann gibt es div. Speichermodule, wie USB-Sticks oder Festplatten, 
etc., die von Linux / Unix als Speicher eingehängt werden können, ohne, 
dass ein spezieller Treiber installiert wird. Gibt es dafür einen 
Standard oder mache ich mir das zu kompliziert, hängt es also von einem 
bereits dafür ausgelegten Standard für den Chip selbst ab?
Der Standard zur Übertragung ist SATA, in div. Ausführungen und mit 
unterschiedlichen Geschwindigkeiten; hierfür wird dann ja sicherlich ein 
spezieller Chip zur Umsetzung auf das Speichermedium in der Festplatte 
vorhanden sein; beim USB Stick, ist es da auch so?
Das wird ein fester Chip sein, der die "Vermittlung" zwischen dem 
Computer und dem reinen speicher übernimmt und gleichzeitig auch die 
Kenndaten zur Verfügung stellt, richtig? So, wie mein WLAN Dongle von 
AVM unter anderem einen kleinen Speicherbereich für zu installierende 
Software hat, wo der chip die Ansteuerung WLAN-Stick / Speicherbereich 
regelt, müsste es doch auch beim USB Stick sein, richtig?

Dann müsste ich doch theoretisch solch einen Chip auch manuell mit einer 
Firmware bauen können, also z.B. mit einem ATMEL Prozessor, der dann 
einen Speicherchip nachgeschaltet hat und nach der Spezifikation einer 
der o.agg. Standards funktioniert, richtig?

Das wäre dann mein Ziel.

Ich danke schon jetzt.

: Bearbeitet durch User
von Gustl B. (-gb-)


Lesenswert?

Kai S. schrieb:
> SMD20 Chip

Was ist das?

Kai S. schrieb:
> ohne, dass ein spezieller Treiber installiert wird.

Speziell nicht, aber ein Treiber muss installiert sein. Und zwar für die 
https://en.wikipedia.org/wiki/USB_mass_storage_device_class .

Kai S. schrieb:
> Der Standard zur Übertragung ist SATA

SATA umfasst sehr viel. Nicht nur die physikalische Übertragung, sondern 
auch das Protokoll, nämlich https://de.wikipedia.org/wiki/ATA/ATAPI .

Kai S. schrieb:
> Das wird ein fester Chip sein, der die "Vermittlung" zwischen dem
> Computer und dem reinen speicher übernimmt und gleichzeitig auch die
> Kenndaten zur Verfügung stellt, richtig?

Oft ist das nur ein Chip, also Controller/SoC und Flashspeicher in einem 
Package.

Kai S. schrieb:
> Dann müsste ich doch theoretisch solch einen Chip auch manuell mit einer
> Firmware bauen können, der dann einen Speicherchip nachgeschaltet hat
> und nach der Spezifikation einer der o.agg. Standards funktioniert,
> richtig?

Klar, kannst du. Du brauchst einen Mikrocontroller/oder Schnelleres und 
ein paar IOs die die Anforderungen von der gewünschten Schnittstelle 
erfüllen.
Also wenn du einen USB Speicher bauen willst, dann nimm einen 
Mikrocontroller mit USB Device Schnittstelle.

Aber: Damit du von so einem Speicher auch booten kannst, muss im 
BIOS/Firmware/ ... auch irgendeine Art Treiber zur Verfügung stehen. Ein 
PC kann z. B. üblicherweise nicht von einer SD-Card booten, eben weil 
das das Bios nicht kann. Prinzipiell geht das schon, aber ist eben nur 
dann möglich wenn es das BIOS/Firmware/... unterstützt.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Kai S. schrieb:
> Z.B. weiß das Betriebssystem, dass es ein SMD20 Chip ist, hat aber
> keinen Treiber dafür.

Das waere sehr eigenartig. Woher soll denn das Betriebssystem sowas 
wissen, wenns nicht auf den Speicher zugreifen kann und ihn fragen?

Kai S. schrieb:
> Und dann gibt es div. Speichermodule, wie USB-Sticks oder Festplatten,
> etc., die von Linux / Unix als Speicher eingehängt werden können, ohne,
> dass ein spezieller Treiber installiert wird. Gibt es dafür einen
> Standard oder mache ich mir das zu kompliziert, hängt es also von einem
> bereits dafür ausgelegten Standard für den Chip selbst ab?
USB-Sticks und -festplatten sind USB-Massstrorage devices. Also 
Softwaremaessig werden die identisch angequakt. Und natuerlich brauchts 
dann unter Linux den entsprechenden Treiber.

Es gibt fuer's booten von SoC keine Spezifikation. Ausser dem jeweiligen 
Datenblatt. Das macht jeder anders. Oft laeufts so, dass direkt nachdem 
Reset eine CPU anfaengt, code aus einem SoC internen ROM auszufuehren, 
mit dem werden dann bestimmte IO-Pins abgefragt und davon abhaengig 
ueber verschiedene Busse/Schnittstellen versucht, irgendwo aus einem 
evtl. angeschlossenen Baustein/Interface was auszulesen. Dann kanns 
sein, dass das was da gelesen wird, mit einer passenden Signatur 
versehen sein muss, sonst geht's nicht weiter. Wenn die Signatur passt, 
dann hat das gelesene oft einen Header in einem bestimmten Format, 
innerhalb dem z.b. RAM-Controller initialisiert werden koennen. Bis 
dahin kann man das DRAM nicht verwenden. Dann wird oft entweder der 
richtige oder ein Vor-Bootloader in irgendeinen RAM-Bereich kopiert und 
dann da hingesprungen. Dann gehts entweder los mit dem richtigen 
Bootloader oder tatsaechlich schon dem Betriebssystem/BareMetal.
Aber wiegesagt: Das macht jeder anders, wie genau, steht im Datenblatt. 
Wenn man das nicht kriegt, sieht man ziemlich alt aus...

Gruss
WK

von c-hater (Gast)


Lesenswert?

Kai S. schrieb:

> Ich frage mich jetzt, mit Bezug zu einem Raspberry PI, ob ich
> (hypothetisch) wohl die SD-Karte durch einen Festspeicher ersetzen
> könnte.

Beim Pi4 ist das auf jeden Fall möglich, bei den Vorgängermodellen nur 
dadurch, dass du einen Festspeicher findest, der sich nach außen hin wie 
eine SD-Karte verhält.

Das Problem beim Raspi ist, dass zur Bootzeit ein völlig proprietär 
abgeschottetes System das Sagen hat. Du hast keinen Zugriff auf dessen 
Bootverhalten, jedenfalls nicht über die dokumentierten 
Eingriffsmöglichkeiten hinaus.

> Beim Raspberry PI wird der Broadcom Prozessor das erste Bit der
> Speicherkarte aufrufen und dort den Bootloader starten; zumindest gehe
> ich davon aus.

Nö, das ist dann doch etwas komplizierter... Aber bis (auschließlich) 
RasPi4 läuft es darauf hinaus, dass da zwingend eine SD-Karte sein muss, 
oder jedenfalls irgendwas, was sich wie eine solche verhält.

Beim RasPi4 wird die Sache komplizierter. Ist aber genausowenig 
brauchbar dokumentiert. Im Prinzip läuft es auch hier darauf hinaus, 
dass du die von der PasPi-Klitsche vorgegebenen Wege zum Booten benutzen 
musst. Nur dass es jetzt einen mehr gibt, und damit immerhin die 
Exklusivität der SD-Karte als Bootdevice beendet ist...

von Frank (Gast)


Lesenswert?

c-hater schrieb:
> Aber bis (auschließlich) RasPi4 läuft es darauf hinaus, dass da zwingend
> eine SD-Karte sein muss

Nope. Auch der 3B+ konnte schon von USB und Netzwerk booten. Ohne 
SD-Karte.

von Kai S. (freewarehookie)


Lesenswert?

Gustl B. schrieb:
> Kai S. schrieb:
>> SMD20 Chip
>
> Was ist das?

Eine Beispielbezeichnung (ausgedacht) für einen Chip.

In Windows weiß ich, dass er bei einem Device, welches er nicht kennt, 
in manchen Fällen, auch ohne Treiber, zumindest den Namen angibt (hatte 
ich schon); ich meine in Linux ist das mit lsdev möglich und dann kommt 
da der Text des Chips und den muss er ja vom device irgendwo ausgelesen 
haben, also muss der ja irgendwie im Register stehen oder von einem 
vorgeschalteten Chip bereitgestellt werden.

Schonmal vielen Dank für die ausführlichen Infos; das trifft echt was 
ich wissen wollte!

von Kai S. (freewarehookie)


Lesenswert?

Dergute W. schrieb:
> USB-Sticks und -festplatten sind USB-Massstrorage devices. Also
> Softwaremaessig werden die identisch angequakt. Und natuerlich brauchts
> dann unter Linux den entsprechenden Treiber.

Dem entnehme ich, dass das auch wieder ein Standard für die 
"Massstrorage devices" ist, der irgendwo von der IEEE oder so etwas 
definiert wurde, richtig?

MfG

von Dergute W. (derguteweka)


Lesenswert?

Kai S. schrieb:
> Dem entnehme ich, dass das auch wieder ein Standard für die
> "Massstrorage devices" ist, der irgendwo von der IEEE oder so etwas
> definiert wurde, richtig?

Das ist ein Teil der USB-Spec. Da kenn ich mich nicht gut aus, aber ich 
vermute mal stark, dass das eng an die SCSI-Spec. angelehnt/uebernommen 
wurde. Und die wird auch nicht aus dem Nichts aufgetaucht sein...

Gruss
WK

von Joachim B. (jar)


Lesenswert?

Kai S. schrieb:
> Ich frage mich jetzt, mit Bezug zu einem Raspberry PI, ob ich
> (hypothetisch) wohl die SD-Karte durch einen Festspeicher ersetzen
> könnte.

sogar praktisch

µSD Karte mit OS bespielen, swap ausschalten oder auf NAS USB umleiten, 
Karte an einer Stelle kaputtschreiben bis sie in den RO Mode geht, 
fertig ist der Festspeicher PI

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Kai S. schrieb:
> Wie kann über jegliche Schnittstelle festgestellt werden, welche
> Kapazität der betreffende Speicherchip hat; darf ich das auch noch eben
> fragen?
Garnicht. Selbst wenn die Schnittstelle gleich ist gibt es zig 
verschiedene Arten von Speichern die alle unterschiedlich angesprochen 
werden sollen und daher auch ganz unterschiedliche Möglichkeiten haben. 
Das legt man normalerweise bei der Hardwareentwicklung schon fest was 
man da verbaut und weiss somit wie der verbaute Stein behandelt werden 
will.

Kai S. schrieb:
> Ist im Speicherchip ein Bereich für die Kennzeichnung, Größe, Art, etc.
> definiert, der nicht überschrieben wird? Funktioniert das so?

Bei SD-Karten gibt es sowas Teilweise:

https://www.sdcard.org/downloads/pls/

SoC -> SPI-Schnittstelle -> SD-Karte -> SD-Kontroller -> Flash
Und zu dem ganzen kommt noch das auf dem ganzen ja auch noch als 
logische Schicht ein Filesystem "obendrauf sitzt". Das muss deine 
Software ja auch noch alles berücksichtigen.

https://de.wikipedia.org/wiki/File_Allocation_Table#exFAT


Nur mal so als Beispiel für die im PC Bereich gängigen Schnittstellen 
für externen Speicher:

https://de.wikipedia.org/wiki/Serial_ATA

https://de.wikipedia.org/wiki/NVM_Express

https://en.wikipedia.org/wiki/USB#USB_mass_storage_/_USB_drive

Praktisch alle bestehen immer auch einem Hardwareteil und einen 
Softwareanteil. Selbst wenn die Hardwareschnittstelle ähnlich sein 
sollte kann die notwendige Softwarelogik total anders sein.
Und oben auf die Softwareschicht zur Kommunikation kommt da dann noch 
eine Filesystem oben drauf das für die Organisation der Daten notwendig 
ist.


Zum Booten benötigst du z.B. am Anfang erstmal einen Speicher der in den 
Adressbereich der CPU eingeblendet ist damit diese die darin enthaltenen 
Befehle überhaupt ausführen kann. Dieser Speicher kann als Flash oder 
gar ROM in den Chip integriert sein, es kann aber auch einen externen 
Flash oder ROM sein der speziell dafür ist.
Eine SD-Karte z.B. kann das überhaupt nicht, da musst du den Datenblock 
erstmal in den RAM kopieren und erst von dort kann die CPU da überhaupt 
drauf zugreifen.

In dem Programm muss dann alles enthalten sein damit das System die 
weiteren Schritte durchführen kann. Wenn da z.B. mir die Software drin 
ist um von einer SD-Karte mit einem exFAT Filesystem eine bestimmte 
Datei in den RAM zu laden und auszuführen hast du schon verloren, wenn 
die die SD-Karte anders Formatiert hast. Von ganz anderen Schnittstellen 
und/oder Chips die ganz anders Angesprochen werden müssen ganz zu 
schweigen.

Mal ein Beispiel wo Speicher fest an einen µC via SPI angeschlossen wird 
so dass die CPU auch direkt drauf zugreifen kann:

https://www.e4ds.com/webinar_tech_dn.asp?idx=178

https://www.mouser.de/datasheet/2/268/S71380-373265.pdf

Das ist aber eine völlig andere Art von Speicher der mit einer SD-Karte 
so überhaupt nichts gemeinsam hat auch wenn beides im Prinzip aus 
Flash-Chips besteht-


Dazwischen gibt es auch noch einige Arten die z.B. zwar wie SD-Karten 
eine SPI-Schnittstelle nutzen, aber von der Logik her dennoch völlig 
anders angesteuert werden müssen.

https://www.mouser.de/datasheet/2/949/w25r128jv_revb_09032018-1499765.pdf

von Kai S. (freewarehookie)


Lesenswert?

Vielen Dank für die übersichtliche, strukturierte und umfassende 
Antwort.

Ist komplizierter als gedacht.

Von der Idee her war es einfach:

Datenverbindung herstellen, Dateisystem mit Partitionierungstabelle 
bereitstellen, Daten nach Vorgabe des Dateisystems im Speicher ablegen 
und auslesen, weiterleiten, fertig.

Schade, dass es nicht so einfach ist.

---------------

Jetzt suche ich noch ein Buch, z.B. von O'Reilley, über Dateisysteme, 
Speichermedien und deren Ansteuerung. Gibt es da ein wirklich gutes, 
allumfassendes, Grundlagen und Details vermittelndes Werk, dass jemandem 
bekannt ist und möglichst einfach in diese Thematik einführt und auch 
als Nachschlagewerk genutzt werden kann?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Kai S. schrieb:
> Datenverbindung herstellen,
Wie das gemacht wird, steht im Datenblatt des SoC. Gaengig: JTAG, RS232, 
USB (wenn das SoC schon auf einen Bootloader zurueckgreifen kann, ggf. 
auch Ethernet( z.b. tftp)).

> Dateisystem mit Partitionierungstabelle
> bereitstellen, Daten nach Vorgabe des Dateisystems im Speicher ablegen
Ob du eine Partitionstabelle brauchst (nicht immer, das ist eher so ein 
PC Ding) oder nicht, steht im Datenblatt des SoC.
Welches Dateisystem du hernimmst, haengt hauptsaechlich von deiner 
Software ab, die drauf zugreifen soll.
Normalerweise machst du auf deinem Entwicklungs-PC ein Verzeichnis auf, 
innerhalb von dem kannst du deine ganzen Files und gedoens anlegen, so 
wie du's spaeter gerne auf deinem SoC sehen willst. Wenn du damit fertig 
bist, machst du daraus dann ein Image z.b. mit so tools wie mksquashfs 
oder mkyaffs.
Dieses Image (und weiteres Zeugs, wie z.b. bootloader, etc. - genaueres 
dazu steht im Datenblatt deines SoC) schreibst du dann ueber deine 
"Datenverbindung" in deinen ominoesen Speicherchip.

> und auslesen, weiterleiten, fertig.
Nee. Und bootest dann aus deinem Speicherchip. Fertsch.

> Schade, dass es nicht so einfach ist.
Wenn man das Datenblatt gelesen und verstanden hat und das 1-2 mal 
gemacht hat, wird man sehen, dass es auch nicht soooo schwierig ist.

Gutes Buch dazu kenn' ich keines. Ausser: Das Datenblatt deines SoC :-)

Gruss
WK

von Cyblord -. (cyblord)


Lesenswert?

Kai S. schrieb:
> Jetzt suche ich noch ein Buch, z.B. von O'Reilley, über Dateisysteme,
> Speichermedien und deren Ansteuerung. Gibt es da ein wirklich gutes,
> allumfassendes, Grundlagen und Details vermittelndes Werk, dass jemandem
> bekannt ist und möglichst einfach in diese Thematik einführt und auch
> als Nachschlagewerk genutzt werden kann?

Nein, und nach sowas fragt jeder zweite Anfänger: Gibt es ein Buch GENAU 
für mein Problem, und ganz einfach.
NEIN! Gibt es nicht.
Denn du hast viele Probleme:
- Dateisysteme: Es gibt viele Davon und es gibt recht umfassende Bücher 
über Dateisysteme.
- SD-Karten Ansteuerung: Da gibt es Datenblätter und viel Beispielcode.

Beides muss man aber auch erst mal verstehen. Dazu braucht man auch 
Vorwissen und Erfahrung z.B. über Bussysteme, SPI, Speicher, Bäume, 
Algorithmen usw.

Fazit: Will man SD-Karten und Dateisysteme bis ins Detail verstehen und 
anwenden können muss man sich reinhängen. Verschiedene Quellen angucken, 
Code angucken, Datenblätter lesen, ausprobieren, selber coden.
Wie bei allem: Erfahrung macht hier den Meister. Niemals irgendein 
magisches Buch.

: Bearbeitet durch User
von Oliver S. (oliverso)


Lesenswert?

Kai S. schrieb:
> Ich frage mich jetzt, mit Bezug zu einem Raspberry PI, ob ich
> (hypothetisch) wohl die SD-Karte durch einen Festspeicher ersetzen
> könnte.

Wenn du jetzt mal all das hypothetische Geschwafel und dein 
hypothetisches Wissen über hypothetische Speicher beiseite lässt, die 
alle mit der Realität nichts zu tun haben. kommt man zur realen Frage:

Was versprichst du dir davon? Oder kürzer: Warum?

Oliver

von Kai S. (freewarehookie)


Lesenswert?

Cyblord -. schrieb:
> Nein, und nach sowas fragt jeder zweite Anfänger: Gibt es ein Buch GENAU
> für mein Problem, und ganz einfach.
> NEIN! Gibt es nicht.

Ich wollte kein Buch genau für mein Problem, sondern ein gutes Buch über 
Dateisysteme. Ich denke, dass das eine angemessene Frage ist, nach einer 
Rezension? Was hast du denn daran auszusetzen?
Durch Bücher liest man sich fundiertes Fachwissen an, wie du es weiter 
unten ja auch beschreibst.

Da sind es deine Worte:

Cyblord -. schrieb:
> Will man SD-Karten und Dateisysteme bis ins Detail verstehen und
> anwenden können muss man sich reinhängen. Verschiedene Quellen angucken,
> Code angucken, Datenblätter lesen, ausprobieren, selber coden.

Tut mir leid, verstehe die Aufregung nicht.

MfG

von Kai S. (freewarehookie)


Lesenswert?

Vielen Dank @ derguteweka

von Kai S. (freewarehookie)


Lesenswert?

Oliver S. schrieb:
> Wenn du jetzt mal all das hypothetische Geschwafel und dein
> hypothetisches Wissen über hypothetische Speicher beiseite lässt, die
> alle mit der Realität nichts zu tun haben. kommt man zur realen Frage:
>
> Was versprichst du dir davon? Oder kürzer: Warum?
>
> Oliver

Geschwafel ist unhöflich, beantworte ich nicht.

Mit all den anderen Antworten bin ich sehr zufrieden, sie haben das, was 
ich wissen wollte, umfangreich, detailliert und gut bis sehr gut 
beantwortet.

Vielen Dank nochmal!

MfG

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Kai S. schrieb:
> Ich wollte kein Buch genau für mein Problem, sondern ein gutes Buch über
> Dateisysteme.

Um ein SoC zu booten braucht's dieses Wissen ueber Filesysteme 
ueberhaupt nicht. Da nimmt man erstmal das, was der Hersteller 
vorschlaegt.

Aber wenn's so grundsaetzlich interessiert, wie das so mit Filesystemen 
ist, wuerd' ich mal Dokumentation vom Linux VFS und von Fuse (Filesystem 
in User Space) vorschlagen.
Und dann halt noch von der jeweils persoenlich interessanten 
Filesystemgeschmacksrichtung.

Gruss
WK

von Peter D. (peda)


Lesenswert?

Kai S. schrieb:
> Nehmen wir zum Beispiel einen ATMEL AT27C010, was laut meiner Sicht ein
> "reiner" Speicher, ohne feste Register ist.
> Wenn ich den jetzt in Raspbian auf meinem Raspberry PI als /dev/sda
> einbinden möchte, mit einem Dateisystem versehen und formatieren möchte,
> was muss ich dann noch gemacht haben (vorgeschaltet haben), damit das
> funktioniert?

Einbinden als /dev setzt voraus, daß ja bereits ein Linux gebootet 
wurde, d.h. Dein OS läuft und muß entsprechende Treiber geladen haben, 
um das Filesystem auf dem Chip anzusprechen.
Der AT27Cxx ist ein EPROM, d.h. kann nur mit einem Programmiergerät 
beschrieben werden (VPP = 12V), muß also read only gemounted werden.
Das OS muß nur wissen, an welcher Adresse der EPROM gemappt ist und dort 
die Datenträgerinformationen lesen (Partitionstabelle). Findet das OS 
ein ihm bekanntes Filesystem vor, kann es das mounten.
Ist der EPROM leer (0xFF), kann das OS damit nichts anfangen, also auch 
nicht dessen Größe erkennen oder ob da überhaupt was angeschlossen ist.

Das Booten eines OS ist ein mehrstufiger Prozeß. Nach dem Power-On 
sprint die CPU an den Resetvektor, wo sich ein Festspeicher befinden muß 
und führt dessen Code direkt aus. Dieser kann dann Treiber beinhalten, 
um z.B. ein OS in den RAM zu laden und zu starten (auszuführen).

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.