Embedded Linux

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 72

TRNG I HC CNG NGH THNG TIN

Bo Co Mn H iu Hnh

Embedded Linux System


Phan Duy, Phm Tun Duy, Bi Thanh Hng, Phm Xun Sn, Phm c Nguyn,
Nguyn Xun Trin, L Quc Hng, o Xun Dng
11/22/2012

Nhng kin thc cn bn v h iu hnh nhng linux v ng dng ca n trong lnh vc


cng ngh thng tin ni chung v lp trnh nhng ni ring c nhm su tm v tng
hp.

Nhn xt.
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................
...........................................................................................................................................

Ni Dung
I. GII THIU TNG QUAN V H THNG NHNG V H IU HNH THI
GIAN THC ....................................................................................................................... 4
1. H thng nhng (Embedded System) ........................................................................ 4
a) Khi nim ............................................................................................................... 4
b) H thng thi gian thc.......................................................................................... 4
c) c trng................................................................................................................ 5
d) Giao din ................................................................................................................ 5
e) Kin trc CPU ........................................................................................................ 5
f)

Thit b ngoi vi ..................................................................................................... 6

g) Cng c pht trin .................................................................................................. 6


2. H iu hnh thi gian thc (RTOS) v kernel thi gian thc ................................. 7
a) Chng trnh, tc v v lung ............................................................................... 7
b) Vng lp kim sot n gin ................................................................................. 8
c) H thng ngt iu khin ....................................................................................... 9
d) a nhim tng tc ................................................................................................ 9
e) a nhim u tin .................................................................................................... 9
f)

Vi nhn (Microkernel) v nhn ngoi (Exokernel) ................................................ 9

g) Nhn khi (monolithic kernels) ........................................................................... 10


II.

PHN MM TRONG EMBEDDED LINUX ........................................................ 10

1. Gii thiu Linux ...................................................................................................... 10


a) Tng quan ............................................................................................................ 11
b) im mnh ........................................................................................................... 12
c) im yu .............................................................................................................. 13
2. Linux Kernel............................................................................................................ 14
a) Kin trc nhn ...................................................................................................... 14
b)

c im chnh ca nhn Linux ...................................................................... 20

c) File System ............................................................................................................. 21


d) Device Drivers ..................................................................................................... 25

e) Cu hnh kernel .................................................................................................... 25


f)

Bin Dch v ci t ht nhn cho h thng my ch .......................................... 32

g) S dng m-un ht nhn .................................................................................... 33


3. Toolchain ................................................................................................................. 34
a) Cross compiler ..................................................................................................... 34
b)

nh ngha Toolchain v cc thnh phn ......................................................... 35

c) Th vin C .......................................................................................................... 37
d)

Toolchain Options ............................................................................................ 38

e) Xy dng mt Toolchain ..................................................................................... 39


4. Bootloader ............................................................................................................... 42
a) Gii thiu Bootloader ........................................................................................... 42
b)

Bootloader trn mt s nn tng ph bin ........................................................ 42

c) Bootloader cho cc CPUs nhng ......................................................................... 45


d)
III.

U-boot Bootloader ............................................................................................ 45


PHN CNG I VI EMBEDDED LINUX..................................................... 52

1. Yu cu phn cng .................................................................................................. 52


2. Kh nng tch hp phn cng .................................................................................. 54
3. Cc phn cng tch hp hin nay ............................................................................ 56
IV. NG DNG XY DNG MT H THNG NHNG LINUX TRN NN
TNG ARM (TI OMAP3) ................................................................................................ 57
1. Cu hnh phn cng. ................................................................................................ 57
2. Build mt Cross-compiling Toolchain .................................................................... 58
3. Buil Bootloader U-Boot. ......................................................................................... 61
4. Build kernel Linux................................................................................................... 64
5. Hng pht trin ca cc ng dng Embedded Linux ............................................ 66
6. Embedded Linux trong Android.............................................................................. 67
V.

Tham Kho .............................................................................................................. 71

I.

GII THIU TNG QUAN V H THNG NHNG V H IU HNH


THI GIAN THC

1. H thng nhng (Embedded System)


a) Khi nim
H thng nhng (Embedded system) l mt thut ng ch mt h thng c kh
nng t tr c nhng vo trong mt mi trng hay mt h thng m. l cc h
thng tch hp c phn cng v phn mm phc v cc bi ton chuyn dng trong nhiu
lnh vc cng nghip, t ng ho iu khin, quan trc v truyn tin. c im ca cc
h thng nhng l hot ng n nh v c tnh nng t ng ho cao.
H thng nhng thng c thit k thc hin mt chc nng chuyn bit no
. Khc vi cc my tnh a chc nng, chng hn nh my tnh c nhn, mt h thng
nhng ch thc hin mt hoc mt vi chc nng nht nh, thng i km vi nhng yu
cu c th v bao gm mt s thit b my mc v phn cng chuyn dng m ta khng
tm thy trong mt my tnh a nng ni chung. V h thng ch c xy dng cho mt
s nhim v nht nh nn cc nh thit k c th ti u ha n nhm gim thiu kch
thc v chi ph sn xut. Cc h thng nhng thng c sn xut hng lot vi s
lng ln. H thng nhng rt a dng, phong ph v chng loi. c th l nhng
thit b cm tay nh gn nh ng h k thut s v my chi nhc MP3, hoc nhng sn
phm ln nh n giao thng, b kim sot trong nh my hoc h thng kim sot cc
my nng lng ht nhn. Xt v phc tp, h thng nhng c th rt n gin vi
mt vi iu khin hoc rt phc tp vi nhiu n v, cc thit b ngoi vi v mng li
c nm gn trong mt lp v my ln.
Cc thit b PDA hoc my tnh cm tay cng c mt s c im tng t vi h
thng nhng nh cc h iu hnh hoc vi x l iu khin chng nhng cc thit b ny
khng phi l h thng nhng tht s bi chng l cc thit b a nng, cho php s dng
nhiu ng dng v kt ni n nhiu thit b ngoi vi.
b) H thng thi gian thc
Trong lnh vc cng ngh thng tin, ngi ta ni v h thng thng tin thi gian
thc khi h thng iu khin mt vt th vt l vi mt tc ph hp vi s tin
trin ca tin trnh ch. Mt v d d hiu (h thng thng tin iu khin mn hnh hin
th gi chnh xc ca cc tu in ngm s n v i ti mt gare nht nh). H thng
thng tin thi gian thc khc vi nhng h thng thng tin khc bi s g b v thi
gian, do , vic tun th cc nguyn tc cng quan trng nh chnh xc ca kt qu,
ni mt cch khc, h thng khng ch n gin l a ra kt qu chnh xc m n cn
phi thc hin mt x l trong mt thi gian rt ngn. H thng thng tin thi gian thc
ngy nay c ng dng trong rt nhiu lnh vc nh: trong ngnh cng nghip sn xut,

kim sot tin trnh (trong nh my, hay trong vin ht nhn, trong h thng hng khng,
thng qua cc h thng dn ng tch hp trn my bay v v tinh). S pht trin ca h
thng thng tin thi gian thc yu cu mi phn t ca h thng phi thi gian thc, v
mt h thng c thit k theo cch nh vy c gi l h iu hnh thi gian thc.
c) c trng
H thng nhng thng c mt s c im chung nh sau:
Cc h thng nhng c thit k thc hin mt s nhim v chuyn dng ch
khng phi ng vai tr l cc h thng my tnh a chc nng. Mt s h thng i
hi rng buc v tnh hot ng thi gian thc m bo an ton v tnh ng
dng; mt s h thng khng i hi hoc rng buc cht ch, cho php n gin ha
h thng phn cng gim thiu chi ph sn xut.
Mt h thng nhng thng khng phi l mt khi ring bit m l mt h thng
phc tp nm trong thit b m n iu khin.
Phn mm c vit cho cc h thng nhng c gi l firmware v c lu tr
trong cc chip b nh ROM hoc b nh flash ch khng phi l trong mt a.
Phn mm thng chy vi s ti nguyn phn cng hn ch: khng c bn phm,
mn hnh hoc c nhng vi kch thc nh, dung lng b nh thp Sau y, ta s i
su, xem xt c th c im ca cc thnh phn ca h thng nhng.
d) Giao din
Cc h thng nhng c th khng c giao din (i vi nhng h thng n nhim)
hoc c y giao din giao tip vi ngi dng tng t nh cc h iu hnh trong
cc thit b bn. i vi cc h thng n gin, thit b nhng s dng nt bm, n
LED v hin th ch c nh hoc ch hin th s, thng i km vi mt h thng menu
n gin.
Cn trong mt h thng phc tp hn, mt mn hnh ha, cm ng hoc c cc
nt bm l mn hnh cho php thc hin cc thao tc phc tp m ti thiu ha c
khong khng gian cn s dng; ngha ca cc nt bm c th thay i theo mn hnh
v cc la chn. Cc h thng nhng thng c mt mn hnh vi mt nt bm dng cn
iu khin (joystick button). S pht trin mnh m ca mng ton cu mang n cho
nhng nh thit k h nhng mt la chn mi l s dng mt giao din web thng qua
vic kt ni mng. iu ny c th gip trnh c chi ph cho nhng mn hnh phc tp
nhng ng thi vn cung cp kh nng hin th v nhp liu phc tp khi cn n, thng
qua mt my tnh khc. iu ny l ht sc hu dng i vi cc thit b iu khin t
xa, ci t vnh vin. V d, cc router l cc thit b ng dng tin ch ny.
e) Kin trc CPU

Cc b x l trong h thng nhng c th c chia thnh hai loi: vi x l v vi iu


khin. Cc vi iu khin thng c cc thit b ngoi vi c tch hp trn chip nhm
gim kch thc ca h thng. C rt nhiu loi kin trc CPU c s dng trong thit
k h nhng nh ARM, MIPS, Coldfire/68k, PowerPC, x86, PIC, 8051, Atmel AVR,
Renesas H8, SH, V850, FR-V, M32R, Z80, Z8 iu ny tri ngc vi cc loi my
tnh bn, thng b hn ch vi mt vi kin trc my tnh nht nh. Cc h thng
nhng c kch thc nh v c thit k hot ng trong mi trng cng nghip
thng la chn PC/104 v PC/104++ lm nn tng. Nhng h thng ny thng s
dng DOS, Linux, NetBSD hoc cc h iu hnh nhng thi gian thc nh QNX hay
VxWorks. Cn cc h thng nhng c kch thc rt ln thng s dng mt cu hnh
thng dng l h thng on chip (System on a chip SoC), mt bng mch tch hp cho
mt ng dng c th (an application-specific integrated circuit ASIC). Sau nhn
CPU c mua v thm vo nh mt phn ca thit k chip. Mt chin lc tng t l
s dng FPGA (field-programmable gate array) v lp trnh cho n vi nhng thnh phn
nguyn l thit k bao gm c CPU.
f) Thit b ngoi vi
H thng nhng giao tip vi bn ngoi thng qua cc thit b ngoi vi, v d nh:
Serial Communication Interfaces (SCI): RS-232, RS-422, RS-485...
Synchronous Serial Communication Interface: I2C, JTAG, SPI, SSC v ESSI
Universal Serial Bus (USB)
Networks: Controller Area Network, LonWorks...
B nh thi: PLL(s), Capture/Compare v Time Processing Units
Discrete IO: General Purpose Input/Output (GPIO)
g) Cng c pht trin
Tng t nh cc sn phm phn mm khc, phn mm h thng nhng cng c
pht trin nh vic s dng cc trnh bin dch (compilers), chng trnh dch hp ng
(assembler) hoc cc cng c g ri (debuggers). Tuy nhin, cc nh thit k h thng
nhng c th s dng mt s cng c chuyn dng nh:
B g ri mch hoc cc chng trnh m phng (emulator)
Tin ch thm cc gi tr checksum hoc CRC vo chng trnh, gip h thng
nhng c th kim tra tnh hp l ca chng trnh .

i vi cc h thng x l tn hiu s, ngi pht trin h thng c th s dng phn


mm workbench nh MathCad hoc Mathematica m phng cc php ton.
Cc trnh bin dch v trnh lin kt (linker) chuyn dng c s dng ti u ha
mt thit b phn cng.
Mt h thng nhng c th c ngn ng lp trnh v cng c thit k ring ca n
hoc s dng v ci tin t mt ngn ng c sn.
Cc cng c phn mm c th c to ra bi cc cng ty phn mm chuyn dng v
h thng nhng hoc chuyn i t cc cng c pht trin phn mm GNU. i khi, cc
cng c pht trin dnh cho my tnh c nhn cng c s dng nu b x l ca h
thng nhng gn ging vi b x l ca mt my PC thng dng.
2. H iu hnh thi gian thc (RTOS) v kernel thi gian thc
a) Chng trnh, tc v v lung
Mt chng trnh trn mt h thng nhng chnh l mt phn mm c kh nng thc
thi c lp v c vng nh ring ca mnh. N bao gm mi trng thc thi mt chc
nng c th v kh nng tng tc vi h iu hnh. Mt chng trnh c th c bt
u chy mt cch c lp hoc c th t cc chng trnh khc. Mt h iu hnh c
kh nng thc thi nhiu chng trnh cng mt lc song song nhau.
Tuy nhin, khi mt chng trnh c kh nng t chia ra mt vi phn c kh nng
thc thi song song nhau, mi phn c gi l mt lung. Mt lung chnh l mt
phn trong chng trnh v ph thuc v mt chc nng so vi cc lung khc nhng li
c kh nng hot ng c lp nhau. Cc lung s chia s chung mt b nh trong mt
chng trnh. Khi nim v tc v v lung c th thay th cho nhau. Hnh di m t s
khc nhau gia chng trnh v lung.

