10-07-2009 06:43 AM
From what I understand, using the Xilinx linux kernel and running "make simpleimage....." creates a bzip compressed executable that decompresses itself and runs?
What i am interested in finding out is how to create an uncompressed simpleimage that bypasses the lengthy decompress stage?
Ive attempted to find the information using the web but cant find anything that is useful.
Also, has anyone tried XIP on one of the Xilinx boards?
10-07-2009 06:53 AM
Documentation/powerpc/bootwrapper.txt may be of some help, but I'm not sure if it has exactly what you're looking for.
Can you provide more details regarding XIP? What are you trying to do?
10-07-2009 07:47 AM
Thanks, that answers some of my questions.
My general aim here is to increase the boot time. My observations is that a large amount of time is spent uncompressing (gunzipping) the kernel image, so what i was looking at doing is attempting to store the kernel uncompressed to save time.
At the moment my kernel image is stored in linear flash and is loaded using a BRAM bootloader.
My longer term goal (time permitting) was to try execute in place from flash although im taking it little steps at a time. The aim would be to store the image uncompressed and run it directly without copying to ram first. At the moment however im just trying to see if there would be a performance gain by storing the kernel uncompressed.
11-17-2009 04:34 PM
If you follow the image creation, the kernel image is already available to you in an uncompressed form. The first part is the vmlinux. This is the ACTUAL kernel in an uncompressed form. The next piece you'll need to worry about is supplying the device tree blob (dtb) as well as the initial ramdisk image.
So if you wanted to just generate your kernel, do a
"make vmlinux" and badda boom badda bing, you'll have just the raw kernel.
There's source for an app called addRamDisk (addRamDisk.c) which looks to take the vmlinux and add a ramdisk image to the file, so that may help you on your way a little bit.
Also, you'll want to look at simpleBoot.c since this provides the dtb to the kernel for device loading.
11-17-2009 04:37 PM
BTW, here's a little tidbit for you. On a previous embedded system, I did some timing on running out of flash vs RAM, and you'd be surprised at how much faster it is. When you RAM operates at x00MHz and your FLASH is just barely squeaking by in the ten's of MHz, there is a HUGE impact on the runtime performance. This is especially compounded when your RAM is cacheable and your FLASH isn't.
Just some things to chew on while you do your testing.