Je vais avoir problème pour comprendre un morceau de code dans le pilote MTDaide à comprendre macro
#define ROUNDUP(x, y) ((((x)+((y)-1))/(y))*(y))
...
static struct mtd_partition my_parts[] =
{
{
.name = "boot",
.size = 0,
.offset = 0,
.mask_flags = MTD_WRITEABLE
},
{
.name = "linux",
.size = 0,
.offset = 0
},
{
.name = "rootfs",
.size = 0,
.offset = 0,
.mask_flags = MTD_WRITEABLE
},
{
.name = "nvram",
.size = 0,
.offset = 0
},
{
.name = 0,
.size = 0,
.offset = 0
}
}
...
i = (sizeof(bcm947xx_parts)/sizeof(struct mtd_partition)) - 2;
bcm947xx_parts[i].size = ROUNDUP(NVRAM_SPACE, mtd->erasesize);
bcm947xx_parts[i].offset = size - bcm947xx_parts[i].size;
Alors voici mes questoins: 1) pourquoi est-il nécessaire d'arrondir la taille de la partition? 2) pourriez-vous aider à comprendre comment les arrondis fonctionnent? 3) le pilote flash dans le chargeur de démarrage sur la même plate-forme n'effectue pas l'arrondi pour cette partition spécifique, donc la disposition flash a des décalages différents dans le noyau et dans le bootloader. Quelle est la raison pour ça?
Merci d'avance pour tous les commentaires utiles!