Tải bản đầy đủ (.pdf) (4 trang)

Hệ thống điều khiển nhúng - Phần 4 pdf

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (655.32 KB, 4 trang )


73
4 HỆ ĐIỀU HÀNH NHÚNG
4.1 Hệ điều hành
Nguồngốcrađờicủahệđiềuhànhlàđểđảmnhiệmvaitròtrunggianđểtươngtác
trựctiếpvớiphầncứngcủamáytính,phụcvụchonhiềuứngdụngđadạng.Cách
ệ
điềuhànhcungcấpmộttậpcácchứcnăngcầnthiếtđểchophépcácgóiphầnmềm
điềukhiểnphần cứngmáytínhmà khôngcầnphảicanthiệptrựctiế
psâu.Hệ điều
hànhcủamáytínhcóthểthấynóbaogồmcácdriverschocácngoạivitíchhợpvớimáy
tínhnhưcardmànhình,cardâmthanh Cáccôngcụđểquảnlýtàinguyênnhưbộ
nhớvà
cácthiếtbịngoạivinóichung.Điềunàytạoramộtgiaodiệnrấtthuậnlợicho
cácứngdụngvàngườisửdụngpháttriểnphầnmềm trêncácnềnphần
cứngđãcó.
Đồngthờitránhđượcyêucầuvàhiểubiếtsâusắcvềphầncứngvàcóthểpháttriển
dựatrêncácngônngữbậccao.

Hệthốngđiềuhànhbảnchất
cũnglàmộtloạiphầnmềmnhưngnókhácvớicácloại
phầnmềmthôngthường.Sựkhácbiệtđiểnhìnhlàhệthốngđiềuhànhđượcnạpvà
thựcthiđầutiênkhi
hệthốngbắtđầukhởiđộngvàđượcthựchiệntrựctiếpbởibộxử
lýcủahệthống.Hệthốngđiềuhànhđượcviếtđểphụcvụđiềukhiểnbộxửlýcũng
nhưcác tàinguyênkháctronghệthốngbởivìnósẽđảmnhiệmchứcnăngquảnlývà
lậplịchcácquátrìnhsửdụngCPUvàcùngchiasẻtàinguyên.


Hình4‐1:Kiếntrúchệđiềuhành
Tómlại,hệđiềuhànhthựcchấtchínhlàmộtgiaodiệnquantrọng,giaotiếptrựctiếp


vớitầngphầncứngcấpthấpphụcvụchoc ảngườisửdụngc
ũngnhưcác chươngtrình
ứngdụngthựcthitrênnềnphầncứnghệthống.Hơnnữahệđiềuhànhcòncóvaitrò
quantrọngtrongviệcđảmnhiệm3tácvụnguyênlýchính:
(1)Quảnlýquátrình,(2)
Quảnlýtàinguyên,(3)Bảovệtàinguyênkhỏisựxâmphạmcủacácquátrìnhthựcthi
sai.
74
4.2 Bộ nạp khởi tạo (Boot-loader)
Thuậtngữ“bootstrap”bắtnguồntừcáchdiễnđạtcổxưacónghĩalàtựmìnhvươnlên
bằngchínhnỗlựccủabảnthân“pullingyourselfupbyyourownbootstraps”.Nóđãđược
sửdụng
nhưmộtthuậtngữrấtphổbiếnđểgọitênmộtphầnmềmthựcthiviệckhởi
tạochươngtrìnhthựcthitrêncácnềnviđiệntửkhảtrìnhnóichung.Chươngtrình
này
thườngrấtnhỏgọnvàđảmnhiệmchứcnăngtiềnhoạtđộngcủahệđiềuhành.Cũng
rấtphổbiếnhiệnnayngườitacũngthườngdùngthuậtngữ“boot‐loader”
(bộnạpkhởi
tạo)thayvì“bootstrap”.Bộnạpkhởitạothựcchấtlàmộtchươngtrìnhnhỏthựchiện
tronghệthốngvàđảmnhiệmchứcnăngcầnthiếtđểđưa
hệđiềuhànhvàohoạtđộng.
Trongcáchệnhúng,cáclệnhđượcthựchiệnđầutiênthườngnằmtrongcácvùngnhớ
ROMvàthườngthuộcloạichậm.Dóđó,mộttrongnhữngtácvụphổbi
ếncủabộnạp
khởitạolàsaochépchươngtrìnhứngdụngchính(mainprogram)vàotrongvùngbộ
nhớnhanhtrướckhichúngđượcthựchiện.Bộnạpkhởitạocũngcónhiệm
vụkhởitạo
vùngnhớdữliệuvàcácthanhghihệthốngtrướckhinhảytớichươngtrìnhứngdụng
chính.Cũngcórấtnhiềudạngkhácnhaucủabộnạpkhởitạo,
từdạngđơngiảnđến

