Linux Software Developers Kit (SDK) User Guide
75
B
B
.
.
D
D
i
i
f
f
f
f
e
e
r
r
e
e
n
n
c
c
e
e
s
s
B
B
e
e
t
t
w
w
e
e
e
e
n
n
µ
µ
C
C
l
l
i
i
n
n
u
u
x
x
a
a
n
n
d
d
S
S
t
t
a
a
n
n
d
d
a
a
r
r
d
d
L
L
i
i
n
n
u
u
x
x
The µClinux kernel is a collection of patches to make the standard Linux kernel run on CPUs that
do not have an MMU. As a consequence you will encounter some differences between the
µClinux and the standard Linux behavior. While porting existing Linux applications to
µClinux/ColdFire you should be aware of these limitations:
no fork() – consider using vfork() instead but beware of the difference of their semantics
no daemon() – it is usually implemented on top of fork and cannot be easily replaced without
changing the semantics.
fixed stack size -- the stack of an application is set at execution time and cannot grow during
runtime. The default stack size is 4k! It can be increased with the "-s" option of m68k-uClinux-
elf2flat.
limited libc compared to glibc -- either add more to libc, or remove some functionality.
no support for ELF binary file format
very limited support for shared libraries due to missing MMU -- all applications get linked
statically
mmap() is very inefficient
no paging -- applications have to be loaded completely into RAM, the heap is very
susceptible to fragmentation.
processes do not run in their isolated virtual memory -- they can corrupt other processes and
even the kernel.