-1

I have a MPC5200 v2.2, Core v1.4 on a phyCORE-MPC5200-tiny Board. DRAM 64 MB, FLASH 16 MB. RTOS VxWorks 6.9.

I have problems when booting the embedded system and it stays in boot loop, when U-Boot/uboot (DENX) tries so load image, saying: "Program Check Exception".

For debugging during development I use an TFTP server to load vxWorks binary directly into the RAM (U-Boot command: 'tftpboot 0x100000 vxWorks.bin'). In this case everything works fine. For release the pure *.bin VxWorks file (size of 8,07 MB (8.462.808 bytes)) gets compressed and packed into a U-Boot compatible image file (with bootloader specific header information) and a resulting size of 5,25 MB (5.509.763 bytes). The image file is put onto flash, from where it is uncompressed and loaded into RAM (U-Boot command: 'bootm 0xff800000'). After then the above mentioned exception is thrown, resulting in rebooting loop (See screenshot below).

I've already investigated that if the prepared image has a size beneath 5 MB, U-Boot loads it without errors. Maybe also the uncompressed file size could be a problem?! (at 8MB?)

enter image description here

Do you have any idea, how this problem can be solved?

too honest for this site
  • 12,050
  • 4
  • 30
  • 52
Chris
  • 739
  • 2
  • 8
  • 23
  • Don't post images of text! – too honest for this site Nov 21 '16 at 01:07
  • It seems, that the problem occurred due to a limit of 8MB in U-Boot, when using bootm command. Any ideas how to bypass this bootm limit? – Chris Nov 21 '16 at 17:17
  • I've investigated, that the failing point is the uncompressing step of 'bootm'. Via TFTP (and the 'cp' command) I've copied the uncompressed binary and the compressed image into the flash. Then I tried again to boot the compressed image with bootm. After the expected crash and reset, I was able to compare the (by 'bootm') uncompressed data in the RAM with the uncompressed binary data in the flash (with the 'cmp' command). Exactly after 8mb, the data no longer match! In a second test I've created an uncompressed image which 'bootm' could boot without a problem. Any ideas? – Chris Nov 22 '16 at 17:18

1 Answers1

1

U-boot(since 2011.06) provides environment variable "bootm_mapsize" to change the space required for booting kernel image.

However, Your u-boot seems really old; & may not contain this.

In your u-boot I understand this value is set in "include/configs/" file as:

define CONFIG_SYS_BOOTMAPSZ (8 << 20) /* Initial Memory map for Linux */

You can change this value & re-compile u-boot to get over the problem.

I hope this helps.

rk1825
  • 273
  • 4
  • 14
  • Thanks for this hint. We will check, if it will influence the behaviour. Initially we could find out, that above parameter is not existing in our version, but correspond to CFG_BOOTMAPSZ instead. – Chris Nov 30 '16 at 08:02