Mt phng php khc m cc kernel thi gian thc hay s dng chnh l m hnh
sp xp mc u tin. Trong m hnh ny, mi lung s i km vi mc u tin ca
n, lc ny, vi x l s thit lp ng truy cp ti lung no c mc u tin cao nht
khi n i hi c phc v. Cng c mt vi bin th ca phng php ny, tuy nhin
vn phi m bo cc lung c mc u tin thp nht vn phi c th truy cp ti vi
x l mt vi ln. Hnh di m t phng php cch x l ca phng php ny.

Mt u im cc k quan trng ca phng php ny chnh l n c kh nng tm


hon thc thi mt lung khi c mt lung khc vi mc u tin cao hn cn phc v.
Qu trnh lu tr li cc thng tin hin thi ca lung b tm hon thc thi khi c mt
lung khc vi mc u tin cao hn cn phc v gi l context switching. Qu trnh
ny phi c thc hin nhanh v n gin lung b tm hon c th thc hin tip
nhim v ca mnh mt cch chnh xc khi n ly li c quyn iu khin.
Mt h thng nhng thi gian thc phi c kh nng p ng li cc tn hiu ng vo
hay cc s kin mt cch nhanh nht v chnh xc nht, y chnh l cc ngt ca h
thng. Ngt ca h thng s phi lm cho vi x l ngng nhim v ang thc thi x l
ngt. Mt ngt s c x l bi ISR (interrupt service routine), n c kh nng kch hot
mt lung c mc u tin cao hn lung ang c thc thi. Lc ny, n s tm hon
li lung hin ti dnh quyn cho lung mi c mc u tin cao hn. Ngt c th
c to ra bi phn mm (ngt mm) hay bi cc thit b phn cng (ngt cng).
b) Vng lp kim sot n gin
Theo thit k ny, phn mm c t chc thnh mt vng lp n gin. Vng lp
gi n cc chng trnh con, mi chng trnh con qun l mt phn ca h thng phn
cng hoc phn mm.

c) H thng ngt iu khin


Cc h thng nhng thng c iu khin bng cc ngt. C ngha l cc tc v
ca h thng nhng c kch hot bi cc loi s kin khc nhau. V d, mt ngt c th
c sinh ra bi mt b nh thi sau mt chu k c nh ngha trc, hoc bi s
kin khi cng ni tip nhn c mt byte no .
Loi kin trc ny thng c s dng trong cc h thng c b qun l s kin n
gin, ngn gn v cn tr thp. H thng ny thng thc hin mt tc v n gin
trong mt vng lp chnh. i khi, cc tc v phc tp hn s c thm vo mt cu
trc hng i trong b qun l ngt c vng lp x l sau . Lc ny, h thng gn
ging vi kiu nhn a nhim vi cc tin trnh ri rc.
d) a nhim tng tc
Mt h thng a nhim khng u tin cng gn ging vi k thut vng lp kim
sot n gin ngoi tr vic vng lp ny c n giu thng qua mt giao din lp trnh
API. Cc nh lp trnh nh ngha mt lot cc nhim v, mi nhim v chy trong mt
mi trng ring ca n. Khi khng cn thc hin nhim v th n gi n cc tin
trnh con tm ngh (bng cch gi pause, wait, yield ).
u im v nhc im ca loi kin trc ny cng ging vi kim vng lp kim
sot n gin. Tuy nhin, vic thm mt phn mm mi c thc hin d dng hn
bng cch lp trnh mt tc v mi hoc thm vo hng i thng dch (queueinterpreter).
e) a nhim u tin
loi kin trc ny, h thng thng c mt on m mc thp thc hin vic
chuyn i gia cc tc v khc nhau thng qua mt b nh thi. on m ny thng
nm mc m h thng c coi l c mt h iu hnh v v th cng gp phi tt c
nhng phc tp trong vic qun l a nhim.
Bt k tc v no c th ph hy d liu ca mt tc v khc u cn phi c tch
bit mt cch chnh xc. Vic truy cp ti cc d liu chia s c th c qun l bng
mt s k thut ng b ha nh hng i thng ip (message queues), semaphores
V nhng phc tp ni trn nn mt gii php thng c a ra l s dng mt h
iu hnh thi gian thc. Lc , cc nh lp trnh c th tp trung vo vic pht trin cc
chc nng ca thit b ch khng cn quan tm n cc dch v ca h iu hnh na.
f) Vi nhn (Microkernel) v nhn ngoi (Exokernel)
Khi nim vi nhn (microkernel) l mt bc tip cn gn hn ti khi nim h iu
hnh thi gian thc. Lc ny, nhn h iu hnh thc hin vic cp pht b nh v
chuyn CPU cho cc lung thc thi. Cn cc tin trnh ngi dng s dng cc chc

nng chnh nh h thng file, giao din mng li, Ni chung, kin trc ny thng
c p dng trong cc h thng m vic chuyn i v giao tip gia cc tc v l
nhanh.
Cn nhn ngoi (exokernel) tin hnh giao tip hiu qu bng cch s dng cc li
gi chng trnh con thng thng. Phn cng v ton b phn mm trong h thng lun
p ng v c th c m rng bi cc ng dng.
g) Nhn khi (monolithic kernels)
Trong kin trc ny, mt nhn y vi cc kh nng phc tp c chuyn i
ph hp vi mi trng nhng. iu ny gip cc nh lp trnh c c mt mi trng
ging vi h iu hnh trong cc my bn nh Linux hay Microsoft Windows v v
th rt thun li cho vic pht trin. Tuy nhin, n li i hi ng k cc ti nguyn phn
cng lm tng chi ph ca h thng. Mt s loi nhn khi thng dng l Embedded
Linux v Windows CE. Mc d chi ph phn cng tng ln nhng loi h thng nhng
ny ang tng trng rt mnh, c bit l trong cc thit b nhng mnh nh Wireless
router hoc h thng nh v GPS. L do ca iu ny l:
H thng ny c cng kt ni n cc chip nhng thng dng
H thng cho php s dng li cc on m sn c ph bin nh cc trnh iu khin
thit b, Web Servers, Firewalls,
Vic pht trin h thng c th c tin hnh vi mt tp nhiu loi c tnh, chc
nng cn sau lc phn phi sn phm, h thng c th c cu hnh loi b
mt s chc nng khng cn thit. iu ny gip tit kim c nhng vng nh m
cc chc nng chim gi.
H thng c ch ngi dng d dng chy cc ng dng v g ri. Nh , qui
trnh pht trin c thc hin d dng hn v vic lp trnh c tnh linh ng hn.
C nhiu h thng nhng thiu cc yu cu cht ch v tnh thi gian thc ca h
thng qun l. Cn mt h thng nh Embedded Linux c tc nhanh tr li cho
nhiu ng dng. Cc chc nng cn n s phn ng nhanh cng c th c t vo
phn cng.
II.

PHN MM TRONG EMBEDDED LINUX

1. Gii thiu Linux


Khc vi PC thng chy trn nn h iu hnh windows hoc unix, cc h thng
nhng c cc h iu hnh nhng ring ca mnh. Cc h iu hnh dng trong cc h
nhng ni tri hin nay bao gm Embedded linux, VxWorks, WinCE, Lynyos, BSD,
Green Hills, QNX v DOS, Embeddde linux hin ang pht trin mnh. Nm 2001 h
iu hnh ny chim 12% th phn cc h iu hnh nhng th nm 2002 chim 27% v

chim v tr s 1. Hin nay 40% cc nh thit k cc h nhng cn nhc u tin s dng


Embedded linux cho cc ng dng mi ca mnh v sau mi n cc h iu hnh
nhng truyn thng nh VxWorks, WinCE. Cc i th cnh tranh ca Embedded linux
hin nay l cc h iu hnh nhng t to v windows CE. S d Embedded linux c s
pht trin vt bc l do c sc hp dn i vi cc ng dng gi thnh thp v i hi
thi gian a sn phm ra th trng nhanh. Mt khc Linux l phn mm m ngun m
nn bt k ai cng c th hiu v thay i theo mnh. Linux cng l mt h iu hnh
c cu trc module v chim t b nh trong khi windows khng c cc c tnh u vit
ny. Do th trng ca cc sn phm nhng tng mnh ln cc nh sn xut ngy cng s
dng cc h iu hnh nhng m bo sn phm c sc cnh tranh v Embedded linux
ang l sn phm h iu hnh nhng c uy tn chim v tr s 1 trong nhng nm ti.
a) Tng quan
Linux l tn gi ca mt h iu hnh my tnh v cng l tn ht nhn ca h iu hnh.
N c l l mt v d ni ting nht ca phn mm t do v ca vic pht trin m ngun
m.
Phin bn Linux u tin do Linus Torvalds vit vo nm 1991, lc ng cn l mt sinh
vin ca i hc Helsinki ti Phn Lan. ng lm vic mt cch hng say trong vng 3
nm lin tc v cho ra i phin bn Linux 1.0 vo nm 1994. B phn ch yu ny c
pht trin v tung ra trn th trng di bn quyn GNU General Public License. Do
m bt c ai cng c th ti v xem m ngun ca Linux.
Mt cch chnh xc, thut ng "Linux" c s dng ch Nhn Linux, nhng tn ny
c s dng mt cch rng ri miu t tng th mt h iu hnh ging Unix (cn
c bit n di tn GNU/Linux) c to ra bi vic ng gi nhn Linux cng vi
cc th vin v cng cGNU, cng nh l cc bn phn phi Linux. Thc t th l tp
hp mt s lng ln cc phn mm nh my ch web, cc ngn ng lp trnh, cc h
qun tr c s d liu, cc mi trng lm vic desktop nh GNOME v KDE, v cc
ng dng thch hp cho cng vic vn phng nh OpenOfficehay LibreOffice.
Khi u, Linux c pht trin cho dng vi x l 386, hin ti h iu hnh ny h tr
mt s lng ln cc kin trc vi x l, v c s dng trong nhiu ng dng khc nhau
t my tnh c nhn cho ti cc siu my tnh v cc thit b nhng nh l cc my in
thoi di ng.
Ban u, Linux c pht trin v s dng bi nhng ngi say m. Tuy nhin, hin nay
Linux c c s h tr bi cc cng ty ln nhIBM v Hewlett-Packard, ng thi
n cng bt kp c cc phin bn Unix c quyn v thm ch l mt thch thc i
vi s thng tr ca Microsoft Windows trong mt s lnh vc. S d Linux t c
nhng thnh cng mt cch nhanh chng l nh vo cc c tnh ni bt so vi cc h
thng khc: chi ph phn cng thp, tc cao (khi so snh vi cc phin bn Unix c
quyn) v kh nng bo mt tt, tin cy cao (khi so snh vi Windows) cng nh l

cc c im v gi thnh r, khng b ph thuc vo nh cung cp. Mt c tnh ni tri


ca n l c pht trin bi mt m hnh pht trin phn mm ngun m hiu qu.
Tuy nhin, hin ti s lng phn cng c h tr bi Linux vn cn rt khim tn so
vi Windows v cc trnh iu khin thit b tng thch vi Windows nhiu hn l
Linux. Nhng trong tng lai s lng phn cng c h tr cho Linux s tng ln.
C bn ca HH c cc topic:
- Scheduler v cc c ch scheduling (da trn h s u tin ca process-priority).
- Virtual Memory+Paging (B nh o v c ch paging).
- Filesystem (Standard I/O).
- Driver (Kernel space/User space).
- Interprocess communication mechanism (cc c ch giao tip gia cc process).
- Interupt (interrupt t Hardware v interrupt t software).
b) im mnh
Trong chng ta s c rt nhiu ngi hi: "Th Linux c g hay ???".
Linux, ngay t ngy u, c to ra vi 1 suy ngh v s kt hp cng Internet. V th
Linux i trc trong vic to ra 1 h thng : a ngi dng ( multi-user ), a nhim (
multi-tasking ), h tr nhiu CPU cng 1 lc, ... v ang ng gp cho nhng h thng
trng im ca Internet ngy nay.
Linux l 1 HH mng theo ng ngha ca n, cc dch v telnet, ssh, web, ftp,
firewall... c pht trin t bn Linux u tin. Cluster - cch ghp nhiu my tnh yu
thnh 1 my tnh mnh hn c mt t nhiu nm trc. Remote Control i trc
windows mt bc di ( dch v ny mi c mt trong Windows XP). C th ni Linux
sinh ra cho Network - Networking OS.
Trong qu trnh pht trin, Linux dn dn r b lp o cng ngt kh khan kh s
dng v tin gn li vi ngi dng gia nh bng GUI ( Graphic User Interface - Giao
din ho ngi s dng ) , qu trnh install c n gin ho v to nhng bc d
dng hn. X-window cng cc Mi Trng Ho ( Desktop-Enviroment ) ni ting
nh KDE, GNOME gip cho ngi s dng khng cn phi kh khn vi cc dng
lnh kh khan.
V phng din s dng, Linux ngy nay rt d hn thi s khai. Cc Distributions
ang a Linux vo vi mi ngi, nhng phn cho ngi s dng Advance vn c
gi nguyn, bn c th Config Linux bng GUI ca cc Desktop Enviroment cng nh c
th dng Shell command line. Linux rt uyn chuyn ty theo ngi s dng.
Linux l 1 HH bn vng ( Stable ), mc bn vng ca Linux c chng t qua cc h
thng my ch chy Linux v c m 24/7 ( 24 gi - 7 ngy ). ( s snh vi Windows
XP, c coi l h thng Windows bn vng nht, bn cng phi Restart sau 2-3 tun 1
ln ). Mc bn vng ca Linux cng c chng t qua cch qun l thit b, 1 chng

