i build linux kernel "uImage", and boot board via TFTP, when booting the kernel, it failed, the error message is "Error: unrecognized/unsupported machine ID (r1 = 0x00000ca7).", any suggestion ?
following is the info
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
i build linux kernel "uImage", and boot board via TFTP, when booting the kernel, it failed, the error message is "Error: unrecognized/unsupported machine ID (r1 = 0x00000ca7).", any suggestion ?
following is the info
Hello,
This is because the machine type passed by U-Boot is 0xca7 while the kernel is supporting only TI8148 EVM which has machine type as 0xbbc.
Can you please provide following info?
1) Which U-Boot and kernel sources are you using?
2) Have you done any modifications/additions to U-Boot, Kernel? Particularly, did you add a new board support?
One option to avoid this error is setting U-Boot environment 'machid' to value as expected by kernel, that is, do "setenv machid bbc" but this may not be applicable when you need to boot on a different board than TI8148 EVM.
Hemant
1) Which U-Boot and kernel sources are you using?
U-Boot is on flash provided by Appro, i don't know it's version,
under uboot, i type command "version", got message "U-Boot 2010.06 (Jul 06 2011 - 10:51:44)"
kernel source is "ezsdk_5_02_01_59" for 8148, "linux-2.6.37-psp04.01.00.05.patch1"
2) Have you done any modifications/additions to U-Boot, Kernel? Particularly, did you add a new board support?
Hi Huang,
Noticed the thread and thought I'd chime in on something to look for regarding the "machid".
We're working with TI8168 boards/kernels but I'm sure it follows the same architecture.
If you look into your board specific setup file that the kernel uses in your EZSDK,
[e.g.: $EZSDK/LINUX/arch/arm/mach-omap2/board-ti81[46]8.c] at the bottom you should
see something like:
MACHINE_START(TI8168EVM, "ti8168evm")
/*** STUFF ***/
MACHINE_END
If you look for the TI8168EVM macro [TI8148EVM in your case] in the file
$EZSDK/LINUX/arch/arm/tools/mach-types
you should find the value that the kernel is using for the "machid". This is specified in DECIMAL.
you'll want to convert it to HEX and specify that value when you boot up UBOOT to set the "machid"
to this value.
Hope this helps.
Juan Solis.
Huang,
Machine ID is used by the kernel during boot to identify which board it is running on. The machine type registered for 8148 EVM is 0xbbc which is passed by U-Boot.
In your case, it is possible that the U-Boot was modified to pass a different machine type (0xca7) as the board is different, while the kernel only supports (or built for) 8148 EVM.
As I mentioned, you could try setting 'machid' environment variable at U-Boot prompt to see if kernel boots but the kernel may not boot as you will be running the 8148 EVM code on a different board (e.g., on board peripheral initialization may be impacted due to difference in boards).
Hemant
hi, Hemant
it seems that a new machine type was added by Appro. if set 'machid' at U-Boot prompt, will the board be damaged ?
Huang,
Since the new machine type was added, it is most likely that the corresponding board support was also added in the kernel. Can you check with Appro?
Hemant