phứctạp.Dạngđơngiảnnhấtcóthểchỉlàmộtlệnhnhảytớichươngtrìnhứngdụng
chínhngaysaukhiresetmàkhôngthựchiệnbấtkỳ
mộttácvụkhởitạohaynạpchương
trìnhgì.Chươngtrìnhứngdụngchínhsẽphảitựthiếtlậpđểthựcthitácvụcủamình.
Cácbộnạpkhởitạophứctạph
ơncóthểthựchiệnnhiệmvụchuẩnđoánbộnhớvà
khởitạohệthống,kiểmtrachươngtrìnhvànạpchúngtrướckhichobộxửlýnhảytới
thựchiệnchương
trìnhứngdụngchính.

Sauđâychúngtasẽtìmhiểuvềmộtmôitrườngpháttriểnkháđiểnhìnhvàthảoluận
vềmộtsốcácthuộctínhnguyênlýcơbảncủabộnạpkhởi
tạo.


Hình4‐2:NguyênlýthựchiệncủabộnạpkhởitạoBoot‐loader
Trongmôitrườngpháttriểnhệnhúngđiểnhình,nềnphầncứngđíchcầnpháttriển
đượckếtnốivớitrạmchủ(host)thôngquamộtgiaodiệntruyềnthông.Mộtmôitrườ
ng
pháttriểnbaogồmmộtchươngtrìnhgỡrối(debugger)vídụnhưCodeComposerStudio

75
củaTexasInstrument,đểchophépngườipháttriểnchươngtrìnhnạpvàthựchiệnthử
nghiệmcácchươngtrìnhtrênphầncứngđích.Mộtsốcáccôngcụhỗtrợvídụnhưđể
thiếtlập
cácđiểmdừng(breakpoint)…vàcácnhiệmvụphụtrợkhácđểbámsáttrạng
tháiquátrìnhthựcthithờigianthựccủachươngtrìnhthửnghiệm.Điềunàyrấtcóý
nghĩavàtạonênm
ộtsựdễdànghơntrongquátrìnhpháttriểnvàgỡrốimộtchương
trìnhứngdụngmớichonềnphầncứngđích.


Thôngthườngcácứngdụngđượcpháttriểntrongmôitrườngngôn
ngữCthìchương
trìnhứngdụngchínhđượcthựcthivànằmtrongphạmvihàmmain()phầnkhởitạo
chươngtrìnhvànạptiềnthựchiệnchươngtrìnhchínhthườngkhôngtườngminh
hoặc
bịẩnđi.Thựcchấtđiềunàychỉđúngđốivớinhữngngườipháttriểnmãchươngtrình
ứngdụngchínhbằngngônngữbậccao(đặcbiệtchocácứngdụngkhôngph
ảichohệ
nhúng)màkhôngcầnphảiquantâmnhiềuđếncáctácvụcơsởđảmnhiệmviệckhởi
tạocácthanhghihệthống,ngănxếpvàdữliệu…Điềunàycũngrất
cóýnghĩađểtạora
mộtcảmgiácvàmôitrườngpháttriểnthânthiệnchongườipháttriểnchươngtrìnhvà
chỉcầntậptrungphầnthựchiệnchứcnăngchínhcủa
hệthống.Tuynhiêntrongmôi
trườngpháttriểnhệthốngnhúngviệcthựcthichươngtrìnhthườngbắtđầutạiđịachỉ
chươngtrìnhnơibắtđầutácvụkhởitạohệthống
trướckhinhảytớithựchiệnchương
trìnhchínhmain().Quátrìnhnàyđượcbắtđầuthựcchấtlàthựcthimộttácvụngắt
kíchhoạtbởisựkiệnreset.

