I'm trying to make eboot bin file bigger to store more data in it but after I've changed image_cfg.h .inc and eboot.bib file PB build bin file with the same size as before changes were made. What else need to be changed?
I think you haven't modified the eboot.bib file correctly.
For example, if you wants to modify the eboot from 512KB to 768KB, in eboot.bib
$(TARGETNAME) 80040000 00080000 RAMIMAGE
should be update to
$(TARGETNAME) 80040000 000C0000 RAMIMAGE
should be updated to
Don't know how I missed that. Now it works and have to move a little starting points for WinCE. Any advice ?
Thanks for your post.
Problem now is with downloading images. When I try to run USB Serial or RNDIS driver eboot just hangs after sending USB descriptor to PC (after MAC setting under RNDIS). Any thoughts??
I think if you just modify the EBOOT image size, it will not impact the EBOOT function, if you can show all of your modifications, it will be helpful to identify your issues.
So I changed in image_cfg.inc and in image_inc.h this line:
$(TARGETNAME) 80040000 00100000 RAMIMAGE
and other file (picdata.h in EBOOT) to fit boot picture for the whole screen that we use.
Eboot.bin is now 1017KB and Platform builder make nb0 nb1 and nb2 which are 1024/1024/512KB accordingly.
To be more specific this is my eboot.bib now:
ARGS 80000000 00001000 RESERVED XLDR 80001000 00001000 RESERVED STACK 80002000 0003A000 RESERVED PAGE_TABLE 8003C000 00004000 RESERVED $(TARGETNAME) 80040000 00100000 RAMIMAGE;IPL is obsolete, remove it to avoid potential romimage issue ;IPL 80140000 00040000 RESERVED RAM 80140000 00120000 RAM; Flash cache (used to store eboot.bin or nk.bin before flashing) FCACHE 80260000 07D80000 RESERVED
No issue was found in your modification, I think in file "picdata.h" there is a big data array for the boot picture, maybe it is too big, if you removed that file and just built the eboot to 1MB size, is it OK in your side? If it works, I think you should change the big data array in "picdata.h" to some small arrays.
And since you had modified the FCACHE address, another file "platform\imx51-evk\src\bootloader\common\loader.h" should be updated too. It is hard coded for 0x200000.
#define BOOT_TOTAL_RAM_SIZE 0x200000 // see eboot.bib/sboot.bib to compute size
In your case, it should be
#define BOOT_TOTAL_RAM_SIZE 0x260000 // see eboot.bib/sboot.bib to compute size
I tried without array (I made just 1x1 with one initialized value in it) and it's the same. RAMSIZE (RAM value in eboot.bib) should be bigger than TARGETNAME? I do have like that now, but want to be sure. Do you have any suspects what could be the reason?
RAMSIZE is not related with RAMIMAGE size, but please try with the updated #define BOOT_TOTAL_RAM_SIZE 0x260000.
Ok. Problem fixed. There was ca. 500 bytes that couldn't fit in other words $TARGETNAME was slightly too small.
This is how it looks:
; ------- -------- -------- ---- ARGS 80000000 00001000 RESERVED XLDR 80001000 00001000 RESERVED STACK 80002000 0003A000 RESERVED PAGE_TABLE 8003C000 00004000 RESERVED $(TARGETNAME) 80040000 00110000 RAMIMAGE;IPL is obsolete, remove it to avoid potential romimage issue ;IPL 80140000 00040000 RESERVED RAM 80150000 00120000 RAM; Flash cache (used to store eboot.bin or nk.bin before flashing) FCACHE 80270000 07B80000 RESERVED PIC 87DF0000 00200000 RESERVED
and in loader.h
#define BOOT_TOTAL_RAM_SIZE 0x270000
One more thing. What about ROMOFFSET in eboot.bib.
Right now it's:
IF IMGSDMMC !
IF IMGNAND; 0x9F7F0000 = (0x80040000 + ROMOFFSET) & 0xFFFFFFFF ; ==> ROMOFFSET = 0x177B0000 ROMOFFSET=1F7B0000ENDIF
IF IMGNAND !; 0x9F301000 = (0x80040000 + ROMOFFSET) & 0xFFFFFFFF ; ==> ROMOFFSET = 1F2C1000 ROMOFFSET=1F2C1000ENDIF
IF IMGSDMMC ; 0x9FA20000 = (0x80040000 + ROMOFFSET) & 0xFFFFFFFF ==> ROMOFFSET = 0x1F9E0000 ROMOFFSET=1F9E0000; ENDIF
Since you haven't changed the EBOOT run address (0x80040000), no change was needed for ROMOFFSET.
But in your change, your RAM (RAM 80150000 00120000 RAM) had cover the address 0x80200000, this address is the WinCE NK running address, that means EBoot need load NK.nb0 to it, but the EBoot itself had used this address, that will be problem, your will fail to boot the NK.
I think the simple way is just keeping the default eboot size, and put your "picdata.h" to binary file, and use some reserved SD sectors to store it. And when the eboot wants to show it as boot screen, it can read the data from SD card to framebuffer.
I get your point, but we don't use SD card but NAND flash instead, so it was quite easy to store image in an array as it's coded already. Question is...how much RAM do I need in eboot?
You can set "RAM 80150000 00080000 RAM", it is also OK
How to change the ROMOFFSET value according to the eboot run address?? In .bib file where I need to change the ROMOFFSET.??
I am confused with that. Can somebody tell me how .bib files work??
Retrieving data ...