[U-Boot-Users] bug tracing to PPC82xx system hang-up after enable_interrupts
tony liu
tliu at salira.com
Fri Feb 1 14:02:03 CET 2008
Wolfgang,
For the FAT size issue, I believe something is wrong in my building caches. Because when I reconfigure FAT support back to my CONFIG_COMMANDS and recompile again, I can't build such a big u-boot.bin any more. Then I remove FAT again, make distclean; add FAT back; make distclean; make again. I am still unable to get the previous so big one. Following is the final size even with FAT enabled:
-rwxrwxr-x 1 dev dev 147384 2008-02-02 00:52 u-boot.bin
For the enable_interrupt() will cause my board abnormal issue, I found some threads to it (Malloc buffer is smaller than ENV_SIZE, which would cause env_ptr to be an invalid pointer -- 0x0000008 in env_relocate()). Either to adjust the judgment in lib_ppc/board.c or to enlarge the CFG_MALLOC_LEN to be a much bigger value than CFG_ENV_SIZE can make the pointer valid and prevent the system from being abnormal. But I think to change the judgement in lib_ppc/board.c should be preferred. According to the codes, it is going to automatically enlarge the TOTAL_MALLOC_LEN by CFG_ENV_SZE unless following conditions:
ENV_ADDR+ENV_SIZE is bigger than or equal to CFG_MONITOR_BASE
AND
ENV_ADDR is smaller than or equal to CFG_MONITOR_BASE
Since things when ENV_ADDR+ENV_SIZE is equal to CFG_MONITOR_BASE should be also considered as an condition to enlarge the TOTAL_MALLOC_LEN by CFG_ENV_SIZE, the above judgment should be changed as:
ENV_ADDR+ENV_SIZE is bigger than CFG_MONITOR_BASE
AND
ENV_ADDR is smaller than or equal to CFG_MONITOR_BASE
Regards,
Tony
-----邮件原件-----
发件人: wd at denx.de [mailto:wd at denx.de]
发送时间: 2008年2月1日 20:09
收件人: tony liu
主题: Re: 答复: U-Boot bug fix report (rellocate error)
In message <BD41C75853FA124BB535FAB82C56E2910196EC76 at sons-exch05.salira.com> you wrote:
>
> Thanks for replying me. I'll post messages to the mailing list in the
> later. And also I will get and try the 1.3.1 revision.
You should have posted *this* message on the ML, too.
> The answer to the question why my u-boot is so big is: I've enabled the
> FAT support; if I disable this, the U-boot can be in about 160K.
No, that cannot be the reason. FAT code does not make for 200 kB, it
adds a mere 8 kB of code & data:
-> size fs/fat/libfat.a
text data bss dec hex filename
5532 132 8 5672 1628 fat.o (ex fs/fat/libfat.a)
1220 576 0 1796 704 file.o (ex fs/fat/libfat.a)
> The answer to the question why I think it needs to preserve RAM for
> environment is: according to the codes in lib_ppc/board.c, it seems when
> ENV is defined in a place behind of TEXT_BASE + sizeof(u-boot.bin) in
> FLASH, system needs to preserve a bigger MALLOC size in memory.
You have to configure your system correctly.
> flash. But I still don't know why it needs to reserve more memory when
> ENV is defined behind of TEXT + sizeof(u-boot.bin) in flash.
If your environment size is smaller than a full sector size, U-Boot
will try not to overwrite the remaining part of the sector, so it
needs a scratch buffer of the size of your flash sector.
If you reply, please do so on the ML!
Best regards,
Wolfgang Denk
--
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
The first thing we do is kill all the lawyers.
(Shakespeare. II Henry VI, Act IV, scene ii)
More information about the U-Boot
mailing list