Boot‐loadercũ
ngcónhiềudạngkhácnhau.Hình4‐2môtảmộtb ộnạpkhởitạochomột
ứngdụngCnhúng.TrongvídụnàyvectorRESETtrỏtớithủtụcc_int00thựchiệntác
vụkhở
itạo.Ngoàiviệckhởitạocácthanhghi,ngănxếp…cácbiếnCcũngcầnđược
khởitạotrướckhiđượcthựcthi.Quátrìnhnàysẽsaochéptừphần.cinitvàviếtvào
các
địachỉdữliệutươngứngcủachúngtrongphần.bss.Saukhihoànthànhchươngtrình
chínhmain()mớiđượcgọivàbắtđầuthựcthi.Trongvídụđơngiảnnàybộnạpkhởi

t
ạotổhợpvector RESET cùng vớihàmkhởitạoc_int00 và giảthiếtrằngcảchương
trìnhbộnạpkhởitạovàchươngtrìnhứngdụngchínhđềunằmcùngtrongvùngnhớ
vậtlý
non‐volatile.Trongcáctrườnghợphệthốngphứctạphơn,bộnạpkhởitạocóthể
baohàmcảtácvụsaochépchươngtrìnhchínhvàotrongvùngnhớfastvolatiletrước
khi nóđượcgọi
và thực thi. Bộ nạpkhởi tạo cũng có thể đảm nhiệm cả chức năng
chuẩnđoán,gỡrốivànângcấphệthốngnếucó.Chứcnăngchuẩnđoáncóthểchỉlà
ki
ểmtrabộnhớ,ngoạivivàđộtươngthíchtíchhợptronghệthống.Chứcnănggỡrối
cũngcóthểlàmộtgiaodiệngiámsátcungcấpthôngtinvàtrạngtháithờigian
thựcvề
hệthốngmàngườitavẫnthườngbiếttớivớitêngọilàchươngtrìnhmonitoring.Việc
nângcấphoặcthayđổichươngtrìnhbộnạpkhởitạocũngcó
thểđượcthựcthinhờkhả
nănglậptrìnhFLASHin‐circuitvànạptừbộnhớngoàithôngquagiaodiệnvớitrạm
chủhoặcchứcnăngtươngtự.

76

Hình4‐3:CấutrúccủabộnạpkhởitạoBoot‐loader
4.3 Các yêu cầu chung
Nhưchúngtađãđượcbiếtđốivớicáchệthốngthờigianthực,yêucầuthiếtkếmộthệ
điềuhànhkháđặcbiệt.Hệnhúngthờigianthựclạiyêucầuhệđiều
hànhphảithực
hiệnvớimộtnguồntàinguyênthườngrấthạnhẹp.Mặcdùkíchthướcbộnhớtíchhợp
on‐chipsẽcóthểtănglêntrongtươnglainhưngvới
sựpháttriểnhiệnnayhệđiềuhành
chocáchệnhúngchỉnêncỡkhoảngnhỏhơn32Kbytes.


Hệthốngđiềuhànhđảmnhiệmviệcđiềukhiểncácchứcnăngcơbảncủa
hệthốngbao
gồmchủyếulàquảnlýbộnhớ,ngoạivivàvàoragiaotiếpvớihệthốngphầncứng.
Mộtđiểmkhácbiệtcơbảnnhưchúngtađãbiếtv
ềhệđiềuhànhvớicácphầnmềm
kháclànóthựchiệnchứcnăngđiềukhiểnsựkiệnthựcthitronghệthống.Cónghĩalà
nóthựchiệncáctácvụtheomệ
nhlệnhyêuc ầutừcácchươngtrìnhứngdụng,thiếtbị
vàoravàcácsựkiệnngắt.

Bốnnhântốchínhtácđộngtrựctiếptớiquátrìnhthiếtkếhệđiều hànhlà(1)kh
ảnăng
thựchiện,(2)nănglượngtiêuthụ,(3)giáthành,và(4)khảnăngtươngthích.Hiệnnay
chúngtacũngcóthểbắtgặprấtnhiềuhệđiềuhànhkhácnhauđặcbiệ
tchocáchệ
nhúngcũngvìsựtácđộngcủa4nhântốnêutrên.Hầuhếtchúngđềucókiểudạngvà
giaodiệnkhágiống nhaunhưngcơchếquảnlývàthựcthicáctácv
ụbêntrongrất
khácnhau.Mỗihệđiềuhànhđượcthiếtkếphụcvụtrựctiếpcácchứcnăngđặcthù
phầncứngcủahệnhúngvàkhôngdễdàngsosánhđượcgiữachúngvới
nhau.

