
A bit on the reason why this amount of memory is needed.
I had the same problem jeff mentions. After tracing where dlmalloc allocates its memory chunks I found out that it started allocating memory in code space. Overwritting code space eventually resultated in uboot crashing. Looking into dlmalloc I did not find any code that checks whether it allocates memory outside its boundary.
Since I use a 2009.01 release I need to verify this against the latest release.
There is also another problem with ubi. If you repeat the following statements more than once uboot also crashed.
nand erase /aPartition ubi part nand /aPartition ubi create aVolume
I did not check yet if this is also an allocation problem or something totally different.
Hedwin
On Fri, Dec 18, 2009 at 4:07 PM, Jeff Angielski jeff@theptrgroup.com wrote:
Stefan Roese wrote:
On Friday 18 December 2009 13:35:26 hedwin wrote:
Jeff, what is the size of your allocateble memory. Had to increase it to 4MB to get it working.
I've got 1MByte for my test on Kilauea. This should be enough. There is already a compile-time check in the UBI code:
#if (CONFIG_SYS_MALLOC_LEN < (512 << 10)) #error Malloc area too small for UBI, increase CONFIG_SYS_MALLOC_LEN to >= 512k #endif
Please let me know if this really is not enough. But for me, 1MB is working.
As per Hedwin's suggestion I increased my CONFIG_SYS_MALLOC_LEN to 4MB and the error disappeared. Thanks Hedwin! And now the UBI output matches my part (e.g. PEB size).
=> nand erase 0x0 0x40000000
=> ubi part fs1 Creating 1 MTD partitions on "nand0": 0x000000000000-0x000020000000 : "mtd=0" UBI: attaching mtd2 to ubi0 UBI: physical eraseblock size: 262144 bytes (256 KiB) UBI: logical eraseblock size: 253952 bytes UBI: smallest flash I/O unit: 4096 UBI: VID header offset: 4096 (aligned 4096) UBI: data offset: 8192 UBI: empty MTD device detected UBI: create volume table (copy #1) UBI: create volume table (copy #2) UBI: attached mtd2 to ubi0 UBI: MTD device name: "mtd=0" UBI: MTD device size: 512 MiB UBI: number of good PEBs: 2045 UBI: number of bad PEBs: 3 UBI: max. allowed volumes: 128 UBI: wear-leveling threshold: 4096 UBI: number of internal volumes: 1 UBI: number of user volumes: 0 UBI: available PEBs: 2021 UBI: total number of reserved PEBs: 24 UBI: number of PEBs reserved for bad PEB handling: 20 UBI: max/mean erase counter: 0/0 =>
-- Jeff Angielski The PTR Group www.theptrgroup.com