Hi
I was cross-compiling a Linux kernel 2.6.38 for a Gumstix Overo which is a tiny ARM (TI OMAP 35xx) based single board computer. I was using Linaro cross compiler (arm-linux-gnueabi-gcc) did not give an uImage that gets pass the Loading uImage. My console is ttyO2 and therefore it was not an issue. So I used Code Sourcey G++ Lite (64 bits version without ia32 library) and the kernel image uImage.bin built with the same configuration file (.config) but with different cross compiler can boot up to the stage that the kernel tries to mount ext3 partition on microSD card. So I suspect the package gcc-linux-arm-gnueabi has some bugs. I have a working 2.6.35 kernel (although I do not have the .config file with settings which I have used to build that) that was built with Linaro Gcc 4.3 or 4.4. I suspect the Linaro Gcc 4.5.x and above are giving me a problem. I used the Linaro media create tool with root file system and hardware pack but it also could not help me boot nor give me the right config file which I can use to cross compile a working kernel (that is booting kernel) for Overo computer.
So I tried also native compilation using Linaro GCC 4.5 but it is not working. I wonder has anyone face the same issue like me, I think I am wrong somewhere (the last time I cross compile the kernel was pretty much straight forward and I dont remember I had to patch the kernel I fetched from a git repository. But I will be glad to hear who has faced similar problems like me. Any tips will be appreciated. Even better, I will be glad to learn where did you download (git fetch or git clone or wget or just http download), your tool chain, your workstation (my original laptop was 32 bits dual core DELL and now I am using a 64 bits Intel i7 so I am not sure which set up is biting me). Any tip or link will be appreciated.
Sincerely
Aung
On 31 May 2012 00:48, AKS aungkyas@gmail.com wrote:
Hi
I was cross-compiling a Linux kernel 2.6.38 for a Gumstix Overo which is a tiny ARM (TI OMAP 35xx) based single board computer. I was using Linaro cross compiler (arm-linux-gnueabi-gcc) did not give an uImage that gets pass the Loading uImage. My console is ttyO2 and therefore it was not an issue. So I used Code Sourcey G++ Lite (64 bits version without ia32 library) and the kernel image uImage.bin built with the same configuration file (.config) but with different cross compiler can boot up to the stage that the kernel tries to mount ext3 partition on microSD card. So I suspect the package gcc-linux-arm-gnueabi has some bugs. I have a working 2.6.35 kernel (although I do not have the .config file with settings which I have used to build that) that was built with Linaro Gcc 4.3 or 4.4. I suspect the Linaro Gcc 4.5.x and above are giving me a problem. I used the Linaro media create tool with root file system and hardware pack but it also could not help me boot nor give me the right config file which I can use to cross compile a working kernel (that is booting kernel) for Overo computer.
Hi Aung. You might be running into an unaligned access fault. The ARMv6 and above can do unaligned loads and stores from memory. Later versions of upstream and Linaro GCC use these instead of the older byte-by-byte operations.
Unfortunately older kernels turn off this hardware support when in kernel mode and trap instead. Could you try adding a '-mno-unaligned-access' and try again?
-- Michael