Hai thành phần chính trong thiết kế hệ điều hành là: phần hạt nhân (kernel) và các
chươngtrìnhhệthống.Hạtnhânnóchínhlàphầnlõicủahệđiềuhành.Nóđượcsử
dụngđể
phụcvụchocácbộquảnlýquátrình,bộlậplịchbộquảnlýtàinguyênvàbộ
quảnlývàora.Phầnhạtnhânđảmnhiệmchứcnănglậplịch,đồngbộvàbảov
ệhệ
thốngbởiviệcsửdụngsai,xửlýngắt…Chứcnăngđiềukhiểnchínhcủanólàphụcvụ

điềukhiểnphầncứngbaogồmng ắt,cácthanhghiđiềukhiển,
cáctừtrạngtháivàcác

77
bộđịnhthờigian.Nónạpcácphầnmềmđiềukhiểnthiếtbịđểcungcấpcáctiệních
chungvàphốihợpvớicáchoạtđộngvàoravớihệthống.Phầnhạt
nhâncóvaitròđiều
khiểnrấtquantrọngđểđảmbảotấtcảcácphầncủahệthốngcóthểlàmviệcổnđịnh
vàthốngnhất.

Haikiếntrúcthiếtkếphầnhạt
nhânkinhđiểnnhấtlàkiếntrúcvihạtnhânvàđơnhạt
nhân(monolithic).Cácvihạtnhâncungcấpcácchứcnăngđiềuhànhc ơbảncốtlõi(thô)
theocơchếcácmoduletương
đốiđộclậpđảmnhiệmcáctácvụcụthểvàchuyểnrờirất
nhiềucácdịchvụđiểnhìnhđiềuhànhhệthốngthựcthitrongkhônggianngườisử
dụng.Nhờcơchếnàymà
cácdịchvụcóthểđượckhởitạohoặccấuhìnhlạimàkhông
nhấtthiếtphảikhởitạolạitoànbộhệthống.Kiếntrúcvihạtnhâncungcấpđộantoàn
caob
ởivìdịchvụhệthốngchạyởtầngngườisửdụngvớihạnchếvềtruynhậpvàotài
nguyêncủahệthốngvàcóthểđượcgiámsát.Kiếntrúcvihạtnhâncóthểđược
xây
dựngmộtcáchmềmdẻođểphùhợpvớicấuhìnhphầncứngkhácnhaumộtcáchllinh
hoạthơnsovớikiểukiếntrúchạtnhânmonilithic.Tuynhiêndotínhđộclậ
ptươngđối
giữacácmodultrongvihạtnhânnêncầnthiếtphảicómộtcơchếtraođổithôngtinhay
truyềnthônggiữacácmodulđóvìvậycóthểlàlýdolàmchậmtốc
độvàgiảmtínhhiệu
quảhoạtđộngcủahệthống.Đặcđiểmnổibậtvàcốtlõicủakiếntrúcvihạtnhânlà

kíchthướcnhỏvàdễdàngsửađổicũngnhưxây
dựnglinhhoạthơn.Cácdịchvụthực
thiởtầngtrêncủahạtnhânvìvậyđạtđượcđộantoàncao.Kiếntrúcvihạtnhânđược
pháttriển mạnhmẽtrongcáchệthốngđax
ửlývídụnhưWindows2000,Machvà
QNX.