trnh b Crash trong Linux khng th ko ton b h thng crash theo, bn ch cn tt


chng trnh v khi ng li n. ( i vi windows, 1 chng trnh crash d dng
ko theo ton b h thng windows gc ng ).
Linux khng yu cu 1 cu hnh my tnh cc mnh chy, Linux c th chy c trn
cc CPU t 100 MHz tr i cng nh khong 300 MB cng. H thng tng nh "
b" ny vn c th gip bn tm hiu Linux cng nh lm thnh 1 gateway hay proxy,
webserver, fileserver, ...
Hn ht, Linux c tao ra di GPL, ngha l Linux hon ton free ( min ph ). Free
theo 2 ngha: "free-beer" ( bia min ph ) v "freedom" ( t do ). Free-beer: Trong thc t,
free-beer khng c ngha l hon ton free, bn s c free beer nhng b li s phi tr
1 ci g . Linux cng th, thc t bn s phi tn tin internet download Linux, hay
phi mua CD cha Linux, hay phi mua t cc ca hng bn a CD ( tt nhin ch vi
gi ca a trng + gi tin cng ).
Freedom: ng, khi c Linux trong tay, bn c th t do m m ngun ca Linux,
kho st tng dng lnh ca Linux hc tp, cng nh bn c quyn t do sa i
Kernel hay ngun ca cc phn mm GPL ph hp vi thch ca bn. Tt nhin
s c 1 s qui nh nh, nhng cc quy nh ny khng nm ngoi mc ch gip cho
tn tui ngi vit u tin khng b nhm ln thi. Cui cng gi ca Linux l $ 0.00
. Bn c th copy 1 b Linux v gi cho bn mnh m khng s b FBI ( Female Body
Inspector ) n r gy v CopyRight, Linux chnh l FBI ( For a Better Internet ).
M ngun m: c th tm hiu tt c cc thnh phn to nn h iu hnh, t nhn h
iu hnh n cc tng trn => gip cho ngi hc v lm vic vi Linux nng cao
kin thc v h thng rt nhiu. V d nh trng cc bn u c hc Kin trc my
tnh, h iu hnh, vi x l vi rt nhiu khi nim khc nhau th khi lm vic v lm
quen vi m ca Linux cc bn s hiu r hn rt nhiu.
Free: cc bn c th s dng lm thng mi m khng phi lo g, trong khi cc h
iu hnh khc phi mt ph, v nh uC/OS-ii cng c dng rt nhiu, dng
nghin cu th thoi mi nhng mun lm ra sn phm th phi mua bn quyn.
Tnh a nn: hc Linux gip bn c th lm vic trn mi nn tng, Desktop, Mobile,
cc thit b dn dng, cng nghip ...
Cng ng pht trin rng: c nhiu ngi cng hc tt nhin chng ta s d hi v d
trao i hn rt nhiu.
Tnh ph bin: Linux c pht trin da trn thit k ca Unix nn khi lm Linux
mnh ngh bn s d dng lm quen vi mt s h iu hnh khc, ngay c h iu
hnh trn my Mac mnh cng s dng cc lnh gn ging ht nh Linux, cch t
chc h thng cng ging.
c) im yu

ng, chng ta thch th mnh ca Linux nhng cng khng phi b qua im yu
cht ngi ca Linux.
Tuy cc Distribution c bc tin di trong vic a Linux xung cho ngi s
dng bnh thng ( Home-User ) nhng Linux dng nh vn c khong cch xa l,
khng thn thin nh windows.
V Linux min ph nn nhng nh sn xut phn cng i lc mun gi b mt v
phn cng ca mnh, v th nhng thng tin cn thit vit chng trnh iu khin
thit b phn cng khng c thng bo. iu ny dn ti Linux khng th h tr nhiu
phn cng nh Windows. Vic kim tra HCL ( Hardware Compatibility List - Danh sch
Phn cng tng thch ) l cc k cn thit trc khi ci t 1 h thng Linux, bn c th
c mt thit b khng hot ng nu bn khng chc chn vn ny. ( Ti thi im
ny: hu ht cc phn cng thit b PC thng thng c Linux h tr ).
Vn tip theo l Game, cc game ln hin nay tuy pht trin phin bn cho
Linux, nhng cng ch dng li mc ca Quack III Arena, The Sim, ... bn vn s
phi s dng windows nu bn l Gamer.
2. Linux Kernel
a) Kin trc nhn

Nhn l 1 phn mm m trch chc v lin lc gia cc chng trnh ng dng my


tnh v phn cng. Cung cp cc chng nng nh: qun l file, qun l b nh o, cc
thit b nhp xut nhng cng, mn hnh, bn phm, .... Nhng Nhn Linux cha phi
l 1 HH, v th nn Nhn Linux cn phi lin kt vi nhng chng trnh ng dng
c vit bi t chc GNU to ln 1 HH hon chnh: HH Linux. y cng l l do
ti sao chng ta thy GNU/Linux khi c nhc n Linux.

Tip theo, 1 cng ty hay 1 t chc ng ra ng gi cc sn phm ny ( Nhn v


Chng trnh ng dng ) sau sa cha mt s cu hnh mang c trng ca cng
ty/ t chc mnh v lm thm phn ci t ( Installation Process ) cho b Linux ,
chng ta c : Distribution. Cc Distribution khc nhau s lng v loi Software c
ng gi cng nh qu trnh ci t, v cc phin bn ca Nhn. 1 s Distribution ln
hin nay ca Linux l : Debian, Redhat, Mandrake, SlackWare, Suse, ...
Khi nim kernel y ni n nhng phn mm, ng dng mc thp (low-level)
trong h thng, c kh nng thay i linh hot ph hp vi phn cng. Chng tng
tc vi tt c ng dng v hot ng trong ch user mode, cho php cc qu trnh
khc hay cn gi l server, nhn thng tin t cc thnh phn khc qua inter-process
communication (IPC).
V bn cht, c nhiu cch xy dng cu trc v bin dch 1 b kernel nht nh t
u. Nhn chung, vi hu ht cc kernel hin nay, chng ta c th chia ra lm 3
loi: monolithic, microkernel, v hybrid. Linux s dng kernel monolithic trong khi OS
X (XNU) v Windows 7 s dng kernel hybrid.
Linux kernel cung cp mt giao din gia cc ng dng ngi dng, h thng phn
cng v ti nguyn. Mt vi chc nng ca Linux l:

Qun l b nh
Qun l h thng file
X l cc li v ngt
Thc hin cc dch v I/O
Cp pht ti nguyn h thng cho cc ngi dng

Phin bn 3.7 l nhn Linux mi nht hin nay.

Microkernel:
Microkernel c y cc tnh nng cn thit qun l b vi x l, b nh v IPC.
C rt nhiu th khc trong my tnh c th c nhn thy, tip xc v qun l trong ch
ngi dng. Microkernel c tnh linh hot kh cao, v vy bn khng phi lo lng khi
thay i 1 thit b no , v d nh card mn hnh, cng lu tr... hoc thm ch l c
h iu hnh. Microkernel vi nhng thng s lin quan footprint rt nh, tng t vi
b nh v dung lng lu tr, chng cn c tnh bo mt kh cao v ch nh r rng
nhng tin trnh no hot ng trong ch user mode, m khng c cp quyn nh
trong ch gim st - supervisor mode.
u im:
Tnh linh hot cao.
Bo mt.
S dng t footprint ci t v lu tr.
Nhc im:
Phn cng i khi kh hiu hn thng qua h thng driver.
Phn cng hot ng di mc hiu sut thng thng v cc trnh iu khin
trong ch user mode.
Cc tin trnh phi ch i c nhn thng tin.
Cc tin trnh khng th truy cp ti nhng ng dng khc m khng phi ch i.
Monolithic Kernel:
Vi Monolithic th khc, chng c chc nng bao qut rng hn so vi microkernel,
khng ch tham gia qun l b vi x l, b nh, IRC, chng cn can thip vo trnh iu
khin driver, tnh nng iu phi file h thng, cc giao tip qua li gia server...
Monolithic tt hn khi truy cp ti phn cng v a tc v, bi v nu 1 chng trnh
mun thu thp thng tin t b nh v cc tin trnh khc, chng cn c quyn truy cp
trc tip v khng phi ch i cc tc v khc kt thc. Nhng ng thi, chng cng l
nguyn nhn gy ra s bt n v nhiu chng trnh chy trong ch supervisor mode
hn, ch cn 1 s c nh cng khin cho c h thng mt n nh.
u im:
Truy cp trc tip n cc phn cng.
D dng x l cc tn hiu v lin lc gia nhiu thnh phn vi nhau.
Nu c h tr y , h thng phn cng s khng cn ci t thm driver
cng nh phn mm khc.

Qu trnh x l v tng tc nhanh hn v khng cn phi ch i.


Nhc im:
Tiu tn nhiu footprint ci t v lu tr.
Tnh bo mt km hn v tt c u hot ng trong ch gim st - supervisor
mode.
Hybrid Kernel:
Khc vi 2 loi kernel trn, Hybrid c kh nng chn la v quyt nh nhng ng
dng no c php chy trong ch user hoc supervisor. Thng thng, nhng th
nh driver v file h thng I/O s hot ng trong ch user mode trong khi IPC v cc
gi tn hiu t server c gi li trong ch supervisor. Tnh nng ny thc s rt c
ch v chng m bo tnh hiu qu ca h thng, phn phi v iu chnh cng vic ph
hp, d qun l.
u im:
Cc nh pht trin c th chn v phn loi nhng ng dng no s chy trong ch
thch hp.
S dng t footprint hn so vi monolithic kernel.
C tnh linh hot v c ng cao nht.
Nhc im:
C th b b li trong qu trnh gy treo h thng tng t nh vi microkernel.
Cc trnh iu khin thit b phi c qun l bi ngi dng.
Kernel Linux l phn mm c bn nht ca h thng Linux. N qun l cc phn
cng trng trong h thng.
Kernel Linux x l h thng cho cc chng trnh v truy cp gin tip vo cc thit
b phn cng. c bit, Kernel Linux c th truy cp vo ti nguyn h thng m khng
cn giao tip trc tip vi phn cng.
Cu hnh Kernel cho php loi b nhng h tr khng cn thit, v ngc li, n c
th h tr thm mt thit b ngoi vi c bit.
Trong lnh vc h thng nhng, Linux kernel 2.6 gip Linux tr thnh i th cnh
tranh ln cho nh cung cp RTOS nh VxWorks v WinCE.
Linux kernel 2.6 nhiu tnh nng mi ci tin gip h iu hnh tt hn nh:

Tng cng hiu qu thi gian thc. N c th p ng c cc nhu cu nghim


ngt v thi gian. V d: Gi s trong mt nh my, cc cng nhn gi nhng vt
liu cn c ct bng cc my ct t ng. V l do an ton, cc cm bin quang
c t xung quanh cc li dao ca my ct nhn dng mu sc gng tay ca
nhng cng nhn. Khi h thng bo tay ca ngi cng nhn ang trong vng
nguy him, lp tc cc li dao phi ngng hot ng bo m an ton. H
thng ny khng th lm tc v no khc gii phng ti nguyn b x l. y
l mt h thng i hi p ng cc k nghim ngt v thi gian v tin cy.
Porting d dng hn.
H tr cho cc m hnh b nh ln, h tr cho vi iu khin.
Ci tin h thng lch trnh I/O.
H tr cc phn cng mi.
To kin trc ph. N thy i cu trc c thnh mt cu trc ring.
Ngoi ra, Linux kernel 2.6 h tr mt s vi iu khin khng c n v qun l b nh,
h tr cc b vi x l m68k Motorola, Dragonball, ColdFire, Hitachi

Ti sao Nhn Linux vit bng C m khng phi l C++?


