Forum: Mikrocontroller und Digitale Elektronik AT91 bootstrap ecc nand?


von Nico (prinzenrolle)


Lesenswert?

Hallo,
ich kämpfe mich noch immer in die arm welt ein ;)

ich habe hier die nächsten fragen:

soweit ich gelesen habe sollte man nand flash stets nur mit ecc nutzen.

jetzt gibts es von atmel folgende beiträge zum bootstrap in verbidung 
mit dem nand-flash und ecc:
NAND Flash Boot The NAND Flash bootloader program uses the EBI CS3. It 
uses both valid code detections. First it searches a boot.bin file. Then 
it analyzes the ARM exception vectors. The first block must be 
guaranteed by the manufacturer. There is no ECC check

So weiter unten in der PDF steht allerdings das:
Boot ROM: NAND Flash boot does not support ECC Correction The boot ROM 
allows booting from block 0 of a NAND Flash connected on CS3. However, 
the boot ROM does not feature ECC correction on a NAND Flash. Most of 
the NAND Flash vendors do not guarantee anymore that block 0 is error 
free. Therefore we advise to locate the bootstrap program into another 
device supported by the boot ROM (DataFlash, Serial Flash, SDCARD or 
EEPROM), and to implement a NAND Flash access with
ECC.
Problem/Fix Workaround
None

So ich würde gerne das NAND einsetzen
http://download.siliconexpert.com/pdfs/2010/2/28/7/1/33/850/nmnyx_/manual/nand02g-b2d.pdf

Dort ist zwar zu finden das block 0 im auslieferungszustand okay ist 
aber danach oder sonstiges nichts.

Wie löst man nun ein solches Problem?
Was habt ihr gemacht?
Angenommen ich bekomme den Bootstrap so hin das bootstrap vom spi flash 
gestartet wird, und bootstrap startet dann uboot aus dem nand, dann 
hätte ich doch noch immer das ecc problem oder?
Wie sieht man denn das Linux oder uboot ecc nutzen?
Wer oder was schaltet das ecc an?
Wie erkenne ich ob es HW oder SW ecc ist,
da im datenblatt des at91sam9g45 was von hw ecc steht.

gruß und danke

von Bin neu hier (Gast)


Lesenswert?

Hi, eins vorab, den Atmel kenn' ich nicht so gut. Aber NAND ECC ist 
relativ aufwendig. Selbst wenn's in HW gemacht wird, muß noch verglichen 
werden usw. Daher versucht man dies während der Bootphase zu vermeiden. 
Der übliche Weg ist ein 2nd-Level Bootloader im ersten Block des NANDs. 
Damit ist man flexibler als mit dem Boot-ROM. Dieser 2nd-Level Booter 
wird recht selten geändert, daher dürfte die eingeschränkte 
Zuverlässigkeit, aufgrund des fehlenden ECC kein Problem sein. Alle 
anderen Blöcke werden auf jedenfall mit ECC geprüft, egal ob Linux oder 
was auch. Übrigens kann auch der erste Block mit ECC geprüft werden, 
wenn es sein muß. Macht aber keinen Sinn, dazu müßte die Prüfung im 
Boot-ROM erfolgen, welches Du nicht ändern kannst. Hilft das ? Das 
ausgesuchte NAND hat einen Cache und unter bestimmten Umständen ein 
eingebautes ECC. Schau da mal genauer nach.

von Nico (prinzenrolle)


Lesenswert?

Bin neu hier schrieb:
> Daher versucht man dies während der Bootphase zu vermeiden
Geht das? Ist es nicht notwendig auch beim Lesen in der ersten bootphase 
ECC durchzuführen?

> Alle
> anderen Blöcke werden auf jedenfall mit ECC geprüft, egal ob Linux oder
> was auch.
Wie das?

Der AT91 hat wohl verschiedene Bootphasen:
- int. ROM Code sucht bootfähiges Medium
- bootstrap
- uboot
- linux kernel
--------------
Woher weiß ich denn wer ecc benutzt und wer nicht?
Sollten nicht eigentlich alle ecc nutzen?

Wie wird es denn normal gelöst?

Ich kann wohl auch den bootstrap in ein spi flash legen, und der startet 
dann uboot im nand.

Was ich im Datenblatt des NAND gefunden habe ist dies:
> Devices are shipped from the factory with block 0 always valid and the
> memory content bits, in valid blocks, erased to ’1’.
Das besagt aber doch nur aus das bei der Auslieferung Block 00 okay ist,
nur könnte es ja passieren das es erste schreiben schon fehl schlägt 
ohne ECC oder?

danke für die Antworten

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.