Forum Linux.embarqué Erreur upgrade bios avec flashrom

Posté par  .
Étiquettes : aucune
1
22
juin
2010
Bonjour,

J'aimerai installer un coreboot sur une carte Alix 1c de PC Engines.

En utilisant flashrom, j'arrive à lire le bios de la carte, mais lorsque je veux écrire / effacer le bios, j'ai un message d'erreur :

Found chip "SST SST49LF040B" (512 KB, LPC) at physical address 0xfff80000.
Writing flash chip... Erasing flash chip... ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x00000fff: 0xfed
ERASE FAILED!
ERASE FAILED at 0x00000000! Expected=0xff, Read=0x25, failed byte count from 0x00000000-0x0000ffff: 0xfee4


Apparement c'est un problème d'adressage, en cherchant un peu sur le net j'ai trouvé ce lien, c'est quelqu'un qui a eu le même problème et qui l'a résolu en modifiant flashrom :

http://www.mail-archive.com/flashrom@flashrom.org/msg00136.h(...)


J'ai donc été voir dans les sources de flashrom :

{

.vendor = "SST",
.name = "SST49LF040B",
.bustype = CHIP_BUSTYPE_LPC, /* A/A Mux */
.manufacture_id = SST_ID,
.model_id = SST_49LF040B,
.total_size = 512,
.page_size = 64 * 1024,
.feature_bits = FEATURE_EITHER_RESET,
.tested = TEST_OK_PR,
.probe = probe_jedec,
.probe_timing = 1, /* 150ns */
.block_erasers =
{
{
{
.eraseblocks = { {4 * 1024, 128} },
.block_erase = erase_sector_jedec,
}, {
.eraseblocks = { {64 * 1024, 8} },
.block_erase = erase_block_jedec,
}, {
.eraseblocks = { {512 * 1024, 1} },
.block_erase = NULL,
}
},
.write = write_jedec_1,
.read = read_memmapped,
},



J'ai essayé 2 / 3 modifs avec les nombres 64 et 128, mais aucun n'a résolu le problème.

Sinon, il y'a la datasheet du chipset :

http://www.datasheetarchive.com/pdf-datasheets/Datasheets-31(...)
  • # y'en a qu'on essayé ....

    Posté par  . Évalué à 3.

    ils ont eu des problèmes
  • # interupteur ?

    Posté par  . Évalué à 2.

    y a pas un interupteur physique pour proteger la ROM ?

    de memoire (quand j'etais à l'ecole... pfiou ,ca date...) il fallait basculer une pate du chipset au niveau 1 ou 0 pour pouvoir programmer la rom

    enfin je dis ca, je connais pas la carte Alix 1c...
    ;)
    • [^] # Re: interupteur ?

      Posté par  . Évalué à 1.

      Je n'y avait pas pensé, mais ce n'est pas marqué dans la doc.
    • [^] # Re: interupteur ?

      Posté par  . Évalué à 2.

      Non, c'est fini depuis belle lurette.

      Tu fais comment dans le cas de 300 serveurs ou d'un portable? :)

      Comme il est coutume de vendre du matos avec des micrologiciels incomplets ou nécessitants un tas de mise à jour, l'idée de l'interrupteur physique a été abandonné. :)

      Non, maintenant ils doublent les ROMS en cas de corruption d'une des deux.
      • [^] # Re: interupteur ?

        Posté par  . Évalué à 3.

        Regarde la datasheet avant de dire des choses comme ca !
        On n'a toujours pas fait mieux qu'une broche dédiée pour protéger du contenu :


        TBL# Top Block Lock
        When low, prevents programming to the boot block sectors at the top of the device memory.
        When TBL# is high it disables hardware write protection for the top block sectors. This pin cannot be left unconnected.


        WP# Write Protect

        When low, prevents programming to all but the highest addressable blocks.
        When WP# is high it disables hardware write protection for these blocks. This pin cannot be
        left unconnected.


        Bon, ca ne veut pas dire que se soit l'explication du problème dans ce cas précis, mais bon...
        • [^] # Re: interupteur ?

          Posté par  . Évalué à 2.

          ben ca pourrait, si le programme de mise à jour (flashrom) ne detecte pas bien la PROM

          il pourrait ne pas mettre la broche au niveau 1 ? et donc ne pas pouvoir ecrire dedans...

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.