95
Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Embed Size (px)

Citation preview

Page 1: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Diplomarbeit

Autor: Rade Bozic

Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines

embedded Web Servers

Page 2: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Fernsystem

Zielsetzung

Universell einsetzbares System im Bereichen:

• Fern - Wartung

• Fern - Diagnose

Page 3: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Einleitung Planung eines Fernsystems Aufbau eines Linux- Systems

Hardware Bootloader Root Dateisystem

Entwicklungsumgebung Web Server Realisierung einer Anwendung

Gliederung des Vortrages

Page 4: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Einleitung

Service

Lieferzeit

Erfahrung

Technischer Vorsprung

Preis

Qualität

15 %

17 %

31 %

3 %

12 % 11 %

11 %Sonstige (3%)

Qualität entscheidet

Page 5: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Einleitung

Qualität

Preise

KostenUnternehmen

ProdukteEigenschaften

KundeAnforderungenErwartungen

Spannungsfeld Qualität

Page 6: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Qualität

Beschaffenheit einer Einheit bezüglich ihrer Eignung, festgelegte und vorausgesetzte Erfordernisse zu erfüllen

Beschaffenheit

Gesamtheit der Merkmale und Merkmalswerte einer Einheit

Einheit

Materieller oder immaterieller Gegenstand der Betrachtung

Begriffsdefinition „Qualität“DIN 55350, Teil 1

Einleitung

Page 7: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Was bedeutet Qualität in Bezug auf das Fernsystem?

Fernsystem

Abstraktionsebene (Konfigurationsfenster)

Anwender

Einleitung

Page 8: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Fernsystems

Page 9: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Einsatz eines Fernsystems

Ziel:

Aktuellen Zustand der Technische Prozesse darstellen Änderungen an den Technischen Prozess vornehmen

Fernsystem FernsystemFernsystemFernsystem

TechnischerProzeß

TechnischerProzeß

TechnischerProzeß

TechnischerProzeß

Browser

Techniker

SERVER

InternetoderIntranet

Page 10: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Fernsystems

Steuerung eines Technischen Prozesses mit dem Fernsystem

Administration des Fernsystems

Aufteilung in zwei Bereiche

Page 11: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Fernsystems

Werkzeuge (Tools)Software Hardware

Konzept(Planung undOrganisation)

Software Hardware

FertigesFernsystem

En

twic

klu

ng

de

s F

ern

sy

ste

ms

Kunden spezifischeAnwendung

(Integration in dasFernsystem)

InbetriebnahmeTesten der

Amwendung

Konfigurationsfensterdes

Fernsystems

Konfigurationsfensterder

Anwendung

Fernsystem

Technischer Prozzes

Administrator

Techniker

Integration

Page 12: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Fernsystems

Anforderungen:

Konfigurationsfenster der Fernsysteme soll unabhängig von dem technischen Prozess sein

Der Aufbau der Konfigurationsfenster soll einheitlich sein

Leichte Integration eines technischen Prozesses in das Fernsystem

Eigener Konfigurationsfenster für den technischen Prozess

Page 13: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

Software - Programme Netzwerkdienste Hardware System Benutzer Andere

Page 14: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

System Update Software installieren Software löschen Andere

Software – Programme:

Page 15: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

FTP TFTP HTTP NFS Remote Steuerung Andere

Netzwerkdienste:

Page 16: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

Hardware Information LAN CAN RS232 RS485 Andere

Hardware:

Page 17: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

Datum und Zeit sysconfig Flash Speicher Integration einer Anwendung Andere

System:

Page 18: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Welche Standardkomponente sollte das Konfigurationsfenster eines Fernsystems beinhalten?

Benutzterverwaltung Gruppenverwaltung Andere

Benutzer:

Page 19: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Administration eines Fernsystems

Ziel:

Änderungen an den Fernsystem vornehmen Aktuellen Zustand des Fernsystems darstellen

Fernsystem FernsystemFernsystemFernsystem

TechnischerProzeß

TechnischerProzeß

TechnischerProzeß

TechnischerProzeß

Browser