Nhng l do no v nhn Linux (ni chung c Unix, bao gm Solaris) c vit bng
C m khng phi l C++. Trong khi C++ l mt ngn ng tt hn C v cc khi nim
hng i tng. Ti sao kernel hay hu ht cc h thng CSDL ph bin c vit bng
ngn ng C thay v bng C++.
Linus bt u vi vi chic my 386, h iu hnh Minix, v trnh bin dch gcc.
C c dng thay th Assembly bi nhiu l do nh kh nng bo tr m, kh
nng c, tnh hiu qu
Cch y nhiu nm, nhng nh pht trin kernel c gng dng g++ bin dch
nhn Linux v thy rng kernel chy chm hn so vi khi c bin dch bng gcc (nhiu
ngi ngh rng tc s l nh nhau); v ri h chng mun thc hin iu ny mt
ln no na.
V bi cnh lch s, Thompson v Ritchie pht trin UNIX bng cch s dng mt s
khi nim t Multics v CTSS. ( http://www.multicians.org/unix.html ) Bao gm vic
thc hin hu ht cc hot ng bng mt ngn ng bc cao hn (Unix C, Multics
PL/I), t tn cc command thng thng, v.v.. Bn hy tham kho:
http://cm.bell-labs.com/cm/cs/who/dmr/hist.html

Trong m t s pht trin sm ca UNIX bao gm vic chuyn i t Assembly


trn PDP-7 thnh C trn PDP-11. (gn cui trang).
Xy dng t nhng c s , UNIX t AT&T m rng vic phn phi v c
tin hnh bi hng ngn ngi l mt h iu hnh da trn C. Trong nhng nm 1970 v
1980, mt s thay th cho vic phn phi ca AT&T c pht trin ti UC Berkeley.
Xem:
http://en.wikipedia.org/wiki/Berkeley_Software_Distribution
Cho mt li gii thch ngn lin quan ti s pht trin ca BSD. Cc phin bn cui
cng ca BSD khng s dng bt k c s m ngun no ca AT&T, ngoi tr vic
thc hin chng bng C. Cui bi vit l danh sch mt vi hu du ca BSD bao gm c
SunOS (hin nay l Solaris).
iu khng phi ni rng ng dng c thc hin tt hn bng ngn ng
hng i tng nh l C++. Nhng c mt s giao din ngi dng ha (GUI) chng
hn nh KDE th c vit bng C++. Tuy nhin, c nhng ng dng th ph hp hn
vi ngn ng hng th tc, v im ny th h iu hnh cng nm trong loi .
b) c im chnh ca nhn Linux
im mnh chnh

Di ng v h tr phn cng.Chy trn hu ht tt c kin trc.


Kh nng m rng,c kh nng chy trn cc thit b nh cng nh cc siu my
tnh.
Tun th cc tiu chun v c kh nng tng tc.
H tr y kt ni mng.
Bo mt.N khng th che giu cc khim khuyt.M ca n c xem xt bi nhiu
chuyn gia.
Tnh n nh v tin cy.
H modul,c th bao gm nhng g h thng cn ngay c thi gian thc thi.

Chng trnh n gin,bn c th hc hi ngay t m hin ti.Cng c rt nhiu


ti nguyn trn mng rt hu ch cho cc bn.
Li gi h thng (System Calls)

Giao din chnh gia ht nhn v khng gian ngi dng c thit lp cc h thng
cuc gi.
Giao din h thng cuc gi c bao bc bi th vin C v ng dng khng gian
ngi dng khng bao gi thc hin c cuc gi h thng trc tip.
C khong 300 h thng cc cuc gi cung cp dch v ht nhn chnh

o Tp tin v thit b hot ng, hot ng kt ni mng,giao tip gia cc qu


trnh, tin trnh qun l, bn b nh.......
o H thng ny kh n nh theo thi gian:cc h thng cuc gi mi ch c
thm vo bi ngi pht trin h thng.
Kch thc nhn Linux

Linux 3.1:

Kch thc:434MB(39,400 file, khong 14,800,000 dng)

gzip nn lu tr tar: 93 MB

bzip2 nn lu tr tar : 74 MB (tt)

xz nn lu tr tar : 62 MB (tt nht)


Kch thc bin dch ti thiu ht nhn Linux 2.6.29 l CONFIG_EMBEDDED ,ht
nhn khi ng l QEMU PC( cng IDE,h tr thc thi ELF).
Ti sao kch thc ln nh vy?

Bi v chng bao gm 1000 iu khin thit b,nhiu giao thc kt ni


nhiu kin trc......

mng,h tr

Li ca Linux l kh nh

c) File System
Trong h iu hnh Linux, nhng tp tin m ngi s dng nhn thy c u theo
cu trc cy th mc, viroot nm trn cng. T im ny cc th mc v tp tin mi

mc nhnh ra lan dn xung pha di. Th mc cao nht, c k hiu bng vch /,
c gi l root directory (th mc gc).
Vi ngi s dng bnh thng th cy th mc ny l mt di nhng tp tin v th
mc ni lin nhau. Trn thc t, nhiu th mc trong cy th mc ny nm nhiu v tr
vt l khc nhau, trn cc partition khc nhau, v thm ch trn cc a khc nhau. Khi
mt trong cc partition y c kt ni vi cu trc cy ti mt th mc gi l mount
point (im kt ni, im lp rp), th mount point ny v tt c cc th mc cp di
c gi l file system.
H iu hnh Linux hnh thnh t nhiu th mc v tp tin khc nhau. Cc th mc
c th lp thnh nhiu file system khc nhau, ty vo cch ci t bn chn. Nhn
chung, a phn h iu hnh nm hai file system: root file system (file system gc)
c k hiu l /, v mt file system khc c kt ni theo /usr (c l user).
Khi dng lnh cd / chuyn v th mc gc v gi hin th danh sch th mc, bn
s thy nhiu th muc. Nhng th mc ny to thnh ni dung ca root file system, ng
thi cung cp mount point cho cc file system khc
Th mc /bin cha cc chng trnh thi hnh c, cn gi l cc binaries (nh phn).
Chng l chng trnh h thng ch yu. Nhiu lnh ca Linux, chng hn nh ls, l cc
chng trnh nm ti cc th mc y.
Th mc /sbin cha cc file nh phn h thng. Hu ht cc tp tin y dng
qun tr h thng. (superuser-bin).
Th mc /etc rt quan trng v cha nhiu file cu hnh Linux. Chng gip cho h
thng my bn c "c tnh". File mt khu passwdnm th mc ny, cng nh fstab ,
danh sch cc file system cn np vo khi khi ng my. Ngoi ra th mc cn cha cc
script khi ng cho Linux, danh sch cc host km a ch IP, cng vi nhiu thng tin
cu hnh khc.
Cc th vin dng chung c cha trong th mc /lib. Khi dng chung th vin,
nhiu chng trnh s s dng li cng loi m, hn na khi c cha cng ch, th
vin s gip gim thiu kch c chng trnh kha cnh thi gian chy.
Th mc /dev cha cc file c bit gi l device files (file thit b, c h thng s
dng chy cc phn cng. V d file/dev/mouse s c thng tin t chut. Khi t chc
s dng phn cng theo cch ny, Linux lm cho vic tng tc vi phn cng trng
ging nh mt phn mm. iu ny c ngha l trong nhiu trng hp, bn c th dng
c php nh khi dng vi directory ca mnh trn a mm, ta c th dng lnh: tar -cdf
/dev/fd0 tackett . /dev/fd0 ch cho lnh tar bit phi dng a mm. Nhiu thit b trong
th mc /dev c tp hp thnh nhm logical.
Bng 1.1: Cc thit b thng dng cha trong th mc /dev
File thit b Description
Bn giao tip h thng, l mn hnh ni kt vt l
/dev/console
vi h thng
Giao din driver cho cc cng IDE. Thit b
/dev/hd*
/dev/hda1 ch partition u tin trn cng had.
Thit b /dev/had ch ton b cng hda.

Giao din driver cho cc a SCSI. Nhng a


/dev/sd*
v partition ny c cng quy c vi thit b IDE
/dev/hd*.
Driver thit b h tr a mm. a mm u
/dev/fd*
tin l /dev/fd0, th hai l /dev/fd1.
/dev/st*
Driver thit b cho cng bng t SCSI.
Driver cung cp nhiu loi thit b giao tip khc
nhau cho user nhp liu. S d vit tt l tty bi v
trc kia cc terminal dng teletype u mc ni
/dev/tty*
vi h iu hnh UNIX. Vi Linux, nhng tp tin
ny h tr cc thit b giao tip o, m bn c th
truy cp bng cch bm t cho n . Thit b giao
tip o cho php nhiu user ng nhp cng lc.
Driver h tr terminal gi, dng cho vic ng
/dev/pty*
nhp t xa, chng hn nh nhng phin ng
nhp qua Telnet.
Cc cng giao din ni tip trn my bn. File
/dev/ttyS0 tng ng COM1 ca MS-DOS. Nu
/dev/ttyS* bn s dng chut ni tip, th file /dev/mouse l
mt lin kt tng trng, ni vi thit b ttyS
tng ng (Chut ni kt vi thit b ny.)
/dev/cua* Cc thit b c bit gi ra ngoi dng vi modem
Mt thit b rt c bit, ch yu l mt l en.
Tt c cc d liu ghi vo /dev/null xem nh b
mt vnh vin. Vic ny hu ch khi bn mun
/dev/null
chy mt cu lnh v th tiu stdout hoc stderr.
V nu /dev/null dng lm file nhp, bn s to ra
mt file c di zero.
Th mc /proc l mt file system o, dng c thng tin t b nh.
Th mc /tmp cha cc file tm m chng trnh to ra trong khi chy. Nu bn bit
h thng my mnh c chng trnh to ra nhiu file tm vi kch c ln, bn nn to th
mc /tmp thnh mt file system ring thay v t n vo file system gc nh l mt th
mc bnh thng. Bi v vi cht cha cc file tm ngy cng nhiu, file system gc
s nhanh chng b y.
Th mc /home l th mc c s ca cc home directory cho cc user. Qun tr vin
thng t /home thnh file system ring r nhm to nhiu khong trng cho user s
dng. Ngoi ra nu h thng my bn c nhiu user, bn nn chia th mc /home thnh
nhiu file system khc nhau. V d bn c th to ra /home/vnexperts cho cc thnh vin

ca nhm iu hnh ca cng ty v/home/admin cho qun tr vin. Mi th mc nh th


s l mt file system ring, bn di c home directory ring cho cc user tng ng.
Th mc /var lu cc file c th thay i kch thc theo thi gian. Nhiu file ng
nhp h thng (system log file) thng nm trong th mc ny. Th mc /var/spool cng
vi cc th mc con dng cha d liu nh tin tc hoc th tn mi nhn c, hoc
gi ang ch gi i ni khc.
Th mc /usr v cc th mc con rt quan trng cho h thng Linux, bi v cha
ng nhiu th mc trong c nhng chng trnh cn thit nht cho h thng. Nhng
th mc cp di ca /usr cha cc gi phn mm ln m bn ci t. Bng 1.2 gii
thiu mt s th mc cp di ca /usr. hu ht mi trng hp th mc /usr c
thit lp nh l mt file system ring r.
Bng 1.2 Cc th mc th cp quan trng trong file system /usr.
Th mc th
cp
/usr/bin
/usr/etc

/usr/include

/usr/g++include

Description
Lu nhiu file thi hnh ca h thng.
Lu nhiu file cu hnh h thng
Ti y v trong nhiu th mc cp di ca
/usr/include l ni lu tt c cc file km theo
b bin dch C. Nhng file header ny nh
ngha cc hng v hm dng trong lp trnh
bng C.
Lu cc file km theo b bin dch C.

Cha cc th vin chng trnh s dng


trong khi kt ni
Cha cc trang th cng cho chng trnh.
/usr/share/man Bn di /usr/share/man l nhiu th mc
tng ng vi cc on trong trang man.
Driver h tr terminal gi, dng cho vic ng
/dev/pty*
nhp t xa, chng hn nh nhng phin ng
nhp qua Telnet.
Cha cc th mc m ngun ca nhiu chng
trnh trn h thng. Nu nhn c gi phn
/usr/src
mm ch ci t, bn nn lu vo /usr/src/tngi trc khi ci t.
Dnh ring cho vic thit k hoc ty chnh
/usr/local
cc ng dng cho ph hp vi h thng my
/usr/lib

bn. Nhn chung, hu ht phn mm dng ti


ch c lu trong cc th mc cp di ca
th mc ny
d) Device Drivers
Device driver l phn mm giao tip gia phn cng v kernel ca Embedded Linux.
Linux device driver c th c tch hp vo trong kernel theo 2 phng php: bin dch
trc tip vo kernel hoc bin dch thnh mt nh dng i tng (object format c tp
tin l device_driver.o) kernel c th ti ln khi c nhu cu (s dng lnh install module
insmod device_driver.o). bin dch cc tp tin ca device driver cn phi xy dng
mt Makefile. Kt qu thu c s l tp tin c phn m rng *.o
e) Cu hnh kernel
Cu hnh ht nhn v xy dng h thng da trn multiple Makeles:
N ch tng tc vi Makefile chnh, n c th mc u ca cy ngun ht nhn
S tng tc din ra:
-

S dng cng c make, ci m phn tch c php ca Makefile.

Thng qua nhng mc tiu khc nhau, nh ngha hnh ng nn lm (cu hnh,
bin dch, ci t, ..). Chy make help thy tt c cc mc tiu c sn

Ht nhn bao gm hng ngn driver thit b, driver file h thng, giao thc mng, v
nhng mc cu hnh khc. Hng ngn ty chn c sn, ci c s dng bin dch mt
phn code ngun ht nhn. Cu hnh ht nhn l x l nh ngha thit t ty chn ci
m bn mun ht nhn c bin dch. Thit t ty chn ph thuc vo:
-

Phn cng ca bn

Nhng kh nng m bn mun a vo ht nhn ca mnh

Cu hnh c lu tr trong file .config ti gc ca ngun ht nhn


-

file text n gin, kiu key=value

Khi nhng ty chn c nhng ph thuc, ng bao gi chnh s bng tay, hy thng qua
giao din ha hay vn bn
-

make xconfig, make gconfig ( ha)

make menuconfig, make nconfig (text)

Bn c th chuyn i t ci ny n mt ci khc, tt c chng s c np hay


lu trong cng file .config, v biu din cng mt thit t ty chn

chnh sa mt ht nhn trong mt phn b GNU/Linux: file cu hnh th lun


