Uncompressing linux ..... ..... ..... ..... ..... ...................... No response after the solution

Source: Internet
Author: User
Tags assert

Compile kernel Yes no machine record defined error, there are some solutions on the net, in fact, are wrong, baseless assertion. Do not intend to write their own, to find an article is still reliable, turn to pick a bit.

The root cause is that there is no valid machine ID found between __proc_info_end and __proc_info_begin.

http://hi.baidu.com/rwen2012/item/9f5191c64036d87ecfd4f849

The compiler cannot pass on the new kernel 2.6.29, terminal prompt:

Arm-none-linux-gnueabi-ld:no machine Record defined

Workaround
After the dog search, according to the following methods can be resolved. Put the last two lines of Arch/arm/kernel/vmlinux.lds (below), to annotate, but not to say what

ASSERT ((__proc_info_end-__proc_info_begin), "Missing CPU support")
ASSERT ((__arch_info_end-__arch_info_begin), "No machine record defined")


When I saw it in the arch/arm/kernel/vmlinux.lds, I found that the two lines were written

/* These must never be empty
If you had to comment these-statements out, your binutils was too old (for other reasons as well) */
ASSERT ((__proc_info_end-__proc_info_begin), "Missing CPU support")
ASSERT ((__arch_info_end-__arch_info_begin), "No machine record defined")


I think maybe not my cross compiler is too old for the sake of it, but too new!
I'm using: Sourcery g++ Lite 2009q1-126 for ARM gnu/linux
And the official is: Sourcery g++ Lite 2008q1-126 for ARM gnu/linux

Machine ID Error:
Now the kernel can be compiled correctly after commenting! To replace the new kernel file, prompt after boot:
Uncompressing linux ..... ..... ..... ..... ..... ......................
Then there is no movement, I think it may be decompression after the kernel pass parameters when there is a problem. But what parameters may be out of the question will not know.

Trapped here for a long time! Because this sentence is not a clue! At least there is a word ah ...

After a multi-party search, found a debugging skills, hehe Hey, General people I don't tell him! That is the following workaround mentioned in the Settings kernel debugging, set, and then restart the boot kernel will be a detailed description of the problem.



Because the kernel starts with the SVC mode first, turn off the interrupt, and machine ID, if the machine ID transmitted by Uboot is inconsistent with the compiled kernel machine ID, then fart. The concrete manifestation is: What reaction has not!

Workaround:
1). Execute Make Xconfig

Enter kernel hacking in the configuration, open kernel debugging and kernel low-level debugging functions.

The purpose of these two items is to print out debugging information and re-make Uimage

Starting kernel ...

Uncompressing Linux ..... ..... .... ..... ..... ................... ..... ..... ..... ................. .......... Done, booting the kernel.

Error:unrecognized/unsupported machine ID (r1 = 0x000007d1).

Available Machine Support:

ID (hex) NAME

Compass? 0009

Please check your kernel config and/or bootloader.


Finally see the cause of the obstruction here, is the machine ID error, someone else's machine ID error has at least a name value Ah, my why is empty?

2) is the machine ID not registered? Guess. This step ensures that the system supports an ID containing devkit8000!

Make Xconfig found that there is no devkit option under the System Type menu, certainly where the configuration file has not been added, analyzed, found the/kernel/arch/arm/mach-omap2/kconfig file, devkit8000 support was added at the end of the configuration.

Config Mach_omap3_beagle

BOOL "OMAP3 BEAGLE Board"

Depends on ARCH_OMAP3 && arch_omap34xx

Config mach_omap3_devkit8000

BOOL "OMAP3 DEVKIT8000 Board"

Depends on ARCH_OMAP3 && arch_omap34xx


Then make Xconfig discover the System type menu, select the Devkit option, choose devkit8000, save.

3) The previous step can only be guaranteed to support, to be able to support correctly, but also to modify the following files.

1. We went into the arch/arm/mach-omap2/board_devkit8000.c, and in the last paragraph there was this sentence

Machine_start (omap3_devkit8000, "OMAP3 beggle Board")


Here omap3_devkit8000 is the machine ID code ~ How much is the specific value?

2. Add the last line in the file Arch/arm/tools/mach-types and set our machine ID to 2001.

omap3_devkit8000 arch_omap3_devkit8000 omap3_devkit8000 2001


By modifying the Kconfig and mach-types two files, we can make the system correctly identify our machine ID, and from above we can see that r1= 0x000007d1,0x7d1 is 2001. is consistent with the machine ID that we set.

Uncompressing linux ..... ..... ..... ..... ..... ...................... No response after the solution

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.