[U-Boot] Adding new partition in uboot
David Gibson
david at gibson.dropbear.id.au
Thu Apr 1 20:51:47 CEST 2010
On Sun, Mar 21, 2010 at 06:13:44PM -0400, Sagar Heroorkar wrote:
> Hi David,
>
> I was exploring the ways to add partition into the blob dynamically.
>
> I followd the following steps.
>
> 1) say we have 5 partitions. Flash size is 128mb
>
> norflash at 0,0{
> 1----------
> 2------------------
> 3
> ----
> 5
> partition at f80000 {
> label = "u_booot";
> reg = <0xf80000 0x60000>;
> };
>
> 2) i am trying to add 6th partition dynamically in uboot.
>
> I used the the nodeoffset of norflash at 0,0 which is parent offset wher i
> want to create 6th partiton. I passed this parent offset to
> ret = fdt_add_subnode(blob,nodeoffset,
> "partition at 6800000");
You should check ret for errors (< 0) before continuing.
> nodeoffset = ret;
> ptr[0] = 0x6800000;
> ptr[1] = 0x800000;
How is ptr declared?
> offset = 0x6800000;
> regs[0] += size_delta;
How is regs[0] initialized?
> memcpy(regs, ptr, plen);
Where did plen come from?
> ret = fdt_setprop(blob, nodeoffset, "reg", regs, plen);
You should check for errors here too.
> I am printing the the blob later. i see that node is created but the last
> partition ie u-boot @ f80000 is going away.
>
> the blob size is 8000 byes which we built using the
>
> dtc -S 8000 -R 7 -I dts -O dtb -o file.dtb file.dts
>
>
> Let me know if we need to increase size of the blob or something which i m
> missing.
> This is going to help a lot if you can reply.
For this case where there's a flash partition that's sometimes there
and sometimes not, it might be simpler to put all the partitions,
including the not-always-present ones in the dts. Then you can use
fdt_nop_subnode() to remove the extra one on systems where it's not
present.
--
David Gibson | I'll have my music baroque, and my code
david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_
| _way_ _around_!
http://www.ozlabs.org/~dgibson
More information about the U-Boot
mailing list