c nm trong /boot/, cng vi file nh ca ht nhn: /boot/config-3.2.0-31-generic.
nh ca ht nhn l mt file n, kt qu ca vic lin kt tt c cc file i tng
ci m tng ng vi nhng tnh nng c bt trong file cu hnh
-

l nhng file c np vo b nh bi bootloader

tt c bao gm nhng tnh nng c sn ngay khi ht nhn bt u, ti thi im


khng c file h thng tn ti

Mt vi tnh nng c th c bin dch nh l nhng m-un l nhng plugins(


b sung) m c th c np vo/ g b thm hay b cc tnh nng ca ht nhn. Mi
m-un c lu tr trong mt file ring bit trong file h thng v v th truy cp v
file h thng l bt buc s dng nhng m-un ny. iu ny th khng th trong th
tc khi ng ca ht nhn bi v khng c h thng file no c sn. C nhng loi ty
chn khc nhau nhng ty chn bool (true, false), tristate (true, module, fasle). Ty chn
int, ch r gi tr integer. Ty chn string ch r gi tr string
C nhng ph thuc gia nhng ty chn trong ht nhn. V d, bt mt driver mng
yu cu ngn xp mng c kch hot. 2 loi ph thuc:
-

Depends on trong trng hp ny, ty chn A ci m ph thuc vo ty chn B


th khng hin th n khi ty chn B c kch hot

Select ty chn A ph thuc vo B, khi A kch hot th B c kch hot mt


cch t ng

Make xconfig cho php thy tt c cc ty chn, thm ch nhng ci khng c


chn bi v nhng ph thuc b nh. Trong trng hp ny, chng c hin th m xm.
make xconfig:
-

giao din ha thng thng nht cu hnh ht nhn

chc chn rng bn c

help -> introduction: useful options!

File browser: d dng np file cu hnh

Giao din tm kim tm nhng thng s

yu cu gi Debian / Ubuntu: libqt4-dev g++ (libqt3-mt-dev cho nhng ht nhn


pht hnh c hn)

Tm kim t kha trong tn ca cc thng s. Cho php chn hay khng chn nhng
thng s c tm thy

Nhng ty chn ny c nhm li theo phn v c bt u vi CONFIG_

Make gconfig
GTK da trn giao din cu hnh ha
Chc nng tng t trong xconfig
Ch thiu chc nng tm kim
Yu cu gi Debian: libglade2-dev

Make menuconfig
-

li ch khi khng c ha l c
sn. Kh tin li.

giao din ging nh nhng cng c


khc: BusyBox, Buildroot..

yu cu gi Debian:libncurses-dev

Make nconfig
-

mi hn, ging giao din vn bn

thn thin ngi dng hn (v d:


d dng truy cp thng tin gip

yu cu gi Debian:libncursesdev

Make oldconfig
-

cn thit rt thng xuyn

c ch nng cp file .config t


mt bn ht nhn c

Nhng vn cnh bo cho cc thng s cu hnh m khng tn ti na trong ht


nhn mi

yu cu gi tr cho thng s mi

Nu bn chnh sa file .config bng tay, khuyn khch chy make oldconfig sau .
Make allnoconfig
-

ch ci t nhng thit lp khuyn khch n y

t tt c nhng thit lp khc n n

rt c li trong h thng nhng chn nhng yu cu ti thiu thit lp nhng


chc nng v drivers

nhiu s tin li hn b hng trm tnh nng tng ci 1

Mt vn thng xuyn:
-

sau khi thay i mt vi thit lp cu hnh ht nhn, ht nhn ca bn khng cn


lm vic na

nu bn khng nh tt c nhng thay i m bn lm, bn c th ly li nhng


cu hnh trc ca bn: $ cp .config.old .config

tt c nhng giao din cu hnh ca ht nhn (xconfig, menuconfig, allnoconfig


.) gi nhng ci trong .config.old sao lu

Thit lp nhng ty chn cu hnh l kin trc ph thuc


-

mt vi ty chn cu hnh l kin trc rt t bit

hu ht ty chn cu hnh (global kernel options, network subsystem, filesystems,


most of the device drivers) th hin ra trong tt c cc kin trc

Bng cch mc nh h thng ht nhn xy dng gi nh rng ht nhn ang c


xy dng cho kin trc my ch
Kin trc khng c nh ngha bn trong cu hnh m ti mt cp cao hn
Chng ta s c thy sau y cch nhng hnh vi ny, cho php cu hnh ca
ht nhn cho mt kin trc khc.
H tr m-un c th np
-

cho php kch hot hoc v hiu ha mt cch hon ton h tr m-un . Nu h
thng ca bn khng cn nhng m-un ht nhn, tt nht v hiu ha n v n
tit kim khong khng gian v b nh ng k

nu CONFIG_EXPERT c kch hot. The block layer c th hon ton c g


b. Nhng h thng nhng ch s dng lu tr flash , n c th c v hiu ha
the block layer mt cch an ton

Loi vi x l v tnh nng (x86) hay loi h thng (ARM) hay s la chn CPU (MIPS)
-

cho php vi x l hoc my cho ht nhn phi c bin dch

Trn x86, lin quan s ti u ha, trn nhng kin trc khc rt quan trong , v
khng ph hp.

Tnh nng ca ht nhn:


-

Tickless system(h thng khng nh du), ci m cho php v hiu ha nh du


thi gian thng xuyn v s dng nhng nh du theo yu cu thay vo . Ci
thin vic tit kim nng lng.

s h tr nh thi phn gii cao. Theo mc nh, phn gii ca b nh thi l


phn gii nh du. Vi nhng b nh thi phn gii cao, phn gii th
chnh xc nh phn cng a ra.

Qun l nng lng.

ty chn qun l nng lng cn cho tt c nhng qun l nng lng lin quan
n nhng tnh nng.

H tr mng:
-

Ngn xp mng

Ty chn mng

Unix sockets, cn cho dng giao tip lin tin trnh

giao thc TCP/IP

TCP/IP protocol with options for multicast, routing, tunneling, Ipsec, Ipv6,
congestion algorithms, etc.

Other protocols such as DCCP, SCTP, TIPC, ATM

Ethernet bridging, QoS, etc.

H tr nhng loi mng khc:

CAN bus, Infrared, Bluetooth, Wireless stack, WiMax stack, etc.

Drivers thit b
-

MTD l h thng con cho flash (NOR, NAND, OneNand, battery-backed memory,
etc)

h tr cng song song

thit b block (block devices)

ATA/ATAPI, h tr cho IDE disk, CD-ROM and tapes. Mt ngn xp mi tn ti

SCSI

nhn SCSI, cn cho thit b SCSI m cn cho USB, cng ATA, PATA

driver iu khin SCSI

f) Bin Dch v ci t ht nhn cho h thng my ch


Make
-

Trong th mc li chnh.

Nh chy make j 4 nu bn c nhiu nhn x l tng tc x l bin dch.

Khng cn chy nh quyn Root.

Generates( to ra)
-

vmlinux, the raw uncompressed kernel image, nh dng ELF, c ch cho mc


ch g ri, nhng khng c khi ng

arch/<arch>/boot/*Image, cui cng, lun lun c nn, nh ca nhn c


khi ng

bzImage cho x86, zImage cho ARM, vmImage.gz cho Blackfin.

Tt c cc m-un nhn tri di trn cy ngun ht nhn


Make install
-

Ci t cho h thng my ch bng cch mc inh, nn cn chy quyn root. Ni


chung, khng c s dng khi bin dch cho h thng nhng, v n ci t h
thng tp tin ln my trm.

Install
-

/boot/vmlinuz-<version>Nn nh ht nhn. Ging nh l mt trong


arch/<arch>/boot

/boot/System.map-<version> Lu tr a ch k hiu ca ht nhn

/boot/config-<version> Cu hnh ht nhn cho phin bn ny

Thng thng, chy li vic cu hnh bootloader a nhn mi vo ti khon.


make modules_install
-

Ci t cho h thng my ch bng cch mc nh, cn chy quyn root

Ci t tt c m-un trong /lib/modules/<version>/


-

kernel/ M-un .ko , trong cu trc th mc ging nh ngun.

modules.alias Mo-un b danh cho tin ch ti m-un. V d: alias sound-service?-0 snd_mixer_oss

modules.dep M-un ph thuc

modules.symbols Tells which module a given symbol belongs to.

g) S dng m-un ht nhn


Nhng m-un l n d dng pht trin driver m khng khi ng li: np, kim
tra, g b , xy dng li, np. Hu ch trong vic gia kch thc file nh ht nhn ti
thiu. C ch trong vic gim thi gian khi ng: bn khng cn nhiu thi gian cho
vic khi to thit b v tnh nng ca ht nhn ci m bn ch cn sau . Ch : c
np mt ln, c c ton quyn trong h thng. Khng c bo v t bit. l ti
sao ch ti khon Root mi c th np v g b m-un.
Mt vi m-un th ph thuc v nhng m-un khc, ci m c np u tin. Ex:
m-un usb-storage ph thuc vo m-un scsi_mod, libusual v usbcore. S ph thuc
c m t trong /lib/modules/<kernel-version>/modules.dep. File ny c to khi bn
chy make modules_install.
Khi m-un mi c np, thng tin lin quan th c sn trong ghi chp ca ht nhn.
Ht nhn gi nhng tin nhn ca n trong b m trn. Tin nhn ghi chp ca ht nhn
th c sn thng qua lnh dmesg. Tin nhn ghi chp ca ht nhn cng hin th trong
dng lnh h thng. Ch bn c th vit ghi chp ca ht nhn t userspace echo
"Debug info" > /dev/kmsg.
modinfo <module_name>; modinfo <module_path>.ko .Ly thng tin v m-un:
cc thng s, bn quyn, m t, s ph thuc. Rt c ch trc khi quyt nh np hay
khng

sudo insmod <module_path>.ko C gng np c a ra. ng dn y n


m un phi c a ra.
Khi np nhng m-un li, insmod thng khng a cho bn thng tin chi tit. Chi
tit thng trong ghi chp ca ht nhn.
Ex:

sudo rmmod <module_name> G b nhng m-un. S ch cho php nu mo-un


khng cn c s dng na. sudo modprobe -r <module_name> G b nhng m-un
c a ra v tt c m-un ph thuc.
Tm thng s c sn: modinfo snd-intel8x0m
Thng qua insmod: sudo insmod ./snd-intel8x0m.ko index=-2
Thng qua modprobe. t thng s trong /etc/modprobe.conf hoc trong bt c file
no trong /etc/modprobe.d/: options snd-intel8x0m index=-2
Thng qua dng lnh ht nhn, when nhng driver c xy dng trong ht nhn
snd-intel8x0m.index=-2
-

snd-intel8x0m l tn ca driver

index tn thng s ca driver.

3. Toolchain
a) Cross compiler
Cross compiler l mt trnh bin dch c s dng thc thi cho h thng nhng,
n c kh nng to ra m thc thi cho mt nn tng khc so vi trnh bin dch c
chy.
Cross compiler h tr:
Thc hin bin dch nhiu chng trnh phc tp trn bt c my no, bt k phn
cng hoc phin bn h iu hnh m n ang chy.

Bin dch cc cng c cn thit khi pht trin mt nn tng phn mm mi, hoc
gi lp ca mt nn tng tng lai.
Cc m hnh my o cho php u ra trong cng mt trnh bin dch s c s
dng trn ton h thng.
b) nh ngha Toolchain v cc thnh phn
L mt tp cng c c dng xy dng cc ng dng hoc to image cho mt
thit b nhng. Cc toolchain cn cho php bin dch (compile) trn mt kin trc cho
mt kin trc khc (nh l bin dch mt image ca ARM trn mt my tnh c nhn xi
h iu hnh Linux; iu ny c gi l cross-compiling v cc compile c gi l
cross-compile).
-

Cc tool c pht trin tch hp sn trn nn GNU/ Linux c gi l native


toolchain (toolchain c sn).

Toolchain ny chy v to m theo kin trc hin ti, thng thng l x86 (32bit)

i vi vic pht trin mt h thng nhng, s l bt kh thi hoc khng thch hp


i vi vic s dng native toolchain
o Kt qu qu ph thuc vo kh nng lu tr v c b nh.
o Tc hot ng chm hn nhiu.
o Trn ht l bn c th khng mun phi ci t qu nhiu cc cng c pht
trin trn sn phm ca mnh.

Bi vy, cross-compiling toolchains c s dng rng ri hn. Chng cho php


chy v bin dch trn mt kin trc cho mt kin trc khc.

C 3 my cn phi c tm trong qu trnh to dng toolchain


o Build machine : ni m toolchain c xy dng, hnh thnh
o Host machine : ni toolchain s c thc thi
o Target machine : ni m chng trnh c to ra bi toolchain c thc
thi.

Bn kiu hnh thnh thng thng cho mt toolchain

Cc tin trnh hnh thnh toolchain khc nhau

Thnh phn :

Binutils l mt b gm nhng cng c gip pht trin v thit t chng trnh


cho nhng kin trc CPU c th : as, ld, ar, ranlib, .a, objdump, readelf, size, nm,
strings, strip.

Th vin C v trnh bin dch cn phi tng thch vi kernel (nhn)

Bi vy, qu trnh bin dch cn c nhng kernel header, v c nhiu chng trnh
khc cng cn chng.
GCC complier

GNU C Complier, trnh bin dch min ph ni ting.

Bin dch c C, C++, Ada, Fortran, Java, Objective-C, Objective-C++, v chy


c trn nhiu kin trc CPU bao gm ARM, AVR, Blackfin, CRIS, FRV, M32,
MIPS, MN10300, PowerPC, SH, v850, i386, x86_64, IA64, Xtensa, v..v

c) Th vin C

Th vin C l mt thnh phn cn thit trong mt h thng Linux.


o H tr giao tip gia ng dng v nhn.
o Cung cp cc chun C API ni ting d dng pht trin ng dng.

Mt s th vin C sn c : glibc, uClibc, eglibc, dietlibc, newlib, v..v.

Glibc : Mc ch cho thit k hiu nng, cc chun c bn, tnh di ng

uClibc : mt th vin C tiu biu cho nhng h thng nhng nh.

Eglibc : mc ch cho vic gim thiu cc chn, cc thnh phn thit lp, h tr tt
cho bin dch cng nh kim tra li.

d) Toolchain Options
ABI (Application Binary Interface) (Trnh giao tip)
-

Khi xy dng mt toolchain, cu hnh ABI l vic cn thit.

Nhng chng trnh trn mt h thng phi c bin dch trn cng mt ABI v
tt nhin nhn (kernel) phi hiu c ABI ny.

Trn ARM, c 2 ABI chnh l OABI v EABI (EABI c s dng rng ri hn)

Cn MIPS, mt vi ABI kh dng l o32, o64, n32, n64

Floating point suppot (h tr du chm ng)


-

Mt vi vi x l c khng h tr nh ARMv4, ARMv5. Nhng t ARMv7 th


c h tr.

i vi nhng vi x l c h tr khi du chm ng, toolchain s s dng trc


tip khi ny.

Cn i vi nhng vi x l khng c, c 2 gii php

o To ra hard float code v ph thuc vo nhn thc thi m phng khi


du chm ng. iu ny thc s rt chm.
o To ra soft float code, thay th cho khi du chm ng, gi n mt th
vin ngi dng thc thi.
-

Quyt nh n khong thi gian thit lp toolchain.

CPU optimization flags (i loi l nhng ty chn gip ti u CPU)


-

Mt b gm cc tool cross-compling c s dng cho ARM, x86, MIPS,


PowerPC

Tuy nhin, vi mt vi ty chn nh march=, -mcpu=, -mtune ta c th chn gn


nh chnh xc CPU ta cn.

Nu nh th vin C c bin dch cho armv5t, cng chng nh hng g nu


bin dch cho chng trnh khc cho armv7

e) Xy dng mt Toolchain
-

T mnh xy dng nn mt toolchain l rt kh! C th mt rt nhiu thi gian!


o Rt nhiu chi tit nh hng t thnh phn phi build, nhng thit lp phc
tp.
o La chn nhng th cn thit (nh phin bn th vin C, ABI, phin bn
thnh phn)
o Cn Kernel headers v sources th vin C
o S tng thch nn tng

Tm mt toolchain c sn
-

Kh nhiu ngi s dng cch ny


o u im : d dng v thun tin
o Nhc im : c th s khng tm c toolchain ph hp

Xc nh nhng g cn thit cho toolchain : CPU, th vin C, phin bn cc thnh


phn, ABI, v..v

Kim tra xem nhng toolchain c sn liu p ng yu cu.

Sourcery CodeBench
-

CodeSourcery l mt cng ty chuyn v cc phn mm min ph toolchains: gcc,


gdb, binutils v glibc. c mua li bi Mentor Graphics, v vn duy tr sn
xut cc sn phm nh trc.

Toolchains h tr cho t ARM, MIPS, n PowerPC, SuperH, x86

Linaro toolchains
-

Linaro c pht trin t gcc, ch dng cho ARM v c pht trin bi


CodeSourcery.

Ci t v s dng toolchain
-

Lm theo cc bc c hng dn bi nh cung cp.

Thng th khng c vn g vi vic bn gii nn u.

Sau , thm ng dn n chng trnh toolchain ti PATH:


export PATH=/path/to/toolchain/bin/:$PATH

Cui cng, bin dch ng dng ca bn


PREFIX-gcc -o foobar foobar.c

PREFIX ph thuc vo thit lp toochain.

Toolchain building utilities (tin ch build toolchain)


-

Mt cch khc s dng tin ch l automate the process building the toolchain
(t ng tin hnh build toolchain)
o Bn khng cn phi qu lo lng v nhng chi tit trong qu trnh thc hin.
o Nhng cng sn sng cung cp nhng ty chn linh hot trong thit lp, la
chn phin bn,v..v
o Cung cp mt s bn v li trn nhng thnh phn thuc kin trc khc.
o Nhiu cng c c tch hp nhiu tnh nng cho php t ng ly v, gii
nn, thit lp, bin dch v ci t trn cc thnh phn khc nhau.

Crosstool-ng

c vit da trn Crosstool, cng thm menuconfig h thng.

Tnh nng y : h tr uClibc, glibc, eglibc, hard and soft float, nhiu kin trc
hn.

Crosstool-NG: ci t v s dng
-

Ci t Crosstool-NG c th c hon thnh c h thng hoc ch trong mt th


mc c th. i vi ci t ti mt th mc:
./configure --enable-local
make
make install

Mt vi thit lp mu cho nhng kin trc thng dng c tch hp


./ct-ng list-samples

s dng mt thit lp mu
./ct-ng <sample-name>

iu chnh li mt s thit lp
./ct-ng menuconfig

Build toolchain
./ct-ng build

Mt s lu
-

Chng trnh bin dch nm trong bin/


o ng dn bn c th thm vo PATH tin cho vic s dng toolchain.

Mt hoc vi sysroot c cha


o Th vin C v th vin lin quan, file bin dch lin quan n kt qu.
o C library headers v kernel headers.

S c mt sysroot cho mi loi : toolchain c th c a th vin nu c mt vi


bn ca th vin C ch mi thit lp (v d: ARMv4T, ARMv5T, v..v)

o CodeSourcery ARM toochain c a th vin, sysroot nm


arm-none-linux-gnueabi/libc/,
arm-none-linux-gnueabi/libc/armv4t/,
arm-none-linux-gnueabi/libc/thumb2
o Crosstool-NG toolchains khng a th vin, sysroot nm
arm-unknown-linux-uclibcgnueabi/sysroot

4. Bootloader
a) Gii thiu Bootloader
Bootloader l mt thnh phn quan trng ca h thng nhng, n
cung cp nn tng v phn b cho cc h thng phn mm khc hot
ng.
Bt c chng trnh no mun chy, n phi c bootloader ly
m s khi to t thit b lu tr (thng l b nh Flash) khi ng.
Bootloader s chu trch nhim qun l chng trnh trong sut qu
trnh sng ca n.
Bootloader l mt on m chu trch nhim:
-

Khi ng phn cng c bn.


Np mt ng dng nh phn, thng l nhn h iu hnh t b
nh flash, network hoc cng c lu tr c nh khc.
C th gii nn ng dng nh phn.
Thc thi ng dng.

Bn cnh nhng chc nng c bn, hu ht cc bootloader cung cp


shell vi cc lnh khc nhau thc hin cc hot ng khc nhau.
Np d liu t a hoc mng, kim tra b nh, chn on phn cng v th
nghim, vv
b) Bootloader trn mt s nn tng ph bin
-

Bootloader trn x86.

Cc b vi x l x86 thng c ng gi trn mt board vi mt b nh khng


thay i c cha mt chng trnh, gi l BIOS.
Chng trnh ny c thc hin bi CPU sau khi reset, v chu trch nhim cho
vic khi to phn cng c bn v np mt on m t b nh khng thay i.
-

on m ny thng l 512 byte u tin ca mt thit b lu tr.

on m ny thng l giai on u tin ca bootloader, m giai on tip theo


s l np chnh n.
Bootloader sau c th cung cp tt c cc tnh nng ca n. N thng hiu
nh dng ca filesystem nh m c th np chnh xc nhn t mt filesystem
thng thng.
Mt s bootloader tiu biu:
-

GRUB (Grand Uni ed Bootloader) l mnh m nht.


http://www.gnu.org/software/grub/

o GRUB c th hiu nhiu nh dng filesystem np file nh kernel


v cu hnh, cung cp mt power shell vi cc lnh khc nhau, c
th np hnh nh kernel qua network, vv
Syslinux, cho network v cc thit b lu tr di ng (USB, CD-ROM)
http://www.kernel.org/pub/linux/utils/boot/syslinux/

Khi ng trn embedded CPUs:

Khi bt ngun, CPU bt u thc thi mt a ch c nh.


Khng c c ch khi ng khc c h tr bi CPU.
Thit k phn cng phi m bo l chip flash NOR c ni n c th truy
cp ti a ch m CPU bt u thc thi lnh.
Giai on u ca bootloader phi c lp trnh ti a ch ny trong chip flash
NOR.
Chip flash NOR l bt buc, v n cho php truy cp ngu nhin, trong khi
NAND th khng.

CPU c tch hp m boot trong ROM:


-

BootROM trn AT91 CPU, ROM code trn OMAP, vv


Chi tit chnh xc ph thuc vo CPU.

M boot l c th np mt giai on u tin ca bootloader t mt thit b lu tr


vo mt SRAM ni b (DRAM khng c khi to).
-

Thit b lu tr thng thng c th l: MMC,


NAND, SPI flash, UART, ...

Giai on u tin ca bootloader l:


-

Gii hn kch thc do hn ch phn cng (kch


thc SRAM).
c cung cp bi cc nh cung cp CPU hoc
thng qua cc d n cng ng.

Giai on u tin ca bootloader phi khi to DRAM v


thit b phn cng khc v ti mt b np khi ng giai
on th hai vo b nh RAM.
Khi ng trn ARM Atmel AT91

RomBoot: c gng tm mt file nh bootstrap hp l t


cc ngun lu tr khc nhau, v ti n vo SRAM (DRAM
cha c khi to).Kch thc gii hn 4 KB.Khng c
tng tc ngi dng c th c trong ch khi ng
chun.
AT91Bootstrap: chy t SRAM. Khi to DRAM, b iu khin
NAND hay SPI, v ti b np khi ng th cp vo b nh
RAM v bt u n. Khng c tng tc vi ngi dng.
U-Boot: chy t RAM. Khi to mt s thit b phn cng khc
(mng, USB, ...). Ti kernel image t a hoc mng ti RAM
v bt u n. Shell vi lnh cung cp.
Linux Kernel: chy t RAM. Mt nhiu thi gian h thng
hon thnh.

Khi ng trn ARM OMAP3

ROM Code: c gng tm kim mt file nh bootstrap hp l t cc ngun lu tr


khc nhau, v ti n vo SRAM hoc RAM (RAM c th c
khi to bi m ROM thng qua mt header cu hnh).Kch
thc nh hn 64 KB. Khng c tng tc vi ngi dng.
X-Loader: chy t SRAM. Khi to DRAM, b iu khin
NAND hoc MMC, v ti bootloader th cp vo b nh RAM
v bt u n. Khng c tng tc vi ngi dng. Tp tin c
gi l MLO.
U-Boot: chy t b nh RAM. Khi to mt s thit b phn
cng khc (mng, USB, ...). Ti kernel image t lu tr hoc
mng RAM v bt u n. Shell vi lnh cung cp. File c gi
l u-boot.bin.
Linux Kernel: chy t RAM. Mt nhiu thi gian h thng hon
thnh.
c) Bootloader cho cc CPUs nhng
Chng ta s tp trung vo phn tng quan, bootloader chnh, cung nhng tnh nng quan
trng nht.
C Bootloader chung mt m ngun m.
Di y l nhng ci ph bin nht:
-

U-Boot, bootloader ph bin bi Denx nht c s dng trn ARM, cng c


s dng trn PPC, MIPS, x86, m68k, NIOS, ... tiu chun de-facto ngy nay. Cc
bn c th nghin cu chi tit ti link ny: http://www.denx.de/wiki/U-Boot.
Barebox, mt kin trc trung lp bootloader c vit nh l mt k tha ca UBoot. Thit k tt hn, m tt hn, pht trin nng ng, nhng khng c h tr
phn cng nhiu nh U-Boot. http://www.barebox.org.

Ngoi ra cn c rt nhiu Bootloader m ngun m hoc c quyn khc, thng kin


trc ring.
- RedBoot, Yaboot, PMON, vv
d) U-boot Bootloader

U-boot

U-Boot l d n phn mm m ngun m in hnh. Download min ph ti


http://www.denx.de/wiki/U-Boot.
Ti liu c sn ti: http://www.denx.de/wiki/U-Boot/Documentation
M ngun mi nht c sn trong mt kho lu tr Git: http://git.denx.de/cgibin/gitweb.cgi?p=u-boot.git;a=summary
S pht trin v cc cuc tho lun din ra trong mt danh sch th m:
http://lists.denx.de/pipermail/u-boot/
K cui nm 2008, c hai thng, mt phin bn mi c pht hnh. Phin bn ny c
t tn l YYYY.MM.
Cu hnh U-boot

Ly source t website v gii nn. Th mc include/configs/ cha cc file cu hnh h tr


tng ng vi tng board.
-

N xc nh cc kiu CPU, cc thit b ngoi vi v cu hnh ca chng, lp bn


memory, cc tnh nng u-boot c bin dch bn trong
N l mt file *.h n gin ci t cc hng s C pre-processor. c file
READMORE bit cc gi tr ny.

Gi rng board ca bn c h bi U-Boot, phi l mt tp tin tng vi board


ca bn, v d include/configs/igep0020.h
Tp tin ny cng c th c iu chnh thm hoc loi tnh nng t U-Boot.

Trch dn file cu hnh U-boot

Cu hnh v compiling U-boot

U-Boot phi c cu hnh trc compiled:


-

make BOARDNAME_config.
BOARDNAME thng l tn ca nhng file cu hnh trong include/ configs /,
ngoi tr file *.h

Hy chc chn rng trnh bin dch cho (cross-compiler) c sn trong PATH.
Compile U-Boot, bng cch xc nh trnh bin dch cho.
V d, nu trnh bin dch cho ca bn l: arm-linux-gcc th ta lm nh sau: make
CROSS_COMPILE=arm-linuxKt qu l mt file u-boot.bin, l file nh U-Boot.
Ci t U-boot

U-boot thng phi c ci t trong b nh flash thc thi bi phn cng.Ty vo


phn cng, vic ci t ca U-Boot c thc hin mt cch khc nhau:
-

CPU cung cp mt s loi mn hnh khi ng ring m bn c th giao tip thng


qua cng ni tip hoc USB bng mt phng thc ring.
CPU khi ng u tin trn cc phng tin lu tr ri (MMC) trc khi khi
ng t cc phng tin lu tr c nh (NAND). Trong trng hp ny, khi
ng t MMC flash l mt phin bn mi.

Trng hp U-boot c ci t, v h tr cho phin bn U-boot mi. Tuy


nhin, lu : nu phin bn u-boot mi khng hot ng, board s hng.
Board cung mt giao din JTAG, cho php ghi vo b nh flash t xa, m khng
c bt k h thng ang chy trn board. N cng cho php cu mt board nu
bootloader khng lm vic.

Lu vi U-boot

Kt ni cc mc tiu lu tr thng qua mt giao din iu khin ni tip.


Bt ngun board. Trn giao din iu khin ni tip, bn s thy :

U-boot shell cung cp cc tp lnh. Xem ti liu tham kho bit cch s dng cc tp
lnh ny.
Thng tin tp lnh

Flash information (NOR and SPI flash)

NAND flash information

Version details

Nhng thng tin ny s thay i t mt board khc.

Nhng lnh quan trng

Cc lnh quan trng cu hnh cho U-boot


-

help and help command.


boot, chy default boot command, lu trong bootcmd.
bootm <address> , khi ng kernel image c load vo a ch tng ng
trong RAM.
ext2load, np mt file t mt ext2 filesystem ti RAM.
o V cng ext2ls ti danh sch file, ext2info bit thm thng tin.
fatload, np mt file t mt FAT filesystem ti RAM.
o V cng fatls and fatinfo.
tftp, np mt file t network ti RAM.
ping, kim tra network.
loadb, loads, loady, np mt file t kt ni Serial ti RAM.
usb, khi to v iu khin USB subsystem, ch yu s dng cho thit b lu tr
USB nh USB keys.
mmc, khi to v iu khin MMC subsystem, s dng cho th nh SD and
microSD.
nand, xa, c v vit ni dung vo NAND flash.
erase, protect, cp, xa, chnh sa bo mt v vit vo NOR flash.
md, hin th ni dung b nh. C th tin li kim tra ni dung load vo b
nh, hoc xem cc thanh ghi.
mm, chnh sa ni dung b nh. C th tin li chnh sa ni dng thanh ghi hoc
cho mc ch th nghim

Environment variables commands

U-boot c th c cu hnh thng qua environment variables, lm nh hng n hnh


vi ca cc lnh khc nhau.
Environment variables c np t flash vo RAM ti U-Boot startup, c th c sa
i v lu li.
- Cc lnh thao tc environment variables:
+ Printenv, hin th tt c cc bin.
+ Printenv <variable-name>, hin th gi tr ca mt bin
+ Setenv <variable-name> <variable- value>, thay i gi tr ca mt bin, ch trong b
nh RAM

+ Saveenv, lu trng thi hin thi ca environment variables vo flash.

Important U-boot environment variables

bootcmd, cha cc lnh m U-boot s t ng thc thi sau khi ng mt khon


delay c th cu hnh c, nu trong qu trnh x l khng c interrupt.
bootargs, cha cc i s c truyn cho Linux kernel.
serverip, a ch ca my ch m U-boot s lin lc cho cc lnh lin quan n
mng.
ipaddr, a ch IP m U-boot s s dng.
netmask, mt n mng lin lc vi server.
ethaddr, a ch MAC, ch c th thit lp mt ln.
bootdelay, delay trc khi U-boot chy bootcmd.
autostart, nu c, U-boot s t ng khi ng mt file image m c load
vo b nh.

Scripts in environment variables

Environnment variables c th cha cc on scripts nh, thc thi mt s lnh v kim


tra kt qu.
-

Thch hp t ng khi ng hoc cp nht processes.


Cc lnh c th c phn cch bng ton t ;
Kim tra c th s dng nh sau: if command ; then ; else ; fi
Scripts c th thc thi bng cch : run <variable-name>
Bn c th tham kho cc bit khc s dng: ${variable-name}

Transferring files to the target

U-boot ch yu c dng np v khi ng mt kernel image, nhng n cng cho


php thay i kernel image v filesystem c lu trong flash.
Cc file c trao i gia cc targer v development workstation . iu ny c th:
-

Thng qua mng, nu mc tiu c mt kt ni Ethernet, v U-Boot cha mt trnh


iu khin cho cc chip Ethernet. y l gii php nhanh v hiu qu nht.
Thng qua mt USB key, nu U-Boot h b iu khin USB trn platform ca
bn.
Thng qua mt th SD hoc microSD, nu U-Boot h b iu khin MMC trn
platform ca bn.
Thng qua cng giao tip serial port.

TFTP

Network vn chuyn gia development workstation v u-boot trn cc target thng qua
TFTP.
-

TFTP vit tt ca Trivial File Transfer Protocol.


N gn ging FTP, nhng khng yu cu xc thc v ngoi UDP.

Mt TFTP server th cn trn development workstation.


-

Sudo apt-get install tftpd-hpa


Tt c cc file trong /var/lib/tftpboot u c th nhn thy thng qua TFTP.
Mt TFTP client th c sn trong gi tftp-hpa, kim tra.

Mt TFTP client th c tch hp vo trong u-boot


-

Cu hnh ipaddr v serverip environment variables.


S dng tftp <address> <filename> ti file.

U-boot mkimage

Kernel image m u-boot np v khi ng phi c chun b, v vy m mt header UBoot c th c thm vo pha trc ca image.
-

Header ny cho bit cc chi tit nh kch thc hnh nh, a ch np d kin, cc
loi nn, vv

iu ny c thc hin vi mt cng c trong c U-Boot, mkimage.


Debian / Ubuntu: ch cn ci t gi u-boot-tools.

Hoc, bin dch n bi chnh bn: ch n gin l cu hnh U-Boot cho bt k board ca
kin trc bt k v bin dch n. Sau ci t:
mkimage:
cp tools / mkimage / usr / local / bin /
- Target t bit uImage ca kernel, Makefile c th c s dng to ra mt kernel
image ph hp vi u-boot.

III.

PHN CNG I VI EMBEDDED LINUX

1. Yu cu phn cng
Phi p ng c c cc yu cu sau:
-- B vi x l / vi iu khin 32 bit tr ln, c cha mt n v qun l b nh (MMU).
-- Phi b nh RAM cung cp cho h thng. Embedded Linux yu cu ti thiu
khong 4MB SDRam v 2MB flash i vi mt h thng bao gm c networking v file
system. Tuy nhin ta cng hon ton c th disable phn networking v file system ny.
Vi b nh 16MB hoc 32MB SDRAM v 4MB flash s cho php thm cc rich set of
applications cho php tng hiu nng.
Mt vi ty chn phn cng kh dng:
+ x86
+ ARM
+ IBM/Motorola Power PC
+ IBM970FX
+ MIPS
+ Hitachi Super H
+ Motorola 68000
Ngoi ra mt s cc h iu hnh Embedded Linux c b nh nh sau y:
uClinux c s dng cho dng Motorola, ARM.

ELKS (Embedded Linux Kernel Subset) c s dng cho cc my


palm.
ThinLinux c s dng cho cc my nh, camera, my mp3
-- Vo/ra (I/O) ti thiu phi cho vic debug.
-- Nhn phi c kh nng ti hoc truy cp vo mt h thng tp tin gc (root filesystem)
thng qua cc thit b lu tr c nh hoc kt ni thm.
Gii thiu s lc:
+ x86. c Intel a ra vo nm 1978 (B vi x l 8086). Nhng phi n b vi x l
(80386) ra i vo nm 1985, bt u mt th h 32 bit h tr cho h iu hnh a tc
v. Cc th h ging Unix bt u c vit cho kin trc ny bao gm Linux, BSD v c
Windows. Cc th h tip theo m rng b ch lnh nh 80486, Pentium, Core 2 Duo ....
c s dng rng ri v tng thch vi nn tng Linux. Nhiu ng dng c pht
trin trn x86 nhm mc ch giao tip vi cc thit b phn cng khc.
+ ARM (Advanced RISC Machine). Linux h tr hn loi CPU ARM trn 16 nn tng
khc nhau, cng vi khong 200 bng mch lin quan.
Giao tip
PCI
PCMCIA
Parallel Port
SCSI
USB
FireWire
Serial Port
Linux h tr a dng y cc thit b IO
Printers
Mice
Sound

Storage
Display Devices
2. Kh nng tch hp phn cng
Hin nay, h thng nhng ang rt pht trin. Vi FPGA, vi ngn ng m t phn cng,
vi s h tr c lc ca cc phn mm, chng ta c th d dng xy dng c mt h
thng tch hp trn mt chip (SoC - system on chip).
Sau y l mt vi v d v cc kin trc vi x l tch hp cng ngh SoC.
a. PowerPC (Performance Optimization With Enhanced RISC Performance Computing)
l mt vi x l theo hng RISC (Reduced Instructions Set Computer - My tnh vi tp
lnh n gin ha) c to ra vo nm 1991 bi s hp tc gia Apple-IBM-Motorola.
PowerPC tm ra hng i cho cc sn phm nhng. T cc ng dng trn t, tiu
dng, n cc ng dng mng li thng tin rng ln. PowerPC hin l mt trong nhng
kin trc ph bin nht cho cc ng dng nhng.
AMCC PowerPC c th l AMCC PowerPC 440EP Embedded Processor.
440EP hin ang l chip x l c tm thy nhiu nht trong cc sn phm h thng
mng v giao tip. Mt s c tnh ni bt ca 440EP:

On-chip dual-data-rate (DDR) SDRAM controller


Integrated NAND Flash controller
PCI bus interfaceDual 10/100Mbps Ethernet ports
On-chip USB 2.0 interface
Up to four user-configurable serial ports
Dual I2C controllers
Programmable Interrupt Controller
Serial Peripheral Interface (SPI) controller
Programmable timers
JTAG interface for debugging
440EP hon ton c xy dng theo hng SoC.

AMCC PCC 440EP Embedded Processor

Freescale PowerPC l dng m rng ca chip x l PowerPC c tch hp thm


thit b ngoi vi.
b.MIPS
MIPS l mt kin trc RISC bao gm c 32 v 64bit c ng dng rng ri trong nhiu
sn phm.
-

Broadcom MIPS

c. ARM

Cc nh thit k s dng Embedded Linux to ra nhng sn phm vut ngoi s mong


i: chi, ngui my cng nghip, v tinh, b c sch e-book
3. Cc phn cng tch hp hin nay
Embedded Linux c th c tch hp trong:
Cc phn cng ca in thoi.
Cc in t cm tay.

Thit b gii tr, thit b y t.


Xe t, tu tc hnh, phng tin vn ti thng minh.
Thit b gia dng thng minh.
..vv

My chm cng s dng Embedded Linux

u ghi 8 knh

in thoi Motorola E680 s dng Embedded Linux

Thit b download torrent s dng Embedded Linux


NG DNG XY DNG MT H THNG NHNG LINUX TRN NN
TNG ARM (TI OMAP3)
1. Cu hnh phn cng.
H thng c xy dng da trn nn tng VXL ARM, c th mc tiu xy dng h
thng nhng Linux cho KIT IGEPv2 ca ISEE c cu hnh nh sau:
IV.

VXL: DM370 (OMAP3) ca Texas Instruments


B nh: 512 MB RAM, 512 MB flash
Ngoi vi: 1 USB 2.0 host, 1 USB device, ng xut HDMI/DVI-D, audio I/O 100
Mbit Ethernet port, Wifi, Bluetooth, cng m rng, cng JTAG.

KIT IGEPv2 ca ISEE


2. Build mt Cross-compiling Toolchain
Ci c cc parkages cn thit bng lnh:
sudo apt-get install autoconf automake libtool libexpat1-dev \
libncurses5-dev bison flex patch curl cvs texinfo \
build-essential subversion gawk python-dev gperf
sudo apt-get clean

Ti v cng c Crosstool-ng 1.16 ti a ch http://crosstool-ng.org. y l cng c


dng sn dng build toolchain theo cu hnh ty chnh.
Di y l qu trnh ci t Crosstool-ng sau khi chuyn n th mc v dng
cc lnh:
./configure --enable-local
make
make install

Cu hnh cc thuc tnh to ra toolchain cho kit IGEPv2. y ta s dng cu hnh


dng sn arm-unknown-linux-uclibcgnueabi. Sau y l menu config toolchain:

Bc cui cng l build toolchain vi lnh: ./ct-ng build

test th toolchain c build, ta s bin dch mt ng dng hello.c.

Kt qu l ng dng c bin dch to ra 1 file a.out s c np ln kit.

3. Buil Bootloader U-Boot.


Da theo board IGEPv2 qu trnh chy bootloader s thc hin theo qu trnh VXL
cung cp mt monitor c tch hp trong ROM c th nh MMC/SD tm n
vng bootloader hp l. Sau trnh khi chy trong b nh ni NAND flash.

ROM Code: c gng tm kim mt file nh bootstrap hp l t cc ngun lu tr


khc nhau, v ti n vo SRAM hoc RAM (RAM c th c
khi to bi m ROM thng qua mt header cu hnh).Kch
thc nh hn 64 KB. Khng c tng tc vi ngi dng.
X-Loader: chy t SRAM. Khi to DRAM, b iu khin
NAND hoc MMC, v ti bootloader th cp vo b nh RAM
v bt u n. Khng c tng tc vi ngi dng. Tp tin c
gi l MLO.
U-Boot: chy t b nh RAM. Khi to mt s thit b phn
cng khc (mng, USB, ...). Ti kernel image t lu tr hoc
mng RAM v bt u n. Shell vi lnh cung cp. File c gi
l u-boot.bin.
Linux Kernel: chy t RAM. Mt nhiu thi gian h thng hon
thnh.

a) Ci t X-loader
Download v gii nn source X-loader
sudo apt-get install git
git clone git://git.igep.es/pub/scm/x-loader.git
cd x-loader
git checkout v1.4.4-3
p dng mt patch h tr NAND flash cho X-loader.
cat ../x-loader-1.4.4-3-igep-nand-support.patch | patch -p1
compile X-loader cn khi to mt enviroment variable (bin mi trng) v
PATH n toolchain nh sau:
export CROSS_COMPILE=arm-linux-

export PATH=/usr/local/xtools/arm-unknown-linux-uclibcgnueabi/bin:$PATH
Lnh cu hnh cho target board IGEPv2:
make igep0020-sdcard_config
V cui cng l build X-loader bng lnh make, kt qu to ra file x-load.bin.ift s
c chp vo th nh.

b) Ci t U-boot
Ti v U-boot:
wget ftp://ftp.denx.de/pub/u-boot/u-boot-2011.12.tar.bz2
tar xvf u-boot-2011.12.tar.bz2
cd u-boot-2011.12
p dng patch h tr NAND flash cho IGEPv2:
cat ../u-boot-2011.12-igep-nand-support.patch | patch -p1
Cu hnh bng lnh:
make include/configs/igep0020.h

Build U-boot bng lnh make, to ra file u-boot.bin np vo th MMC.

4. Build kernel Linux.


S dng nhn 3.1 cho h thng ny, v nhn c ly t website Linux kernel
(http://www.kernel.org/).
p dng 2 patch sau:
cat ../linux-3.2-arm-omap2-make-board-onenand-init-visible-to-board-code.patch |
patch -p1
cat ../linux-3.2-arm-omap3-igep0020-add-support-for-micron-nand-flash.patch |
patch -p1
Thit lp bin mi trng:
export PATH=/usr/local/xtools/arm-unknown-linux-uclibcgnueabi/bin:$PATH
Chnh sa makefile ( cc hng dn cho cross-compiler trong qu trnh bin dch
nhn) tng ng vi toolchain build v tng thch vi nn tng arm.

Cu hnh nhn Linux vi giao din ha bng lnh make xconfig

Sau khi cu hnh kernel th tin hnh bin dch nhn:

Nh vy l mt h thng nhng Linux vi cc thnh phn nh toolchain, bootloader,


kernel c bin dch theo target l board IGEPv2.
5. Hng pht trin ca cc ng dng Embedded Linux
Ngoi vic s dng cc h thng chnh Atagi, Apple, windows...Th h thng my
trm ca HP, Sun,Apollo... vn dng nn tng ca embedded linux pht trin cc ng
dng ca mnh mc d cng ngh c th pht trin cng ngy cng mi nhng n vn k
tha t m68k, ARM, MIPS, SH, and PowerPC... thit k h thng nhng cho ring
mnh.
Ht nhn c tch hp cha cc bin th v to thun li cho vic b sung cc h
thng khc da trn m68k. Mi h thng thit lp ring ca mnh cc module c th
giao tip vi phn cng. Mi h thng c mt cch thc ngt khc nhau, v cc m
ngun ht nhn phn nh s khc bit ny bng vic c mt b khc nhau ca cc chc
nng i ph vi ci t gin on v x l i vi tng loi h thng.
K t khi phin bn MMU ra i th m68k him khi c s dng hin nay trong cc
thit k mi.
Ngoi ra : Hin nay, embedded Linux c nhiu phin bn khc nhau, t phin bn t xy
dng DIY ( do-it-yourself) n cc phin bn thung mi c lp nh MontaVista,
WindRiverS lung cng ty s dng cc phin bn ca embedded Linux vn tip tc
tng nhanh. Cc hng ln nh Motorola, NEC, Panasonic p dng thnh cng phin bn
MontaVista Linux trn hng triu sn phm in thoi di ng; hng Yamaha chn OS

xy dng sn phm MOTIF XS (b tng hp sn phm m nhc) hin ang c s dng


bi cc nhc s v ca s ni ting. S sng to l khng c im dng. Cc nh thit k
s dng embeddedLinux to ra nhng sn phm vut ngoi s mong i: chi, ngui
my cng nghip, v tinh, b c sch e-book...
Cc h thng t ng c ch to trn nhiu cng ngh khc nhau nh cc thit b
my mc t ng bng cc cht c kh, cc h thng t ng hot ng bng nguyn l
kh nn, thy lc, rle c in, mch in t s ... cc thit b, h thng ny c chc nng
x l v mc t ng thp so vi cc h thng t ng hin i c xy dng trn
nn tng ca cc h thng nhng.
Ta c th thy qu trnh cc h nhng thm nhp vo tng phn t, thit b thuc lnh
vc t ng ha nh u o, c cu chp hnh, thit b giao din vi ngi vn hnh
thm ch vo cc rle, contactor, nt bm m trc kia hon ton lm bng c kh.
Khc vi PC thng chy trn nn h iu hnh windows hoc unix, cc h thng
nhng c cc h iu hnh nhng ring ca mnh. Cc h iu hnh dng trong cc h
nhng ni tri hin nay bao gm Embedded linux, VxWorks, WinCE, Lynyos, BSD,
Green Hills, QNX v DOS, Embeddde linux hin ang pht trin mnh. Nm 2001 h
iu hnh ny chim 12% th phn cc h iu hnh nhng th nm 2002 chim 27% v
chim v tr s 1. Hin nay 40% cc nh thit k cc h nhng cn nhc u tin s dng
Embedded linux cho cc ng dng mi ca mnh v sau mi n cc h iu hnh
nhng truyn thng nh VxWorks, WinCE. Cc i th cnh tranh ca Embedded linux
hin nay l cc h iu hnh nhng t to v windows CE. S d Embedded linux c s
pht trin vt bc l do c sc hp dn i vi cc ng dng gi thnh thp v i hi
thi gian a sn phm ra th trng nhanh. Mt khc Linux l phn mm m ngun m
nn bt k ai cng c th hiu v thay i theo mnh. Linux cng l mt h iu hnh
c cu trc module v chim t b nh trong khi windows khng c cc c tnh u vit
ny. Do th trng ca cc sn phm nhng tng mnh ln cc nh sn xut ngy cng s
dng cc h iu hnh nhng m bo sn phm c sc cnh tranh v Embedded linux
ang l sn phm h iu hnh nhng c uy tn chim v tr s 1 trong nhng nm ti
6. Embedded Linux trong Android
Thng 10 nm 2008, Google to mt c sc cho th trng di ng th gii khi
cng b h iu hnh (HH) ngun m Android dng cho thit b di ng. Vi cu trc
gm mt HH, middleware (phn trung gian HH v ng dng) v mt s ng dng
chnh, Android c kh nng h tr nhiu kin trc vi x l m vn m bo kh nng vit
chng trnh d dng. Android SDK cung cp cc cng c v API cn thit cho vic pht
trin ng dng trn nn Android s dng ngn ng lp trnh Java.c bit, Android p

dng giy php Apache 2.0, c ngha l nh pht trin c th pht trin m rng chc
nng m khng cn cng b m ngun ca phn m rng . iu ny mang li kh nng
cc k to ln cho cc nh sn xut thit b di ng, v to nn mt c hch cho th trng
ny.Cc th mnh ca Android:
Application Framework c thit k tt.
ng dng da trn Java, mt ngn ng ph bin
Nn tng Linux HH ngun m
H tr NDK (Native Development Kit): Cho php nhng cc thnh phn s dng
m C++ vo ng dng Android. iu ny c bit quan trng i vi cc ng dng i
hi hiu sut cao m ng dng da trn Java v my o Dalvik khng p ng c.
Giy php s dng: Rt hp dn v tt c cc gi nhn u c m ngun theo
Apache 2.0. Cc phn pht trin thm khng cn phi cng b m ngun.
M ngun: B m ngun d hiu. Mt s trnh iu khin cng c m m
ngun.
Th trng cc ln ca in thoi di ng
Chun ton cu
Cc phin bn mi c cp nht lin tc.

Kin trc

Cch d dng nht c th hnh dung cu trc ca Android ging nh mt ngi nh


c 5 cn phng. Tn nhng cn phng ny ging nh trong hnh v: Applications,

Application Framework, Libraries, Android Runtime, Linux Kernel. By gi tip


tc hnh dung, mi cn phng cha mt s lng ngi nht nh. Mi ngi
tng ng l nhng nt mu v tn ca nhng ngi ny cng th hin trn cc
nt mu . Nhng phng khc nhau s c s lng ngi khc nhau. Mi ngi
s c mt chc nng ring bit g trong cn nh mang tn Android.
Applications
Cn phng u tin bn bc vo khi n vi ngi nh Android. Tt c nhng
ngi trong cn phng ny chnh l cc ng dng m bn c trong thit b chy
Android. L nhng th m bn d dng thy c trn mn hnh: Phone, Contact,
cc tr chi, chng trnh bn ci vo v mt s ng dng chy ngm m bn
khng thy c.
Hu ht ng dng c vit bng Java (hoc C). C th v cn phng ny ging
nh cn phng ring ca bn, bn c th cho ai vo (ci t ng dng) hay
nu khng a ai th c th tin h i (g b ng dng) ty thch. Nhng
phng cn li bn khng c quyn lm nh th.
The Application Framework
Cn phng ny gm nhng ngi c quyn cao hn nhng ngi trong phng
Applications. Nhng ngi ny s c nhng nhim v qun l nhng ngi
phng Applications.
V d: Content Provider cho php chia s thng tin gia cc ng dng,
Resource Mananger: qun l cc vn lin quan n ha, cc file layout..,
Notification Manager qun l cc cnh bo: ting bp, n led Activity Manager:
qun l hot ng ca cc ng dng.
Cc framework ny ging nh l b ng dng sn ca Android. C rt nhiu
nhn vt trong cn phng ny cng vic ca h cc bn cng c th on ra thng
qua tn gi ca h. M a s h u l Qun L (Manager) hy Nh cung cp
(Provider) nn khng dm bn nhiu.
Libraries
Cn phng ny ging nh nh bp ca ngi nh. Tt c mi ngi phng
Applications hay Application Framework mun lm vic th phi ly mt th g
trong phng ny cho vo bng th mi lm vic c. Ngha l khi ng dng
chy s gi cc hm nm trong th vin ny. Cc lp trnh vin cng s dng
nhng hm trong cc th vin ny pht trin ng dng.

V d: Media Framework s c gi khi cc chng trnh c lin quan n


Media nh nghe nhc, xem nh. Hay WebKit s lin quan n Internet, SQLite
lin quan n c s d liu Mt chng trnh c th phi cn nhiu th vin
trong cn phng ny.
Android Runtime
C th ni rng cn phng Android runtime l mt ni kh c bit. N ch
c 2 ngi: Dalvik Virtual Machine v nhng th vin nhn (core libraries).
Nhng th vin c bn ca h iu hnh, ch cung cp cho h iu hnh.
Trong Google Android, c mt cng c c gi l DX n s chuyn nhng
ng dng thnh dng Dalvik Executable (.dex). y chnh l nhng file c bit
dng cho Dalvik Virtual Machine. nh dng ny cng c to ra nhm lm ti
thiu kch thc chng trnh, lm cho n tng thch vi thit b di ng. Dalvik
Virtual Machine l mt chng trnh c vit Android c th chy a nhim
nhanh v mt.
Linux Kernel
Cn phng nh ny cha nhng trnh iu khin (drivers) dng iu khin
phn cng nh Keypad, Wifi, Camera, Audio, Mn hnh Phng ny c th coi
nh l Trung tm ch huy ca ngi nh. Linux Kernel nm gi nhng g l ct
li ca h iu hnh. Cc gii thut qun l ti nguyn, chuyn i qua li gia cc
tc v, phn chia quyn, gii quyt tranh chp cng c th xem n nh l
phng cng tc i ngoi v n m nhn vic tng tc vi thit b ngoi vi. N
chnh l nhn Linux 2.6.
V.
-

Tham Kho
Ngun tham kho chnh l internet, training ca free-electrons.com
Mt s sch ting anh chuyn ngnh: Embedded Linux Primer, Building
Embedded Linux System.

You might also like