Kiểukiếntrúcmonolithiccungcấptấtcảchứcnăng/dịchvụchínhyếuthôngquamột
quatrìnhxửlýđơnlẻ.Chínhvìvậykíchthướccủa
chúngthườnglớnhơnkiểukiến
trúcvihạtnhân.Loạihìnhkiếntrúcnàythườngđượcápdụngchủyếuchocácphần
cứngcụthểmàhạtnhânmonolithiccósựtươngtáctr
ựctiếpvớiphầncứngnhờvậymà
khảnăngtốiưucũngdễdàngh ơnsovớiápdụngkiểukiếntrúcvihạtnhân.Chínhvì
vậycũnglàlýdotạ
isaokiếntrúcmonolithickhôngthểthayđổimềmdẻolinhhoạtnhư
kiểuvihạtnhân.Vídụđiểnhìnhvềloạihìnhkiếntrúchạtnhânmonolithicbaogồm
Linux,MacOS,vàDOS.

Vìhệđiề
uhànhcũngđòihỏivềtàinguyênvàkiêmcảchứcnăngquảnlýchúngvìvậy 
ngườithiếtkếcầnphảinắmđượcthôngtinvềchúngmộtcáchđầyđủ.Vídụnhưđối
với
hệthốngđiềuhànhchoSunMicrosystemSolarisyêuc ầutốithiểukhônggianbộnhớ
trênđĩalà8MB;Windows2000yêucầukhoảnggấphailầnnhưvậy.
4.4 Hệ điều hành thời gian thực
QNXlàmộtvídụđiểnhìnhvềhệthốngthờigianthựcRTOSđượcthiếtkếđểđápứng
cácyêuc ầuvềlậplịchrấtkhắtkhe.QNXcũngchưathựcsựphùhợpđểcó
thểđược
thựcthichocáchệthốngnhúngbởivìnóđòihỏidunglượngbộnhớkhôngnhỏvà

thườngphùhợpchocácứngdụngđòihỏivềđộantoànvàđộtincậylớn.

78
Hệthốngđiềuhànhthờigianthựclàhệđiềuhànhhỗtrợkhảnăngxâydựngcáchệ
thốngthờigianthực.


Hình4‐4:SosánhkiếntrúcRTOSvàOSchuẩn
Hệthốngđiềuhànhvớiphầnlõilàhạtnhânphảiđảmnhiệmcáctácvụchínhnhưsau:
Xửlýngắt
 Lưutrữngữcảnhchươngtrìnhtạithờiđiểmxuấthiệnng
ắt
 Nhậndạngvàlựachọnđúngbộxửlývàphụcvụdịchvụngắt
Điềukhiểnquátrình
 Tạovàkếtthúcquátrình/tácvụ
 Lậplịchvàđiềuphối
hoạtđộnghệthống
 Địnhthời
Điềukhiểnngoạivi
 Xửlýngắt
 Khởitạogiaotiếpvàora


Hình4‐5:Cấutrúchệđiềuhànhthờigianthực
Tùytheocơchếthựchiệnvàxâydựnghoạtđộngcủahạtnhânngườitaphânloạimột
sốloạihình:

79
(1)Hệthốngthờigianthựcnhỏ:Vớiloạinàycácphầnmềmđượcpháttriểnmàkhông
cầncóhệđiềuhành,ngườilậptrìnhphảitựquảnlývàxửlýcácv

ấnđềvềđiềukhiển
hệthốngbaogồm:
 Xửlýngắt
 Điềukhiểnquátrình/tácvụ
 Quảnlýbộnhớ
(2)Côngnghệđanhiệm
 Mỗiquátrìnhcómộtkhônggianbộnh
ớriêng
 Các quátrìnhphảiđượcchianhỏthànhcácThreadcùngchiasẻkhônggianbộ
nhớ.
(3)Cácdịchvụcungcấpbởihạtnhân
 Tạovàkếtthúcquátrình/tácvụ
 Truyềnthống
giữacácquátrình
 Các dịchvụvềđịnhthờigian
 Mộtsốcácdịchvụcungcấphỗtrợviệcthựcthiliênquanđếnđiềukhiểnhệ
thống

Đặcđiểmcơbảncủahạtnhânthờigianthựcđiểnhình:
 Kíchthướcnhỏ(lưutrữtoànbộtrongROM)
 Hệthốngngắt
 Khôngnhấtthiếtphảicócáccơchếbảovệ
