Am Donnerstag, dem 23.09.2021 um 02:55 -0700 schrieb Trent Piepho: > On Tue, Sep 21, 2021 at 7:11 AM Yunus Bas <Y.Bas@xxxxxxxxx> wrote: > > Here an example: > > The startpage of slot1 is 0x240000. This is the real address, where > > Barebox is flashed into and can also be dumped using the original > > nand0-partition. Now, when a bad-block occurs prior to the > > startpage of > > slot1, let's take for example the block at 0x140000, then offset of > > slot1 changes also in the nand0.bb partition. In the original > > partition > > nand0, slot1 is still at 0x240000, but on nand0.bb, slot1 has been > > moved one block prior to the original offset and changed to > > 0x220000. > > If you partition nand, via e.g. device tree entries, those partition > start offsets are non-BB aware, so do not move. > > So if I write X pages to partition 0 BB and read back X pages, I will > know the crc. And the same for partition 1, even if some blocks in > partition 0 are bad. > > But these "slots" you talk about, I think these are not nand > partitions. Maybe more like the two bootloader slots in an IMX boot > image? Oh, maybe my description wasn't quite understandable, sorry for that. Of course I mean the bootloader slots, which is calculated from the barebox partition size. > > If the position of the slots is determined dynamically at flash time, > then I think your answer is you must also determine it when you check > CRC. For instance, on imx one could create a command that queries > the > FCB to find the two bootloader slot start addresses. Code is already > there in the imx bbu handler, it just needs an interface. Or, > something had to determine this dynamic address of the slot, so have > that process also tell you what it determined. For example, have the > imx bbu code set env variables with the address of the bootloader > slots that it calculates when it flashes barebox. > > If you want to calculate one CRC value for all of NAND, then I think > you can not do that. Because the contents of the entire nand flash > chip are not constant. Instead have a list of CRCs and lengths for > the parts you have actually flashed. Most of flash is usually blank > anyway, why even flash blank space? It just slows down > manufacturing. In our case, we just want to verify if our bootloader has been flashed error-free after the flash process. > > You must just find the start location for these lengths of data that > have CRCs. As above, nand partitions start at a constant location, > so > this is easy. Dynamically determined locations one would need to: > query location if it is stored somewhere, have code that determined > the location also provide the value to the verification code, or > repeat the calculation by which the location was determined in the > first place to independently arrive at the same answer. Thank you for your detailed answer. -- Mit freundlichen Grüßen Yunus Bas -Software Engineer- PHYTEC Messtechnik GmbH Robert-Koch-Str. 39 55129 Mainz Germany Tel.: +49 (0)6131 9221- 466 Web: www.phytec.de Sie finden uns auch auf: Facebook, LinkedIn, Xing, YouTube PHYTEC Messtechnik GmbH | Robert-Koch-Str. 39 | 55129 Mainz, Germany Geschäftsführer: Dipl.-Ing. Michael Mitezki, Dipl.-Ing. Bodo Huber | Handelsregister Mainz HRB 4656 | Finanzamt Mainz | St.Nr. 266500608, DE 149059855 This E-Mail may contain confidential or privileged information. If you are not the intended recipient (or have received this E-Mail in error) please notify the sender immediately and destroy this E-Mail. Any unauthorized copying, disclosure or distribution of the material in this E-Mail is strictly forbidden. _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox