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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.