dfasdfasdfsda

Download Report

Transcript dfasdfasdfsda

Linux OS Porting on
Create XScale-PXA270
Linux kernel porting
Outline
History and Evolution
Operating system Concepts
Linux versus other Unix-like kernels
Differences with User Application
Linux versions
Steps of porting
Reference
2
History of Linux
First time, the Linux kernel is published at
1991/10/5
 “Free
minix-like kernel sources for 386-AT”
 Linus Torvalds studied MINIX OS first, and
learned about hardware knowledge of Intel
80386 process
 hacking
the kernel, trying to port some GNU
software (gcc, bash, ..) on MINIX-386
3
History of Linux (cont’)
Linus named his operating system “FREAX”
and upload it to the server ‘ftp.funet.fi’
Ari Lemke, the server administrator,
doesn’t like this name and changed the
directory name to “Linux”
 for
the homophonic of the inventor, Linus
4
Evolution of Linux
Linux is a member of the large family of
UNIX-like operating system
 Unix
is simple and well-designed
 Unix consider all the things as ‘files’ in system
 Kernel and system utilities are written by C
language which is portable
 very short time to create process
 easy and stableness inter-process
communication
5
Evolution of Linux (cont’)
The kernel aims to be compliant with the
IEEE POSIX (Portable Operating System
Interface for Computing Systems)
a
standard to describe API of operating system
 to promise the applications could porting to
many operating systems without changing the
source
 based on practice and experience of Unix
6
Evolution of Linux (cont’)
Linux isn’t a commercial operating system
 its
source code under GNU General Public
License which is open and available to anyone
to study
 basic software on Linux is produce from GNU
projects
Internet brings Linux to the world
 hackers
from different countries devote their
life to progress Linux on Internet
7
Operating system Concepts
An operating system can roughly explain to
some components of system
 ‘system’
contains operating system and any
applications working on the operating system
These components include kernel, device
drivers, boot loader, command shell or
other user interfaces, and some basic file
and system utility tools
8
Operating system Concepts (cont’)
Here talks only ‘kernel’, the deepest of an
operating system
A kernel needs to provide root services for
other parts in system
Kernel also have to manage hardware and
allocate system resources
Sometimes a kernel can be explained as
‘supervisor of OS’ or ‘core’
9
Operating system Concepts (cont’)
Some special elements of kernel are:
 interrupt
handlers, used to services interrupt
requests
 scheduler, let many processes to share CPU
slices
 memory manage system, handle process
address space
 system utilities like network services or interprocess communication protocol
10
Operating system Concepts (cont’)
In modern system, which has protected
memory management units, a kernel
program will have higher system state
 kernel
programs have un-limited hardware
access rights and work in a protected memory
space named kernel-space
 user programs could only access some parts
of system resources and could not control
hardware directly
 user programs are working in user-space
11
Operating system Concepts (cont’)
If a user program has to access some kind
of hardware, it use system call to ask
kernel handle the request action
Almost all the architectures that Linux
supported provide the concept of interrupts
 when
hardware want to communicate with
system, it will send a interrupt to let kernel stop
and handle it’s request
 kernel will use interrupt numbers to choose a
specific interrupt handler
12
Operating system Concepts (cont’)
In fact, we can induce that CPU are doing
one of three things:
 execute
specific process in kernel space
 handle interrupt request in interrupt context
which independent with other process in kernel
space
 execute user program process in user space
13
Operating system Concepts (cont’)
Here shows the sketch map of transitions
between user and kernel mode (space)
14
Linux versus other Unix-like
kernels
Linux support kernel modules to load and
unload dynamically
Linux support symmetrical multiprocessor,
which most traditional Unix variants do not
support this mechanism
Linux kernel is preemptive
Kernel do not separate thread and process,
each procedures are the same
 just
some procedures may share resources
15
Linux versus other Unix-like
kernels (cont’)
Linux is fully customizable in all its
components
Linux kernel can be very small and
compact
 you
can fit both a kernel image and full root
filesystem, including all fundamental system
programs, on just one 1.4 MB floppy disk
Linux runs on low-end, cheap hardware
platforms
16
Differences with User Application
Kernel program do not link C library
 major
reason is execution speed and size
 but also some in common use functions are
implement in kernel source code
Kernel developer use GNU C and ISO C99
to compose kernel
 the
use of inline function and inline assembly
is feasible
17
Differences with User Application
(cont’)
There is no memory protection mechanism
 destroy
