steven james wrote:
The DoC has hardware support for a 512B boot plock. On powerup, it loads the first block into a block that 'just happens' to map the end of the block at 0xf000:0xfff0. If the first block has an ECC error, the second block is copied instead (so two copies of docipl). IIRC, the seek=128 is used so that two copies of LinuxBIOS can be stored, one as a fallback image though full support for that never got implemented in the older boards.
Ok, then if i want make a memory map of a eeprom, it will be like this: 0-511 (0x0 - 0x1FF) docipl 512 Bytes 512-1023 (0x200 - 0x3FF) docipl (security copy) 512 Bytes 1024-65535 (0x400 - 0xFFFF) linuxbios.block 64512 Bytes 65536-8323071 (0x10000 - 0x7EFFFF) Free Space 8257536 Bytes = 128x64512 8323072-9109503 (0x7F0000 - 0x8AFFFF) vmlinux.bin.gz.block 786432 Bytes
Then also if im'not wrong, when we make the reset EEPROM 0x0 - 0xFFFF is mapped to the top of memory addres space 0xFFFF0000 - 0xFFFFFFFF, and then the start point 0xFFFFFFF0 is visible in linuxbios.block.
If this is right, sorry but i didn't find the jump into the code of docipl, i suposed that the initial label is "sis630spd_start:" in ipl.S., any one know where is the jump ?
Regards. Xavi.
Hello,
In the script of src/util/mtd/burn_mtd there are these lines ..
- dd conv=notrunc conv=sync bs=65536 if=${linux} of=vmlinux.bin.gz.block
With this we if exist we don't trunc and fix the size of vmlinux.bin.gz.block, if it's more smaller than 65536 we put 0 until this size.
- dd conv=notrunc conv=sync bs=63k if=${linuxbios} of=linuxbios.block
The same but with 63k.
- dd conv=notrunc if=docipl of=/dev/mtd0
We write without trunc /dev/mtd0 with the source of docipl.
- dd conv=notrunc if=docipl of=/dev/mtd0 seek=1
The same but this time we skip 1 block of "bs" (i supose that we can remind the value of bs in the last line, then sizeof(docipl) ).
- dd conv=notrunc if=linuxbios.block of=/dev/mtd0 seek=2
Without trunc we write linuxbios.block to mtd, skipping 2 times the last size (sizeof(docipl) ).
- dd conv=notrunc if=vmlinux.bin.gz.block of=/dev/mtd0 seek=128
Now without trunc write vmlinux skipping 128 times the size of linuxbios.block.
My questions, are:
Why we write two times docipl ? And why we skip 128 times the size of linuxbios.block ? (i supose that i'm wrong, any one can help me with these)