9 Chỉhỗtrợphần
kiểmtrachươngtrìnhứngdụng
9 Tăngtốcđộchuyểnngữcảnhvàtruyềnthônggiữacácquátrình
9 Khicácquátrìnhứngdụngđangthựchiệnthìcácyêucầuhệthốngđiề
u
hànhcóthểđượcthựchiệnthôngquacáclờigọihàmthayvìsửdụngcơ
chếngắtmềm
 Vihạtnhân(Micro‐kernel):Baogồmmộttậpnhỏcácdịchvụhỗtrợ

9
Quảnlýquátrình
9 Cácdịchvụtruyềnthônggiữacácquátrìnhnếucần
9 Cácphầnmềmđiềukhiểnthiếtbịlàcácquátrìnhứngdụng

Hạtnhânđiểnhìnhcơbả
n
 Loạihạtnhânđơngiảnnhấtlàmộtvònglặpvôhạnthămdòcácsựkiệnxuất
hiệntronghệthốngvàphảnứnglạitheosựthayđổinếucó.
 V
ớimộtbộxửlýcấuhìnhnhỏnhất,khôngphảilúcnàonócũngcóthểlưucất
ngữcảnhvìkhôngthểthayđổicontrỏngănxếphoặcvùngngănxếprấthạ
n
chế.
 Thayvìsửdụngcácthanhghithiếtbị,vònglặpthămdòcóthểgiámsátcác
biếnmàchịusựthayđổicậpnhậtbởicácbộxửlýngắt.
 Hạtnhân
cóthểđượcxâydựngsaochotấtcảcáctínhiệulogicđượcđiềukhiển
bởivònglặpvànhịpđượcđiềukhiểnbởicácngắt.
 Cáctácvụlớncầnnhiềuthờ
igianthựchiệncóthểđượcchianhỏthànhcáctác
vụnhỏvàđượcthựchiệntạicácthờiđiểmkhácnhaunhờvàocơchếchuyểnvà
sửdụngbộđếm.
80
 Cáchạt nhânthựcthitheocơ chếngắtrất giốngvớiloạihạtnhânthựchiện
theocơchếvònglặpthămdò.Nóxửlýtấtcảcáctácvụthôngquacácd
ịchvụ
ngắt.
 Cáchạtnhânlớnvàphứctạphơnsẽbaogồmmộtsốcácdịchvụphụphụcvụ
choviệctruyềnthônggiữacácquátrình.Vànếuđượcbổsungđầ

yđủnósẽtrở
thànhmộthệđiềuhànhđầyđủ.

Cáckiểuloạihạtnhâncơbản
 Hạtnhânthựchiệnvònglặpthămdò
 Hạtnhânthựchiệntheocơchếngắt
 Hạtnhânquátrìnhvậnhànhquátrình

Việclựachọnloạihạtnhânnàohoàntoàntùythuộcvàocácbộxửlývàkíchthước
phầnmềm,tuynhiênriêngloạihạtnhânvậ
nhànhtheoquátrìnhkhôngphùhợpvới
cácbộxửlýnhỏ.

Hạtnhânquátrình
Cáchạtnhânquátrìnhrõrànglàphứctạphơncáchạtnhânthựchiệntheocơchếthăm
dòvàđiềukhiểnngắt.Cácđườngtruyềntínhiệulogicbêntrongcácquátrìnhvàcác
dịchvụngắtđượctíchhợpvàthựchiệnthôngquaviệctruyềndữliệu.


Hình4‐6:Môhìnhtrạngtháicủaquátrình
Hạtnhânsẽphảiđảmnhiệmchứcnănglậplịchchocácquátrìnhtheođúngmôhình
trạngthái.
 RUN:quátrìnhđượcthựchiện
 WAIT:cácquátrìnhchờmộtsựkiệnhoặc
tínhiệuvàorakíchhoạtquátrình
 READY:cácquátrìnhsẵnsàngđượcthựchiện

Cácphầntửthuộctínhcủamộtquátrình:Cácphầntửnàycầnthi ếtđểphụcvụcho
việclậplịch.Vídụđốivớicơchếlậplịchtheomứcđộưutiênsẽyêucầuthôngtinsau
vớimỗiquátrình:

9 Tên(địachỉbộnhớcủaphầntửquátrình)
9 Tr
ạngthái:RUN,WAIT,READY
9 Mứcđộưutiên
9 Ngữcảnh(dùngcontrỏđểquảnlýlưucấtthôngtintrongngănxếp)

×