Administrator

SERVER

InternetoderIntranet

SSL

Page 20: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Administration eines Fernsystems

Aktuellen Zustand des Fernsystems ändern oder darstellen mit den System Programmen

InternetoderIntranet

Fernsystem

AD-Wandler(Temperatur)

Browser

Administrator

Datenbank(Meßwerte)

Dynamischerzeugte

HTML

HTML Dateiübergeben

Einstellung desFernsystems

TechnischerProzess

Auftrag abschicken

Dynamischerzeugte

HTML

Umgebungsvariable

CGI-Programm

HTML Dateierzeugen

Web Server

APACHE

CGI Programmaufrufen

System Programme

SSL

Page 21: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Konfigurationsfensters für eine Anwendung

Konfigurationsfenster wird an das technische Problem angepasst

Das Konfigurationsfenster sollte eigenständig funktionieren

Integration des Konfigurationsfensters in das Fernsystem

Page 22: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Beispiel eines technischen Prozesses

Aktuellen Zustand des Technischen Prozesses darstellen

InternetoderIntranet

Fernsystem

AD-Wandler(Temperatur)

Browser

Techniker

Datenbank(Meßwerte)

Dynamischerzeugte

HTML

HTML Dateiübergeben

Datenbankabfragen

TechnischerProzess

Auftrag abschicken

Dynamischerzeugte

HTML

Umgebungsvariable

CGI-Programm

HTML Dateierzeugen

Web Server

APACHE

CGI Programmaufrufen

Page 23: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Beispiel eines technischen Prozesses

Änderungen an den Technischen Prozess vornehmen

InternetoderIntranet

Fernsystem

AD-Wandler(Temperatur)

Browser

Techniker

Datenbank(Meßwerte)

Dynamischerzeugte

HTML

HTML Dateiübergeben

Konfigurationändern

TechnischerProzess

Auftrag abschicken

Dynamischerzeugte

HTML

Umgebungsvariable

CGI-Programm

HTML Dateierzeugen

Web Server

APACHE

CGI Programmaufrufen

Konfigurationsdateides AD-Wandler

Page 24: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Aufbau eines Linux- Systems

Page 25: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Aufbau eines Linux-Sytems

Hardware Bootloader Betriebsystem Dateisystem

Page 26: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Aufbau eines Linux-Sytems

Hardware

Betriebsystem LinuxBootloader(Firmware)

Root Dateisystem

Treiber TCP/IP

FTP

KonfigurationDateien

NFSWeb Server

(Apache)

RS232 Ethernet Flash Specher

Biblioteken

TelnetBusybox

Dateisystem

RTClock

Page 27: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Planung eines Linux-Sytems

Linux-System

Hardware

Betriebsystem LinuxBootloader(Firmware)

Root Dateisystem

Treiber TCP/IP

FTP

KonfigurationDateien

NFSWeb Server

(Apache)

RS232 Ethernet Flash Specher

Biblioteken

TelnetBusybox

Dateisystem

RTClock

Page 28: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Hardware

Entwicklungsboard (Eval-Board) DIMM Modul Entwicklungsrechner

Page 29: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Hardware – Eval-Board

DEBUGRS232

RS232 RS485 CAN USB-HostUSB-Device MODEM

MM

C/S

D

Ethernet

Sm

art

-C

ard

RT

-C

lock

DIMM-RM9200 EVAL-Board

HW-Treiber HW-Treiber

HW

-Tre

iber

AT91RM9200 DIMM-Modul(Blatt 1)

SO-DIMM connector

JTA

G-S

teck

er

Dis

pla

y-S

teck

er

Pow

er

Reset

Page 30: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Hardware – DIMM Modul

AT91RM9200ARM920T CPU

with MMU

USARTUSB

Device

GP

IO/

CF

SS

I/I2

S

USBHost

Me

mo

ryIF

MM

C/S

D

Eth

ern

et

10/1

00

MB

it

SP

I

SDRAM FLASH

10/100MBitEthernet Phy

SO-DIMM connector

DATAFLASH

1.8VRegulator

3.3V

BUFFER

16 Bit Data /23 BitAddress

MII

AT91RM9200 DIMM-Modul

Page 31: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Hardware – Entwicklungsrechner

Desktop PC(Entwicklungsrechner)

RS232

Seriell 1

Seriell 2

parallel

Eval-Board

Embedded System

AT91RM9200

JTAG

Externe Geräte(z.B USB Stick)

DEBUG

DATA

Page 32: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader

Page 33: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader

Uploader (max. 12 KByte groß) initialisierung :1. SRAM2. Xmodem Protocol über DBGU Serial3. SPI Flash4. Programm in SRAM laden und starten

Vector gefunden

1. Der interne Bootloader wird gestartet der sich in internen ROM befindet.

2. Der interne Bootloader durchsucht die Peripherie nach einem bootfähigen Programm (start Sequenz). Durchsuchung der Peripherie in dieser Reihenfolge:

1. Dataflash an NPCS0 des SPI2. EEPROM (FLASH) an TWI3. 8-Bit Speichermedium an NSC0 des EBI

DBGU Serial wird initialisiert von deninternen Bootloader. Es wird das Zeichen'C' über Xmodem auf dem Terminala u s g e g e b e n , u n d w a r t e t a u f e i nDownload. Das Programm wird in dasinterne SRAM geladen und gestartet.Das Programm darf max. 12 KByte großsein ( interner SRAM=16 KByte ->12KByte für Programm 4 KByte für Stack).

JA Nein

Eigenes Programm starten(z.B. Test des Uploaders)

U-Boot (max. 128 KByte) Initialisierung des Boards:1. Ramdisk in SRAM laden2. Linux in SRAM laden3. bootargs an linux übergeben4. Linux starten

Bootloader

Stufe1

Stufe2

Power onoder

Reset

Start des Bootvorgangs beim DIMM-Modul

Page 34: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader

Durchsucht die Peripherie nach dem bootfähigen Programm

Lädt das Programm in den internen SRAM

Führt den „remap“ Befehl aus

Startet das Programm

Interne Firmware (Bootloader)ARM920T Core

Memory

Controller

Data Cache16KByte

MMUInstruction Cache

16KByte

Fast SRAM16KByte

Fast ROM128KByte

Page 35: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader

Funktion des „remap“ Befehls

InternerROM

(128 KByte)

InternerROM

(128 KByte)

InternerSRAM

(16 KByte)

InternerSRAM

(16 KByte)

remap 0x00100000

0x00000000

0x00200000

0x00000000

Page 36: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader - Uploader

Eigenschaften des Uploaders

Darf max. 12 KByte groß sein (4 KByte Stack)

Kann Programme die größer als 128 KByte sind nicht laden und starten

Page 37: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader - Uploader

SDRAM Xmodem Protocol über DBGU Serial

SPI Flash

Aufgaben des Uploaders

Initialisierung :

Laden und starten von Programmen in SDRAM

Page 38: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader -Uploader

aus dem SPI Flash lesen in den Bootsektor des SPI Flash schreiben den Bootsecktor im SPI Flash löschen laden eines Programms mit Xmodem (z.B. U-Boot)

in den SDRAM und startet das Programm

Funktionen des Uploaders

Page 39: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Open-Source Projekt Sehr gute Dokumentation Portiert auf mehr als 100 Plattformen Sehr flexibel Viele Funktionen

U-Boot => Universal Bootloader

Page 40: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Initialisierung des Boards Ramdisk in SDRAM laden Linux in SDRAM laden bootargs an Linux übergeben Linux starten

Aufgaben von U-Boot

Page 41: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

U-Boot wurde auf die DIMM-RM9200 Plattform portiert

make DIMM_rm9200_config

make

U-Boot wird für das DIMM-RM9200 Board konfiguriert

U-Boot wird für das DIMM-RM9200 Board übersetzt

Page 42: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Starten aus dem parallelen Flash Starten aus dem seriellen Flash

Zwei Boot-Modi

Mit einem Jumper (Schalter) wird entschieden von wo gestartet wird.

• Jumper hat eine ähnliche Funktion wie der „remap“ Befehl. Ist er aufgesetzt, wird die Adresse 0x00000000 auf die erste Adresse des parallelen Flashs gesetzt.

Page 43: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

U-Boot für den parallelen Flash (PU-Boot) U-Boot für den seriellen Flash (SU-Boot)

Zwei U-Boot Programme

Page 44: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

PU-Boot hat seine Umgebungsvariable im parallelen Flash, SU-Boot im seriellen Flash.

Uploader wird beim Start von PU-Boot

nicht benötigt

Unterschiede zwischen den beiden U-Boot Programmen

Page 45: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Entwicklungablauf des Bootloaders

Entwicklungsumgebungaufbauen (arm-linux-gcc)

Uploaderanpassen

SU-Boot kann den parallelen Flash

lesen und beschreiben

PU-Boot konfigurieren und übersetzen

SU-Boot kopiert PU-Boot in denersten Sektor von parallelen

FlashZ

eit

Page 46: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Wie werden die zwei U-Boot Programme generiert?

Konfigurationsdatei DIMM_rm9200.h

Variable:

#define CONFIG_BOOTBINFUNC 1 => PU-Boot

//#define CONFIG_BOOTBINFUNC 1 => SU-Boot

Page 47: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

über Uploader aus dem seriellen Flash (Jumper nicht aufgesetzt)

aus dem parallel Flash (Jumper aufgesetzt)

über Uploader mit dem XModem Protocol(Jumper nicht aufgesetzt)

Es gibt drei Möglichkeit U-Boot zu starten:

Page 48: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Manipulation von Flash Speicher boot Befehle (laden und starten von Programmen) Netzwerk Befehle informations- Befehle

Arbeiten mit dem U-Boot

U-Boot Befehle:

Page 49: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Mehrere Befehle in einem Befehl vereinen Scripte werden mit dem Befehl „run“ gestartet Ein Script startet das Betriebsystem

U-Boot Scripte

Page 50: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Starten von U-Boot

CONFIG_BOOTCOMMANDIst leer

Nein

Ja Prompt ausgeben auf dieConsole und auf Eingabe

warten

Timeout=3s wird gestartet

Ist Timeout unterbrochen?

Ja Prompt ausgeben auf dieConsole und auf Eingabe

warten

Script starten

Nein

Startablauf von U-Boot

Page 51: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Variablen:

#define CONFIG_BOOTCOMMAND "run tftpboot„

#define CONFIG_BOOTARGS

#define CONFIG_EXTRA_ENV_SETTINGS

Drei wichtigsten Variablen zum starten von Linux

Konfigurationsdatei DIMM_rm9200.h

Page 52: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

"tftpboot=tftp $(initrdload) initrd.bin;tftp $(kernelload) uImage;bootm\0"

Beispiel: Script „tftpboot“

tftp $(initrdload) initrd.bin

tftp $(kernelload) uImage

bootm

Ramdisk wird geladen ab der Adresse „initrdload“

Kernel wird geladen ab der Adresse „kernelload“

startet den Kernel und übergibt im die Argumente die in der Variable CONFIG_BOOTARGS stehen

Das Script „tftpboot“ ist in der Variable CONFIG_EXTRA_ENV_SETTINGS definiert

Page 53: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Bootloader – U-Boot

Wenn man soweit gekommen ist, das ein U-Boot Script automatisch ein Betriebsystem starten kann, dann hat der U-Boot seinen Zweck erfühlt.

Page 54: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Funktion eines Linux-Systems

Linux-Kernel C-Bibliothek Shell Dienst - Programme

Komponente eines lauffähigen Linux-Systems

Page 55: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Funktion eines Linux-Systems

Benutzter-Programme

Hardware

Betriebsystem Linux

C-Bibliothek

Dienst-ProgrammeDienst-

Programme

ShellShell

Page 56: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Linux-Kernel

Kernel mit dem Modulen Kconfig (Konfigurationsprogramm)

Im Linux Quellen existieren zwei separate Programme

Page 57: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Linux-Kernel

Kernel erstellen:

make xconfig make

Module erstellen:

make modules make INSTALL_MOD_PATH=${SYSROOT} modules_install

Neuen Kernel generieren

Page 58: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Linux-Kernel

Module sind Programme wie jede andere Programme auch, nur das die im Kernel-Space ablaufen.

Kernel-Space

User-Space

0

0xC0000000

Virtueller Adressraum

0xFFFFFFFF

User Programme

Kernel Programme

Was sind Module?

Page 59: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Root Dateisystem

Filesystem Hierarchy Standard (FHS) /bin

/sys

/sbin

/root

/proc

/mnt

/lib

/home

/etc

/dev

/user

Ha

upt D

ate

isys

tem

Root Dateisystem

/bin

/include

/local

/src

/sbin

/lib

Su

b D

atei

syst

em

/www

/usr

/var

/apache

/cf

/usb

/nfs

/

/tmp

/tmp

Page 60: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

make menuconfig Programme auswählen Root Dateisystem angeben Cross-Kompiler eintragen

make make install

Root Dateisystem

BusyBox => „Multi-Call Binary“

Page 61: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Root Dateisystem

mime.types, protocols, rpc, services.

/etc

Dateien mit allgemeinen Informationen

Page 62: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Root Dateisystem

passwd, group, shadow.

/etc

Dateien mit Benutzerinformationen

Page 63: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Root Dateisystem

hosts statische Zuordnung von Hostnamen und IP-Adressen

hosts.conf für Namensanfragen erst die Datei „hosts“ durchsuchen

resolv.conf Eingabe eines Namensserver inetd.conf Konfigurationsdatei des inetd-Dämons exports werden lokale Verzeichnisse für NFS freigegeben host.allow Freigeben der Netzdienste host.dany Sperren der Netzdienste

/etc

Dateien für die Netzwerkkonfiguration

Page 64: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Root Dateisystem

ifcfg-eth0 ifcfg-lo network_cfg

/etc/sysconfig

Dateien für die Netzwerkkonfiguration

Page 65: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Init-Scripte

Runlevel 0 = Herunterfahren Runlevel 1 = Single-User Runlevel 2 = Multi-User ohne Netzwerk Runlevel 3 = Multi-User mit Netzwerk Runlevel 4 = hat keine Funktion Runlevel 5 = Multi-User mit Netzwerk und automatischen X-Start Runlevel6 = Reboot

Nach System-V-Init-Style gibt es 6 Runlevel.

Root Dateisystem

Page 66: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Init-Scripte

/sbin/init::sysinit:/etc/rc.d/rcS

runlevel=3

for i in /etc/rc.d/rc$runlevel.d/K*do if [ "$i" = "/etc/rc.d/rc$runlevel.d/K*" ]; then break fi $i stopdone

for i in /etc/rc.d/rc$runlevel.d/S*do if test $i = "/etc/rc.d/rc$runlevel.d/S*"; then break fi $i startdone

Kernel

S01fbsetS02fsmountS10Network . . . .S40apacheS50ftp

/etc/rc.d/rcS

/etc/Inittab

/etc/rc.d/rc3.d

( beinhalted nurLinks zu den Init-Scripten )

apachefbsetfsmount . . . .rtctelned

/etc/init.d/

Init-Scripte

Root Dateisystem

Page 67: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Ramdisk erstellen

#!/bin/sh cd /usr/src/root mkdir images mkdir initrd dd if=/dev/zero of=images/initrd.img bs=1k count=8192 /sbin/mke2fs -F -v -m0 images/initrd.img mount -o loop images/initrd.img initrd/ cp -av rootfs/* initrd/ umount initrd/ gzip -9 < images/initrd.img > images/initrd.bin mv images/initrd.bin /tftpboot rmdir initrd rm -r images exit 0

Root Dateisystem

Page 68: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Toolchain = Werkzeug – Kette

Entwicklungsumgebung

Open-Source => Die GNU-Toolchain

Page 69: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Entwicklungsumgebung

Editor

CPP

CC

AS

LD

test.c

Bibliotheken(glibc)

test.out

test . o

test . s

test . i

OBJCOPY

Bin

utils

(bi

nary

Util

itis)

test.srectest.bin test.hex

Makefile

make

Standardtexte

Funktionsweise einer Entwicklungsumgebung

Programmierer

Page 70: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Entwicklungsumgebung

cygwin1.dll Cygwin Programme

Windows 2000

Cygwin => „www.cygwin.com/setup“

UNIX-Umgebung wird simuliert

Page 71: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Installieren: www.gnuarm.com

Hauptverzeichnis: c:\GNUARM

Entwicklungsumgebung

Toolchain für die ARM-Architektur

Windows 2000

Page 72: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Verzeichnis in den Suchpfad einbinden : PATH=/GNUARM/bin:$PATH; export PATH

Testen: arm.elf.gcc -v

Entwicklungsumgebung

Toolchain für die ARM-Architektur

Windows 2000

Page 73: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz ftp.gnu.org/gnu/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2 ftp.gnu.org/gnu/glibc/glibc-2.3.5.tar.gz ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.12.tar.gz maxim.org.za/AT91RM9200/2.6/2.6.12-at91.patch.gz

Entwicklungsumgebung

Linux

Toolchain für die ARM-Architektur

Page 74: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Installationsschritte:1. binutils-2.16.tar.gz

2. glibc-2.3.5.tar.gz

3. gcc-3.4.4.tar.bz2

Entwicklungsumgebung

Linux

Toolchain für die ARM-Architektur

Die Einhaltung der Reihenfolge der Installationsschritte ist zwingend notwendig, da die Schritte von einander abhängig sind.

Page 75: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Entwicklungsumgebung

Programme Beschreibung

ld Zusammenfügen der einzelnen Objekt-Dateien. Erstellen von ausführbaren Images

ar Ein Tool zum Erstellen und Modifizieren von Archiven. Das Extrahieren von Code aus Bibliotheken ist ebenfalls möglich.

ranlib Index über ein Archiv erzeugen

readelf Anzeigen von Informationen eines ELF-Files (Object oder ausführbar)

nm Auflisten von Symbolen aus Object-Dateien

addr2line Ermöglicht das Konvertieren von Adressen in Dateinamen mit zugehörigen Zeilennummern. Kann bei der Fehlersuche nützlich sein.

as Umsetzen von ASCIII-Quellcode in eine Objekt-Datei.

gprof Anzeigen von Profiling-Informationen. Diese sind bei der Laufzeit-Analyse von Programmen sehr hilfreich.

size Anzeige der Größe einzelner Sektionen innerhalb einer Objekt- oder Archiv-Datei.

objcopy Kopieren und Umwandeln von Objekt-Dateien.

objdump Anzeige von Informationen über Objekt-Dateien.

strings Anzeige druckbarer Zeichenketten innerhalb von Dateien.

strip Löschen von Symbolfunktionen aus Dateien. Das kann zu einer drastischen Reduzierung der Größe dieser Dateien führen.

Page 76: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Entwicklungsumgebung

insight ddd

Fehlersuche mit Debugger „gdb“

Grafische Unterstützung

arm-elf-gcc -g

Page 77: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Entwicklungsumgebung

IDE (Integrated Development Environment)

Integrierte Entwicklungsumgebung

Editor Compiler Debugger

Page 78: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

KDevelop (KDE) und Anjuta (GNOME),

Entwicklungsumgebung

Integrierte Entwicklungsumgebung bei der SUSE 9.3 Distribution

Page 79: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

Browser

Browser WEB SERVER

HTTP Anfrage

HTTP Anfrage

HTML Daten

HTML DatenSessionID-1

SessionID-2

Transaktion einer HTTP Anfrage

Page 80: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

Web Technologien

CGI (Common Gateway Interface) JavaScript Java-Applets Java-Servlets.

Page 81: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

Web Technologien

JSP ( Java Server Pages) ASP ( Active Server Pages) PHP ( Hypertext Preprocessor)

Allgemeiner Begriff: „Web Services“

Page 82: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Linux Apache MySQL Perl oder PHP

Web Server

Open-Source => LAMP

Page 83: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

inetd standalone

httpd parents

HTTPClient-1

ConfigDateien

HTTPClient-2

HTTPClient-n

httpdchild-1

httpdchild-2

httpdchild-n

Forking

APACHE

Pre-Forking ModellAPACHE

Page 84: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

httpd.conf srm.conf access.conf

Web Server

Konfigurationsdateien

Page 85: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Base Extension Experimental

Web Server

Apache und Module

AddModule: aktiviert ein zur Verfügung stehendes Modul.

ClearModuleList: deaktiviert alle zur Verfügung stehenden Module.

Page 86: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

apxs wird zur Kompilierung externer Module für den Apache außerhalb des eigentlichen Kontextes verwendet (Apache Extension Tool).

apachectl ist ein Shell-Skript, das den Webserver startet. start startet den Webserver stop stoppt den Webserver restart Neustart des Webservers (sendet SIGHUP an den Apache)

fullstatus Ausgabe des Serverstatus status Kurzform des Serverstatus graceful "netter" Neustart (sendet SIGUSR1 an den Apache) configtest Syntaxtest der Konfigurationsdateien. ab ist ein Tool zur Durchführung von Webserver-Benchmarks. htdigest Verwaltung der Passwortdateien für die Digest-HTTPAuthentisierung. htpasswd Verwaltung der Passwortdateien für die Basic-HTTPAuthentisierung. dbmmanage Verwaltung von Passwortdateien für die HTTPAuthentisierung im

DBM Format. logresolve ersetzt IP-Adressen in Logdateien durch die entsprechenden DNS-

Adressen. rotatelogs Rotieren der Logdateien, ohne dass ein Anhalten des Servers notwendig

ist. log_server_status schreibt den aktuellen Apache-Status in eine Logdatei.

Web Server

Hilfsprogramme

Page 87: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

SSI – Server Side Include

zwischen dem Kommentaranfang „<!--" und dem SSI-Befehl ist kein Leerzeichen und

hinter dem SSI-Befehl und vor dem Kommentarende „-->“ muss ein Leerzeichen sein.

Web Server

Web-Anwendung

Page 88: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

CGI – Commom Gateway Interface

Umgebungsvariablen Kommandozeilenparameter Standardeingabe (stdin) Standardausgabe (stdout)

Fehlerausgabe „error.log“

Web-Anwendung

Standardkonzepte von Unix

Page 89: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Web Server

Browser(Anwender)

Embedded Web Server

AD-Wandler(Temperatur)Browser

user

Datenbank(Meßwerte)

Dynamischerzeugte

HTML

HTML Dateiübergeben

Datenbankabfragen

TechnischerProzess

Auftrag abschicken

Dynamischerzeugte

HTML

Umgebungsvariable

CGI-Programm

HTML Dateierzeugen

Web Server

APACHE

CGI Programmaufrufen

Dynamische Seitengenerierung eines CGI-Programms

Web-Anwendung

CGI – Commom Gateway Interface

Page 90: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Offener TCP-Port

der Webserver und der Rechner, auf dem die FastCGI-Applikation läuft, in einem abgesicherten Netzsegment stehen,

alle Rechner in diesem Netzsegment vertrauenswürdig sind und

keine Netzverbindungen von außen auf den von der FastCGI-Applikation verwendeten TCP-Port initiiert werden können.

Web Server

Web-Anwendung

FastCGI

Page 91: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

apache-1.3.xx.tar.gz (Version 1.3) httpd-2.0.xx.tar.gz (Version 2.0)

Web Server

Der embedded Server

Page 92: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Anwendungsbeispiel

Page 93: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Anwendungsbeispiel

Page 94: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Anwendungsbeispiel

Page 95: Diplomarbeit Autor: Rade Bozic Portierung eines LINUX Systems auf ein ARM Modul und Implementierung eines embedded Web Servers

Fragen?

Vielen Dank für Ihre Aufmerksamkeit!