memory data by kernel occurs ‘oops’
 kernel memory could not be paged
Uneasy to use floating point numbers in
kernel
 you
have to access the floating point registers
and handle your operation by hand
Small and static stack in kernel
 in
32 bit architecture only 8KB in size
18
Differences with User Application
(cont’)
Race conditions in kernel:
 use
concurrence control to prevent it
 care if SMP to access the same resources
 care if interrupt will access the same resources
with the executing process
 care if preemptive condition comes true
 classic ways to prevent these situations are
the use of spinlocks and semaphores
19
Linux versions
Linux distinguish stable kernels from
development kernels through a simple
numbering scheme
 each
version is characterized by three
numbers, separated by periods
 first two numbers identify the version
 third number identifies the release
 new release of a stable version come out
mostly to fix bugs reported by users
20
Linux versions (cont’)
If the second number is even, it denotes a
stable kernel; otherwise it denotes a
development kernel
 development
versions may differ quite
significantly from one another
 kernel developers experiment with different
solutions which occasionally lead to drastic
kernel changes
21
Steps of porting
System requirements:
 Linux
host:
used to compile Linux kernel image, root filesystem,
device driver, user applications, and so on
 ARM cross-compiler 4.0.2 is needed

 Windows
host:
download and exam your project on Creator
 Domingo for Linux is needed

 Target:

Microtime Creator mother board, Creator-XScalePXA270 CPU board
22
Steps of porting (cont’)
To build a Linux kernel for running on
Creator-XSCALE-PXA270, you need:
 source
code of Linux kernel (mt-linux2.6.15.3.tar.gz )
 patch (linux-2.6.15.3-creator-pxa270.patch)
 cross compiler (arm-linux-toolchain-bin4.0.2.tar.gz )
Then install the cross compiler into your
Linux host system
23
Steps of porting (cont’)
After install the cross compiler into your
system, don’t forget to update your PATH
environment variable
When the cross compiler is ready, extract
your kernel source and patch it by:
 cp
linux-2.6.15.3-creator-pxa270.patch
/pxa270/pro/devkit/lsp/create-pxa270
 patch –p0 < linux-2.6.15.3-creatorpxa270.patch
24
Steps of porting (cont’)
Enter the Linux kernel directory, and type
“make menuconfig” to configure your kernel
25
Steps of porting (cont’)
Here we use a default configuration file for
the Creator XScale-PXA270 board
Choose “Load an Alternate Configuration
File” and type “Enter” to select one
The default configuration file is located in
“pxa270/linux/arch/arm/configs” and named
“creator_pxa270_defconfig”
26
Steps of porting (cont’)
After configured the kernel, it’s time to
make your kernel image by typing:
 make
dep
 make clean
 make zImage
The kernel image could be find at
“pxa270/linux/arch/arm/boot/”
To verify the kernel image, you need to
copy this image to a Windows host
27
Steps of porting (cont’)
Before download and verify your Linux
kernel, check the connections between the
Creator and your host PC:
28
Steps of porting (cont’)
To verify your Linux kernel on PXA270, you
need “Domingo for Linux” on Windows
system
Check you must have your kernel image in
the Windows system
Execute the Domingo on your Windows,
and select “No project” to enter a hardware
setting page
29
Steps of porting (cont’)
30
Steps of porting (cont’)
Press the “Config PCM…” to configure the
peripheral of XScale PXA270
Choose “Import” to select default one:
31
Steps of porting (cont’)
After setting the hardware configuration,
you can download your Linux kernel on
PXA270 board to see if it work correctly
32
Steps of porting (cont’)
Load your kernel into memory addressed
0xa0008000
33
Steps of porting (cont’)
34
Steps of porting (cont’)
Change the PC register value to A0008000,
which the kernel image’s address in RAM
Before click RUN in Domingo, set up your
Hyper terminal for receiving Linux kernel
debug message and be the shell interface
of it
35
Steps of porting (cont’)
36
Steps of porting (cont’)
37
Reference
Web site references:
 鳥哥的私房菜
無痛起步
 Linux kernel Archives
 Embedded Linux Training
 Linux kernel wiki
 The Linux kernel
 Kernel trap
…
 Debian
38
Reference (cont’)
Book references:
 Understanding
the Linux Kernel, 2/e, O’Reilly
 Linux 核心開發指南, 2.6版, 維科
 Linux Kernel 完全剖析, 博碩文化
…
39