[prev in list] [next in list] [prev in thread] [next in thread]
List: linux-arm
Subject: Mailing List FAQ
From: Russell King - ARM Linux <linux () arm ! linux ! org ! uk>
Date: 2005-12-28 7:00:09
Message-ID: E1ErVI9-0003YP-Rv () flint ! arm ! linux ! org ! uk
[Download RAW message or body]
This message is sent to this mailing list once a week.
This can also be found (with html links) at:
http://www.arm.linux.org.uk/mailinglists/faq.php
Lists
1. How do I compile a kernel for ARM?
2. Can I use Intel IXP425 AccessLibrary with 2.6 kernels?
3. What are the available solutions for floating point support?
4. Can I use the both hard & soft float at the same time or only
choose one of them?
5. When I compile my 2.6.x kernel for ARM I get a compiler/assembler
error. Any idea ?
6. When I trace kernel in head.S I found problems that may be caused
by __turn_mmu_on. Any idea ?
7. I'm working on a bootloader, where can I find ARM Linux kernel
booting requirements ?
8. How can I access /dev/mem ? - How can I map memory in user space ?
9. I see '$a', '$d' and '$t' symbols in the backtrace/ksymoops
output/System.map/linker error messages. What are they and how can
I get rid of them ?
10. Where can I find -rmk -pxa -* patches for the 2.6 kernel ?
1. How do I compile a kernel for ARM?
[rmk]
Please see the kernel compilation instructions.
2. I am trying to run a Linux kernel 2.6 on my Intel IXP42x. I am
using the kernel 2.6.x. This kernel does not include support
for the integrated ethernet controllers of the IXP425. I have
downloaded the AccessLibrary 1.x from Intel, but i have seen it
only supports kernel 2.4. Is there any news about a new version
of the AccessLibrary for 2.6 kernel?
[19 March 2004 - ds]
Unfortunately, the only people who can help you are Intel b/c
they need to port the access library to 2.6 since the code is
under a closed license and even if someone outside Intel ported
it to 2.6, they could not share the code due to the propietary
license.
[14 December 2004 - rmk]
When we say "the only people who can help you are Intel" we
mean it. Please do not post questions about this to the ARM
Linux mailing lists on the off chance. It just winds certain
people up. We can't help you. We can't even suggest where you
might get help from, other than Intel directly. Talk to your
Intel representative, or if you don't know who that is, your
manager. The best information we have is in the above FAQ
entry.
The linux-arm* lists are for supporting Open Source only and
not for random proprietary closed source products.
3. I feel really confused about what's the difference with gcc
soft-float support and the kernel NWFPE/FastFPE support?
[31 January 2004 - np]
Scenario 1 (hard-float): The compiler emits opcodes designed to
be used with a hardware floating point coprocessor (FPU). The
FPU usually has a set of extra registers for its use, and the
compiler may as well pass floating point argument to functions
through those registers. This is of course the best performing
solution when a real hardware FPU is used.
Scenario 2 (soft-float): the compiler converts floating point
operations into function calls and a special library is used to
provide all functions performing the required operations, all
in software with no FPU instructions at all. There is obviously
no extra floating point registers available in this case,
therefore all FP arguments to functions have to be passed
through standard registers or on the stack. This is of course
the best performing solution when no hardware FPU is available,
given that the library implementing the FP operations is
optimally coded.
Now, unfortunately, the default on ARM Linux has traditionally
been set to have the compiler use hard-float, even if ARM Linux
never ran on any ARM CPU with a real hardware FPU. The CPU is
therefore raising the invalid instruction exception each time
some FPU opcode is encountered. Then the kernel traps that
exception, looks at the given FPU instruction and emulates it
in software. But here not only the kernel must perform the FP
operation, it must emulates the whole hardware FPU as well.
That's what NWFPE or FastFPE are doing. This is obviously the
worst performing arrangement that can be due to the exception
trap and emulation overhead
4. Can I use the both hard & soft float at the same time or only
choose one of them?
[31 January 2004 - np]
Depends. You can use both at the same time, but not in the same
application. The problem as to do with the ABI incompatibility
between soft-float and hard-float due to the different floating
point argument passing conventions. So, if you decide to switch
to using soft-float for some application, you MUST recompile
ALL the libraries that application is going to use, including
system libraries like the C library. If those libraries are
dynamically linked libraries, you then must also recompile all
the applications that share those same libraries. And then your
application will run correctly only on systems with soft-float
environments, unless you link it statically in which case it
will run anywhere (even on a kernel with NWFPE configured in --
it will simply not be invoked). That's the main reason why
mainstream ARM distributions are still reluctant to switch to
soft-float because of the associated compatibility pain.
5. When I compile my 2.6.x kernel for ARM I get a compiler/assembler
error. Any idea ?
[2 April 2004 - rmk]
When reporting these problems, always show the full build line.
This can be obtained by re-running the make with an additional
argument: V=1
6. When I trace kernel in head.S I found problems that may be caused
by __turn_mmu_on. Any idea ?
[5 April 2004 - rmk]
Please read the comment in head.S:
/*
* Enable the MMU. This completely changes the structure of the visible
* memory space. You will not be able to trace execution through this.
* If you have an enquiry about this, *please* check the linux-arm-kernel
* mailing list archives BEFORE sending another post to the list.
*/
It's been asked soo many times that it really is a frequently
asked question. The above comment is supposed to head off
further questions, but alas... Hopefully this FAQ entry will do
the job.
[11 January 2002 - rmk]
The number 1 problem is that people just do not realise what
"enabling the MMU" means. It means that _all_ of the
addressable memory _will_ change, and this normally means
various regions you'd like to write to no longer exist - in
other words, if you have debugging code present that doesn't
cater for a complete change in the memory structure, then your
debugging code is buggy.
(Side note: I've even had people insist that their debugging
code is perfect, even after mentioning the above, and then
we've gone through several mails, ended up having the debugging
code posted, and it turns out to buggy, assuming that the LEDs
at some random address are still accessible.)
The best advice is if you're using your own debugging code,
remove it. Use the debugging printascii() stuff for your
platform in arch/arm/kernel/debug-armv.S (enabled by
CONFIG_DEBUG_LL) and drop a printascii() into printk()
(kernel/printk.c) just after the vsprintf() call, and monitor
the relevant serial port.
7.I'm working on a bootloader, where can I find ARM Linux kernel
booting requirements ?
[7 June 2004 - rmk]
First of all, we don't need another boot loader. If you're
planning on writing one from scratch, please don't. Use one of
the existing boot loaders, such as blob or uboot.
For kernel booting requirements, please see the website:
+ 2.4.18-rmk6 and 2.5.17 and later booting requirements
+ Setting R2 correctly for booting the kernel (explaination of
booting requirements).
8.How can I access /dev/mem ? - How can I map memory in user space ?
[10 July 2004 - rmk]
No need to reinvent the wheel, you will find a sample
implementation of this type of thing in devmem2. See
http://www.lart.tudelft.nl/lartware/port/devmem2.c for the
source.
9.I see '$a', '$d' and '$t' symbols in the backtrace/ksymoops
output/System.map/linker error messages. What are they and how
can I get rid of them ?
[12 July 2004 - rmk]
These are "mapping symbols", which are used in the generation
of some binary formats, added by binutils 2.15. Unfortunately,
they leak into the symbol table, and as such interfere with the
linkers ability to find the correct symbol to report for error
messages. They also appear in the objdump --syms and nm
outputs, and affect the operation of the kernel backtrace and
ksymoops outputs.
In order to work around this problem, I recommend not using
binutils 2.15 for the time being. Please use an earlier
binutils version like 2.14 instead. However, please ensure that
you have applied this fix.
10.Where can I find -rmk -pxa -* patches for the 2.6 kernel ?
[21 December 2005 - eb]
Since 2.6, all the ARM support is directly pushed in the
mainstream kernel, so you shouldn't need any patch. Just get
the official 2.6.x stable kernel from http://www.kernel.org/ or
the latest development version from the git tree at
http://www.kernel.org/git/?p=linux/kernel/git/torvalds/linux-2.
6.git;a=summary. Russell King's development git tree is synced
every two days with Linus' tree so you only need to keep synced
with Linus' one. As usual, you will find patches awaiting
review in Russell King's patch system here:
http://www.arm.linux.org.uk/developer/patches/
_________________________________________________________________
People listed above:
* ds - Deepak Saxena
* eb - Eric Benard
* erikm - Erik Mouw
* np - Nicolas Pitre
* rfs - Ralph Siemsen
* rmk - Russell King
Special thanks to Eric Bénard for volunteering to look after this FAQ.
Last modified: December 14, 2004
-------------------------------------------------------------------
List admin: http://lists.arm.linux.org.uk/mailman/listinfo/linux-arm
FAQ: http://www.arm.linux.org.uk/mailinglists/faq.php
Etiquette: http://www.arm.linux.org.uk/mailinglists/etiquette.php
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic