cong cu gnu

Upload: duong-dinh-tu

Post on 05-Apr-2018

228 views

Category:

Documents


0 download

TRANSCRIPT

  • 7/31/2019 Cong cu GNU

    1/48

    Hiu hnh thigian thc

  • 7/31/2019 Cong cu GNU

    2/48

    Tip cn a tc v Tip cn chng trnh n: mt tc v (lung)

    Tip cn gn/tip cn sau: 2 tc v Tng qut ha, a tc v l:

    Cng gi l cc quy trnh, lung Mi tc vc x l song song

    Khng chim ton b ti nguyn x l Cc tc v tng tc ng thi ti cc phn t bn ngoi

    iu khin b cm bin, iu khin c cu truyn ng thng quaDMA, b ngt, I/O.

    Thng c x l song song

    Yu cu Lp lch cho cc tc v Chia x d liu gia cc tc vng thi

    2V Quang Dng

  • 7/31/2019 Cong cu GNU

    3/48

    Cc du hiu ca tc v Cc tc v mi c th khi ng trong khong thi gian

    Theo chu k hoc khng theo chu k Tc v c th gm:

    Ti nguyn cn thit Cc mc quan trng Quan hu tin Lin kt Gii hn thi gian

    Trng thi ca tc v Hot ng

    Chun b tc v - ch x l t CPU Hn ch tc v - ch khi c s kin khc tc ng ti qu trnh x l Khng hot ng

    3V Quang Dng

  • 7/31/2019 Cong cu GNU

    4/48

    Quyn u tin

    Khng c u tin: tc v khi khi ng s chy

    n khi dng lai hoc tc ng ti mt s cngvo/ra

    u tin: tc v c th dng li chy tc v

    khc Chu su tin v s phc tp trong thc thi C qu trnh lp lch v phn tch Trong khng u tin, cc tc v hot ng do b p

    buc

    4V Quang Dng

  • 7/31/2019 Cong cu GNU

    5/48

    Lp lch cho a tc v K hoch lp lch ng

    Cc tc v xy ra ng Qu trnh kim tra lch xy ra mi khi c tc vng c hot

    ng Khi c tc v mi, trc khi khi ng

    Lp lch hot ng cho tc v trc v sau Nu qu trnh lp lch c li, c phng n thay i

    Lch nhn c s quyt nh khi khi to

    Kt qut c ca lp lch ng

    H thng c gng t c thi hn v thi gian hot ng Khng bit khi no gii hn v thi gian xy ra cho n khi gp

    deadline hoc tc v kt thc hot ng

    5V Quang Dng

  • 7/31/2019 Cong cu GNU

    6/48

    Thc thi trong hiu hnh thigian thc Nh, nhanh

    Ch thi gian thc Nghin cu hiu hnh

    Thnh phn ca ngn ng to mi trng Java (embedded real-time Java)

    Nhn n hoc nhn nh tch hp Vn chnh

    M hnh song song: s kin, lung, lp lch

    M hnh b nh: Tnh v ng

    Cc m hnh thnh phn khc nu c

    6V Quang Dng

  • 7/31/2019 Cong cu GNU

    7/48

    S so snh ca cc RTOS khcnhau: s thc thi tun hon

    7V Quang Dng

    Kernel Mode

    DeviceDrivers NetworkDrivers

    Hardware

    I/O Services

    TCP/IP Stack

    Application Application Application

  • 7/31/2019 Cong cu GNU

    8/48

    S so snh ca cc RTOS khcnhau: nhn n

    8V Quang Dng

    User Mode

    (protected)

    Kernel ModeFilesystems

    Device

    Drivers

    Network

    Drivers

    Hardware

    I/O Managers Graphics

    Subsystem

    Graphics

    Drivers Other.

    Application Application Application

    Hardware Interface Layer

  • 7/31/2019 Cong cu GNU

    9/48

    S so snh ca cc RTOS khcnhau: nhn nh tch hp

    9V Quang Dng

    User Mode

    (protected)

    Kernel Mode

    Device Drivers

    Network

    Drivers Har

    d

    w

    ar

    e

    FilesystemManager

    Graphics

    Drivers

    Application

    Application

    Application

    FilesystemDrivers

    Device

    Manager

    Photon

    Network

    Manager

    Kernel (tiny)

  • 7/31/2019 Cong cu GNU

    10/48

    Hiu hnh thi gian thc linux

    Vi iu khin:uClinux - Linux nh (nhn < 512KB) vi

    TCP/IP

    Embedded PC

    RTLinux

    RTAI (Real-Time Application Interface)

    TinyOS

    10V Quang Dng

  • 7/31/2019 Cong cu GNU

    11/48

    RTLinux

    11V Quang Dng

    Nhn Linux hot ng di ch u tin nh nht Nhn Linux hot ng theo ch u tin Linux nm bt v lm vic theo cc ch ngt, thng qua cc lnh v ngt

    Ch thi gian thc v x l thng tin trong Linux thng qua s phn chia b nh v cc giaodin ca chng trnh

    Issues

    C ch thi gian thc chy trong cng mt khng gian a chging nh nhn Linux Cc device drivers dnh cho c ch thi gian thc khng th s dng chun c ch ca

    Linux

    Khng cung cp cc qu trnh qun l ti nguyn Linux drivers c ngt trc tip khi xy r a s c

  • 7/31/2019 Cong cu GNU

    12/48

    RTAI (Real Time ApplicationInterface) D n m ngun m xy dng trn tng ca RTLinux, v c tng kh nng

    ln ng k Linux kernel lm thay i trong qu trnh nm bt hm ngt v lp lch, v c cu

    thnh bi Cc nn thi gian thc vi tr nh v c s don cao V cc nn khng theo thi gian thc nh giao din ngi dng

    Tch hp gia lp lch cho cc tc v ca nhn, lung x l v cc tin trnh theo ca

    cc tc nhn khc Lung x l c bo v bi cc qu trnh tr trong cc i tng lp lch ca

    linux

    V c bn, th hm ngt l qu trnh by ca cc s kin bn ngoi v cn thit chocc tin trnh x l khc trong Linux S dng HAL (Hardware Abstraction Layer)

    V qu trnh x l ng, th mt lp middleware c dng iu khin cc tintrnh gi th tc ca cc RTAI API

    12V Quang Dng

  • 7/31/2019 Cong cu GNU

    13/48

    TinyOS

    13V Quang Dng

    Khng hn l mt hiu hnh theo quan nim truyn thng

    c cu trc ging nh mt tin trnh x l trong hiu hnh

    Application = Scheduler+ Graph ofComponents M hnh song hnh s kin v kin trc iu khin

    Chia xn ca ngn xp

    Lp trnh trnNesC, mt dng ca C

  • 7/31/2019 Cong cu GNU

    14/48

    S ti cu hnh ca phn mm

    Qu trnh cm nhn v hot ng ca networks i hi

    mt qu trnh lin tc v hn S pht trin ca phn mm l qu trnh k tha lin tc

    Ty bin mi trng h thng

    Qu trnh nng cp Sa v loi b li

    Ti lp cc bi ton v tin trnh h thng

    Ti lp trnh trin khai h thng

    iu khin s ti lp trnh l bn cht tt yu ca s bnvng

    14V Quang Dng

  • 7/31/2019 Cong cu GNU

    15/48

    Kin trc h thng

    15V Quang Dng

    Static Kernel Tru tng ha phn cng v cc tin trnh Thay i sau khi trin khai kh v t Cu trc d liu dnh cho cc module

    Dynamic Modules Trnh iu khin, protocols, v cc chng trnh Thay i sau khi trin khai d dng v r C

    u trc v v

    tr

    c l

    p

    Dynamic

    Memory

    Message

    Scheduler

    Dynamic

    LinkerKernel

    Components

    Sensor

    Manager

    Messaging

    I/O

    System

    TimerRTOS

    Services

    Radio I2C ADC DeviceDrivers

    Tree Routing

    Module

    Data Collector

    Application

    Photo-sensor

    ModuleDynamically

    Loaded modules

    Static Small OS Kernel

  • 7/31/2019 Cong cu GNU

    16/48

  • 7/31/2019 Cong cu GNU

    17/48

    B cng c

    B cng c sdng trong pht trin ccmc tiu ca phn cng

    c sdng trong phm vi xy dngphn mm trn mt h thng sc cit hoc trn mt sh thng khc

    c sdng vi cc thit b khc bindch, to thvin, ngn ngmy (compiler, libraries, assembler)

    17V Quang Dng

  • 7/31/2019 Cong cu GNU

    18/48

    Li ch ca b cng c Bt k dn no m cn thit trongxl nhng u cn thit phi ccng c pht trin phn mm

    em li li ch trong pht trin hthng nhng mi vi b cng cring bit

    18V Quang Dng

  • 7/31/2019 Cong cu GNU

    19/48

    Vai tr ca b cng c

    19V Quang Dng

  • 7/31/2019 Cong cu GNU

    20/48

    Biu pht trin

    20V Quang Dng

    Source Source Source

    code code code

    compiler compiler compiler

    Assembly Assembly Assembly

    code code code

    Assembler Assembler Assembler

    object object objectcode code code

    Executable codeLinker

    Libraries

  • 7/31/2019 Cong cu GNU

    21/48

    B cng c GNU

    GNU l hiu hnh, ging nhUnix(GNUs Not Unix), c pht trintrn 20 nm bi tchc phn mm

    tdo (FSF Free SoftwareFoundation) Phn mm GNU c bit ti l tnh

    n nh v tin li B cng c GNU l m ngun m

    21V Quang Dng

  • 7/31/2019 Cong cu GNU

    22/48

    Thnh phn ca b cng cGNU Bin dch - gccAssembler - binutils : as

    Lin kt - binutils : ld Thvin - glibc G li - gdb

    22V Quang Dng

  • 7/31/2019 Cong cu GNU

    23/48

  • 7/31/2019 Cong cu GNU

    24/48

    GNU binutils (GNU Binary Utility)

    Binutils l tp hp cc cng c xlnh phn nhassembler, lin kt,disassembler .

    Binutils sdng to v thao tcvi m nh phn ca file Thnh phn chnh gm

    ld - GNU linker.

    as - GNU assembler.

    24V Quang Dng

  • 7/31/2019 Cong cu GNU

    25/48

    Th vin C trong GNU

    Bt k h thng ging Unix no u cn thvin

    C, xy dng cc tp lnh, qun l tin trnh, bnh

    Thvin C c sdng nhcc thvin C khctrong h thng GNU v trong nhn Linux

    Thvin C l skt ni trong m ngun, v chegiu cc chc nng c trng ca nhn.

    25V Quang Dng

  • 7/31/2019 Cong cu GNU

    26/48

    GDB GNU Debugger

    Cho php xem c tin trnh bntrong ca chng trnh khc trongthc thi

    Cho php xem c chng trnhkhc lm g ti thi im dng khncp chng trnh

    GDB c thchy trn mi h thngnhUnix v c thtrn Windows

    26V Quang Dng

  • 7/31/2019 Cong cu GNU

    27/48

    Thnh phn ngn ng h tr ca GDB

    C

    C++

    Java

    Objective C

    27V Quang Dng

  • 7/31/2019 Cong cu GNU

    28/48

    Bootloader

    Bootloader l thnh phn chnh, quan trng khi khi ng

    nhn C nhiu loi bootloaders khc nhau c thsdng vi

    Linux trong nhiu cu trc phn cng LOIO

    GRUB

    LinuxBIOS

    Redboot

    U-boot

    Bootloader ca h thng nhng s lm: Khi to phn cng: b vi xl v b nh Khi ng nhn v thc thi nhn (trong mt strng hp cn phi

    truyn tham scho nhn linux)

    28V Quang Dng

  • 7/31/2019 Cong cu GNU

    29/48

    V d v bootloader

    29V Quang Dng

  • 7/31/2019 Cong cu GNU

    30/48

    Tng quan v Bootloader

    30V Quang Dng

    Boot Loader

    reset;

    ;Reset Code;(in assembly)Jmp hw_init

    Hw_initMain();Hardware

    ;Initialization {;(in assembly) /*The C/C++ program start here*/. }Jmp startup

    Startup; NoOS/OS Code;startup code;(in assembly)

    Call main

  • 7/31/2019 Cong cu GNU

    31/48

    Tin trnh Bootloader Part 1

    Nhy ti a ch 0x00900000

    Part 2 Khi to thnh phn phn cng Ci t ch cho CPU

    Part 3 Hy b tt c cc hm ngt Copy v khi to dliu tROM sang RAM

    Cc thnh phn khng c dliu c khi to vi gi tr Zero Tnh ton khng gian cho khi to ngn xp Khi to con tr trong ngn xp To v khi to b nh ng Thc thi cc cu trc cho cc gi tr ton b (C++) Cho php cc hm ngt

    Gi hm main Part 4

    Chng trnh m C/C++

    31V Quang Dng

  • 7/31/2019 Cong cu GNU

    32/48

    Xy dng nhn Linux

    C 3 kin trc khc nhau v host/target

    c sdng cho pht trin h thnglinux nhng: Ci t lin kt

    Ci t thit b lu trdi ng Ci t tng

    Qu trnh ci t c thlin quan ti mt

    hoc nhiu thnh phn, ph thuc vo yucu v phng php pht trin h thng

    32V Quang Dng

  • 7/31/2019 Cong cu GNU

    33/48

    Ci t lin kt ch v ngun c lin kt cnh

    vi nhau sdng lin kt vt l Lin kt co ththng qua cng serial hocethernet

    Tt c dliu c chuyn qua lin kt

    33V Quang Dng

    Host Target

    *Bootloader*Cross-platformdevelopment *Kernelenvironment

    *Root filesystem

  • 7/31/2019 Cong cu GNU

    34/48

    Ci t lin kt (tip) Nhn c trung chuyn qua ftp cn bng

    (TFTP) H thng file gc c thl NFS thay v l

    ni lu trti ngun

    Lin kt vt l c thsdng cho mcch g li Nhiu h thng nhng cung cp c 2 loi lin kt qua

    Ethernet v RS232

    34V Quang Dng

  • 7/31/2019 Cong cu GNU

    35/48

    Ci t thit b lu tr di ng

    Thit b lu trc vit bi ngunv s chuyn sang ch, v sdnglm thit b khi ng

    35V Quang Dng

    Host Target

    *Cross-platformdevelopment *Bootloader

    environment

    *Secondary

    bootloader *Kernel

    *Root filesystem

  • 7/31/2019 Cong cu GNU

    36/48

    Ci t thit b lu tr di ng (tip) ch cha h thng khi ng nh nht

    Cc phn cn li c lu trti thit b lu tr nhCompactFlash IDE v mt sloi khc

    Thay vi dng chp flash cnh, ngun c thcha socketm cc chip flash c thd dng gn vo v tho ra Chp sc lp trnh bng flash programmer ti ngun v s

    gn vo socket ti ch

    Ci t ny c sdng nhiu trong cc giai on u capht trin h thng nhng

    36V Quang Dng

  • 7/31/2019 Cong cu GNU

    37/48

    Ci t tng

    ch c thtcha h thng pht trin vbao gm tt c cc phn mm khi ng,iu khin v pht trin cc phn mmph Ci t ny thng sdng ti cc my workstation, loitrcc phn cng c bn khng phi ca my trm m

    la thuc h thng nhng

    37V Quang Dng

    Target

    *Bootloader *Kernel

    *Full rootfilesystem *Nativedevelopment

    environment

  • 7/31/2019 Cong cu GNU

    38/48

    Ci t tng

    Ci t tng phbin khi pht trin xydng h thng PC mnh trn cu trc cah thng nhng C thsdng chun sn sng sdng ca linux cung

    cp cho h thng nhng (off-the-shelf ) Mt khi pht trin xong, h thng hot ng theo trt

    txung theo sphn bv mc ch yu cu

    i hi xy dng mt h thng gc

    filesystems dnh cho n, v c cu hnhkhi h thng khi ng

    38V Quang Dng

  • 7/31/2019 Cong cu GNU

    39/48

    Ci t tng (tip) Mt sc im ring bit tphn cng chy h thng

    Linux: Linux i hi ti thiu 32-bit CPU cha hiu khin b nh (MMU) dung lng RAM cn thit cho h thng lm vic Nng lc ti thiu ca h thng I/O i hi nu trong qu trnh pht

    trin cn phi tach ring ch v ngun d dng cho kim li

    C 3 sci t khc nhau c sdng tkhi ng hthng linux nhng: Trng thi lu trvng chc a Mng

    39V Quang Dng

  • 7/31/2019 Cong cu GNU

    40/48

    Trng thi lu trvngchc

    40V Quang Dng

    Bootparameter

    Kernel Root file system

    Bootloader

  • 7/31/2019 Cong cu GNU

    41/48

    a

    41V Quang Dng

    0xFFFF0(ROM-BIOS)

    Initializing

    Boot sector

    512bytes

    LiLo (Linux

    Loader)

    bzImage

    (Kernel

    Image)

    MBR

  • 7/31/2019 Cong cu GNU

    42/48

    Mng

    Nhn linux tp trung vo trng thilu trvng chc hoc a, v hthng filesystem gc NFS

    Ch c bootloader c tp trung vothit b lu trcc b. Nhn ccp nht thng qua TFTP, v h

    thng filesystem gc NFS

    42V Quang Dng

  • 7/31/2019 Cong cu GNU

    43/48

    Nhn linux

    43V Quang Dng

    User programs

    Libraries

    User Level

    Kernel Level

    System Call Interface

    file subsystem IPC

    buffer Schedulercache Linux

    Memorymanagement

    character block

    device drivers

    Hardware control (HAL )

    Kernel Level

    Hardware Level

  • 7/31/2019 Cong cu GNU

    44/48

    iu khin thit b c trng ca thit b Khi thit b Giao din mng

    44V Quang Dng

  • 7/31/2019 Cong cu GNU

    45/48

    c trng ca thit b c trng c bn ca thit b l c thtruy

    nhp nhl mt chui ca byte Siu khin thng thc thi ti thiu

    cc chc nng nhm, ng, c, v ghiyu cu h thng

    Giao din console (/dev/console) v cngni tip (/dev/ttyS0) l nhng v d cac trng thit b

    c trng ca thit b l cc knh dliu,m c thtruy cp lin tip

    45V Quang Dng

  • 7/31/2019 Cong cu GNU

    46/48

    Khi thit b

    Ging nhc trng thit b,khi thit b l struy cp cafilesystem vo thmc /dev.

    46V Quang Dng

  • 7/31/2019 Cong cu GNU

    47/48

    Giao din mng

    Bt k sthc hin trn mng ctin hnh thng qua giao din, thitb c thtrao i dliu vi cc hostkhc

    Giao din mng c thc nhnnhn nhhng i (Queue)

    Unix cung cp struy cp ti giaodin thng qua tn truy cp ringdanh cho chng (nheth0).

    47V Quang Dng

  • 7/31/2019 Cong cu GNU

    48/48

    Giao din ngi s dng

    QT & QT EmbeddedQt l thvin lp C++ dnh cho pht

    trin GUI chy trn Unix, Windows

    Qt/Embedded l cng linux nhng caQt, l shon thin ca GUI trn C++v nn pht trin dnh cho Linux nhng

    48V Quang Dng