On 12 August 2015 at 13:21, Dave Kitchen <dave.kitchen@xxxxxxxxx> wrote: > > I have just started to work with barebox on an Atmel at91sam9g45 processor. > The board has an Atmel AT45DB161 dataflash configured as 528-byte page size. > I find that eg saveenv command does not run as the page erase fails with > EINVAL. On tracing this is fired from the page size and offset correction > code [mtd/core,c mtd_erase_align()] which uses bit masking to align the size > and offset. Unfortunately bit-masking does not work with non-power-of-2 > pages. Has anyone else addressed this problem? > Yes, it's a bit of an annoying problem... The easy solution (if you can spare the space) is to increase the partition size, e.g. 128*528 should work (which is what I'm currently using) and any multiple thereof. I'm fairly certain that 64*528 (and any multiple thereof) should also work, but it was a while since I messed around with that so you'll have to test it yourself. You can also reprogram the device to present pages that are power-of-two, but you should be aware that you lose some space (pages*16) and the process is not reversible (you've been warned!), see the datasheet for more information. Best, Simon Aittamaa > The 'trivial' exercise of replacing the bit masks by modulo [%] operator > does not succeed as the compiler I am using (gcc!) does not support > long-long divmod. > > Regards > Dave Kitchen > InSync technology Ltd > > > _______________________________________________ > barebox mailing list > barebox@xxxxxxxxxxxxxxxxxxx > http://lists.infradead.org/mailman/listinfo/barebox _______________________________________________ barebox mailing list barebox@xxxxxxxxxxxxxxxxxxx http://lists.infradead.org/mailman/listinfo/barebox