Professional Documents
Culture Documents
(Laptrinh.vn) -Hệ điều hành nhúng uClinux
(Laptrinh.vn) -Hệ điều hành nhúng uClinux
3
Nhn h iu hnh Linux...........................................................................................3 Lch s nhn h iu hnh Linux...........................................................................3 T chc ca nhn h iu hnh Linux ...................................................................4 T chc th mc ...................................................................................................6 H iu hnh nhng uClinux......................................................................................7 Qu trnh pht trin h iu hnh nhng uClinux...................................................8 Kin trc h iu hnh uClinux..............................................................................9 Cc th vin s dng pht trin h iu hnh uClinux......................................9 Driver ca cc ngoi vi .......................................................................................10 M ngun h iu hnh uClinux..........................................................................11
Phn B : Thc nghim................................................38 Chng 3 . Bin dch m ngun uClinux v xy dng ng dng............................................................38
Bin dch m ngun h iu hnh uClinux..............................................................38 Mi trng v cc cng c cn bin dch........................................................38 Lu qu trnh bin dch v cc bc tin hnh................................................38 Nhng h iu hnh vo vi iu khin ....................................................................44 Thit lp giao tip gia kit v my tnh................................................................44 a file nh h iu hnh vo vi iu khin........................................................46 Xy dng ng dng .................................................................................................51
M u
Trong nhng thp nin gn y h thng nhng c nghin cu mnh m v c rt nhiu ng dng trong thc t . Cc sn phm ng dng h thng nhng rt a dng t h thng dn ng trong tn la , cc robot thng mnh n cc sn phm tiu dng nh my git , my in , cc thit b gii tr nh in thoi , my nghe nhc ... H thng nhng pht trin da trn s pht trin phn cng v phn mm . Phn cng phi mnh , y tnh nng cho h thng cn phn mm phi c pht trin khai thc c ti nguyn phn cng ng thi phi p ng c cc c tnh ca h thng nhng l tnh thi gian thc , iu khin chnh xc , n nh . ng dng h iu hnh m ngun m uClinux cho cc h thng nhng dng vi iu khin c nhn vi x l 32 bit gip cho qu trnh pht trin phn mm cho h thng nhanh hn chi ph thp hn v khai thc c sc mnh ca ti nguyn phn cng .
Lng Th Oanh
Lng Th Oanh
th dng nhn kh n nh v tng i hon thin , cn nu l s l th dng nhn vn ang c pht trin tip . Thng 6-1996 , nhn Linux 2.0 c ph bin . C hai c trng ni bt ca Linux 2.0 l h tr kin trc phc hp , bao gm c cng Alpha 64-bit y , v h tr kin trc a b x l . Phn phi nhn Linux 2.0 cng thi hnh c trn b x l Motorola 68000 v kin trc SPARC ca SUN . Ti nm 2000 , nhn Linux 2.4 c ph bin . Mt trong c im c quan tm ca nhn ny l n h tr m k t Unicode 32 bt , rt thun li cho vic xy dng cc gii php ton din v trit i vi vn ngn ng t nhin trn phm vi ton th gii . Nhn Linux l phn mm t do c phn phi theo Giy php s hu cng cng phn mm GNU GPL ( General Public License ) . Vt ly phc ca nhn Linux l ch chim cnh ct - Tux .
Lng Th Oanh
Cc dch v ca nhn c chy trong ch c quyn ca b x l . Tri li , cc chng trnh ng dng c chy trong ch ngi dng hon ton cch ly vi h iu hnh . Khi ng dng chy trong ch ngi dng gi ti mt dch v h thng thng qua mt giao din , b x l chn li li gi v thi hnh dch v mc nhn h iu hnh . Thng thng vic thi thc thi mc nhn n gin v nhanh hn bi v n khng b chuyn gia ch c quyn v khng c quyn . Nhn ca Linux gm nm tiu h thng : B phn thi gian cho tin trnh ( Process Schedule SCHED ) :
Hot ng ca my tnh , ti mt thi im ch c mt lnh c thc thi . Tuy nhin cc h iu hnh a nhim nh Windows , Linux u cho php nhiu chng trnh chy cng mt lc . Cc h iu hnh a nhim c th lm c nh vy bng cch chuyn quyn thc thi qua li gia cc chng trnh tht nhanh lm cho ngi dng c cm gic cc chng trnh chy cng lc vi nhau . Vi d ngi dng c th va son tho vn bn va c th nghe . Trong h iu hnh a nhim th b phn thi gian tin trnh m nhim nhim v ny . SCHED c chia thnh bn khi : Khi lut nh thi (scheduling policy): chu trch nhim phn b xem tin trnh ( process ) no c quyn truy xut CPU. H thng hot ng c thng sut hay khng nh vo b lut ny, trnh trng hp mt tin trnh li dng s h ca iu lut m chim thi gian h thng qu nhiu lm cc tin trnh khc b ng bng (freeze) .
Khi ph thuc kin trc ( architeture-specific ): khi ny gm cc m assembly ph thuc vo mi loi CPU dng tm ngng hot ng ca tin trnh .
Khi c lp kin trc (architeture-independent): Khi gi cc hm t khi ph thuc kin trc v khi lut chuyn gia cc tin trnh ng thi n cn gi cc hm MM thit lp b nh o cho cc tin trnh c hi phc li . Khi ph thuc kin trc s khc nhau mi loi CPU (386, apha, v.v) nhng khi c lp kin trc th khng i .
Khi hm gi h thng ( system call ) . Gm cc hm m ngi dng c th dng tng tc vi SCHED. Khi lp trnh Linux v Unix s quen vi cc hm gi h thng ny.
Lng Th Oanh
B nh qui c ca cc my tnh ch c 640KB . Do BIOS ch qun l c ti FFFF , vng nh cao t A0000 tr ln dng nh x BIOS , video card memory v cc thit b ngoi vi khc , vng nh cn li t 9FFFF tr xung tng ng vi 640KB. Trong ch bo v ( protect mode ) ca CPU 32 bit a ra khi nim b nh o ( Virtual Memory ) . Lc ny mi tin trnh c cp ti 4GB b nh o . Nhng nhn h iu hnh s to ra mt bng m t tng trang ca b nh o vi b nh vt l . B nh vt l by gi bao gm c b nh RAM v vng nh hon v trn a cng . H thng file o :
H thng ny khng ch cung cp truy sut n h thng file trn a cng m cn tt c cc ngoi vi . Trong Linux tt c cc tp tin , th mc v cc thit b u c coi nh l file . V d nh my in , cng ni tip , cc a u c truy cp nh l file . Linux cng cung cp cc thuc tnh truy cp cho file v th mc , cc thuc tnh c th c thit lp nh cho php c , cho php ghi , cho php thc thi . Linux thit lp ch bo v i vi cc file h thng v hn ch quyn truy cp i vi cc thit b . Giao din mng ( Network Interface - NET) : Trong nhn Linux dng sn giao thc TCP/UDP , IP v Ethernet .
-
Mt tin trnh trong Linux giao tip vi cc tin trnh khc v vi nhn h iu hnh thng qua mt c ch c gi l b truyn thng ni b - IPC . N cho php cc tin trnh gi hoc nhn cc thng ip t mt tin trnh khc , s dng chung vng nh chia s v ng b vi cc tin trnh khc .
T chc th mc
Cc file trong h thng Linux c t theo mt trt t trong cc th mc . C mt th mc chnh trong cha cc th mc con v cc file . Th mc ./bin : Cha cc file thc thi dng nh phn v cc chng trnh khi dng ca h thng c . Th mc ./boot : Th mc ny cha file nh ( image file ) ca nhn dng cho qu trnh khi ng .
Lng Th Oanh
Th mc ./etc : Th mc ny cha cc file cu hnh ton cc ca h thng . Th mc ./home : Th mc ny cha cc th mc con i din cho mi ngi dng khi ng nhp . y l ni lm vic thng xuyn ca ngi dng . Khi ngi qun tr to ti khon cho mt ngi dng th s cp cho ngi dng mt th mc cng tn vi ti khon ngi dng nm trong th mc /home . Ngi dng cho mi quyn thao tc trn th mc ca mnh v khng nh hng n ngi dng khc . Th mc ./lib : Th mc ny cha cc file th vin .so hoc .a . Cc th vin C v lien kt ng cn cho chng trnh chy v cho ton h thng . Th mc ./lost+found : Khi chy chng trnh fsck , nu tm thy mt chui d liu no tht lc trn a cng v khng lien quan n cc tp tin , Linux s gom chng li v t trong th mc ny nu cn ngi dng c th c v gi li d liu b mt . Th mc ./mnt : Th mc ny cha cc kt gn ( mount ) tm thi n cc a hoc thit b khc . Th mc ./sbin : Th mc ny cha cc file thc thi ca h thng dnh cho ngi qun tr h thng . Th mc ./tmp : th mc ny dng cha cc file tm m chng trnh to ra lc chy . Cc file ny s c h thng dn dp khi cc chng trnh kt thc . Th mc ./usr : Th mc ny cha nhiu th mc con nh /usr/bin , /usr/local v y cng l mt trong nhng th mc con quan trng ca h thng , bn trong th mc con ny (/usr/local) cng cha y cc th mc con tng t ngoi th mc gc nh sbin, lib, bin Nu nng cp h thng th cc chng trnh ngi dng ci t trong th mc /usr/local vn gi nguyn v khng s cc chng trnh b mt mt. Th mc ./var : Th mc ny cha cc file bin thin bt thng nh cc file d liu t nhin tng kch thc trong mt thi gian ngn sau li gim kch thc xung cn rt nh. in hnh l cc file dng lm hng i cha d liu cn a ra my in hoc cc hng i cha th in t .
Lng Th Oanh
nh . L mt phin bn h iu hnh s dng nhn Linux nn uClinux c kin trc , cch thc hot ng ging nh h iu hnh Linux chy trn cc PC , phng php pht trin ng dng cng ging nh pht trin trn mi trng h iu hnh Linux . Do l mt h iu hnh m ngun m nn cc nh pht trin c th cu hnh h iu hnh theo mnh to ra mt h iu hnh ph hp vi h thng cn pht trin .
Lng Th Oanh
Lng Th Oanh
nhng c thu nh thnh mt th vin sc tch ph hp vi vi iu khin . Th vin uClibc c to ra h tr cho cc vi iu khin khng c n v qun l b nh nh Dragonball , ColdFire , ARM th vin vn h tr kin trc Linux chun . uClinux cng cung cp hon ton th vin Linux chun libC API . pht trin uClinux , nh pht trin c th la chn gia hai th vin libc l uC-libc v uClibc . Th vin uClibc ging nh th vin glibc pht trin cho Linux , cc hm ca glibc cng c p dng cho uClibc . Ngoi ra gi m ngun ca uClinux cn c mt s th vin khc nh : libatm h tr truyn d liu khng ng b , libjpeg h tr cho nh dng nh nn JPEG , libm h tr cc th vin ton hc , libnet h tr cc API thao tc mng .
Driver ca cc ngoi vi
Driver l cc trnh qun l , iu khin cc ngoi vi , cung cp cc hm cho php ngi dng c th iu khin ti cc thnh phn ngoi vi . Cc driver c chia lm ba lp : Character driver : Lp ny c s dng rng ri t cc ng dng n gin n cc ng dng phc . V d ng dng n gin nh driver iu khin LED , ng dng phc tp nh driver Firewire , driver USB . Character driver c v ghi d liu trc tip ti thit b m khng c b nh m . Block driver : Lp ny giao tip ti h thng file v c s dng kt ni cc phn vng a , cc thit b vo file h thng . Khc vi character driver , block driver thng c ghi d liu vi thit b thng qua b m . Network driver : Loi ny c nhiu cu trc khc nhau , h tr truyn thng , s dng cc Port v cc Socket nh tuyn cc gi d liu .
Thng thng chng trnh ng dng khng c truy cp , c hoc ghi trc tip ti cc thit b ngoi vi . Khi cn giao tip vi cc ngoi vi , chng trnh ng dng s s dng cc driver giao . Cc driver c th l mt module hoc l c lin kt tnh vo nhn . Driver c ng k vi nhn h iu hnh trong khi module khi to tin trnh . Driver s ng k cc thnh phn : Bng Fops . Ch s Major . Device Class ( Block hoc Char ) .
Lng Th Oanh
10
Lng Th Oanh
11
Hnh 2 : cc thc mc con v cc file ca th mc uClinux-dist . Trong th mc ROM cha cc th mc con , cu trc th mc con ny chnh l cu trc th mc ca h iu hnh uClinux khi chy trn h thng nhng . V cu trc cng ging nh cu trc th mc c bn ca h iu hnh Linux chun . Cc th mc l : bin , dev , etc , home , lib , mnt , proc , tmp , usr , var ...
Lng Th Oanh
12
Vi iu khin S3C44B0X
Ging nh cc dng vi iu khin khc nh 8051 , AVR , PIC , PSoC , v.v , S3C44B0X c xy dng t mt CPU v c b sung thm cc ngoi vi nh b sung b nh , cc cng vo ra , cc b nh thi Nn vic tm hiu vi iu khin S3C44B0X cng ging nh tm hiu cc dng vi iu khin khc . Vic tm hiu s i vo chi tit cc khi cu thnh nn vi iu khin . S3C44B0X l mt vi iu khin ca hng Samsung , y l mt vi iu khin rt mnh , c nhiu c tnh u vit . Vi iu khin ny c dng trong cc h thng nh nhng i hi tnh ton phc tp v cn tc cao , cc ng dng thng s dng nh cc thit b cm tay , thit b cn x l tn hiu s v tt nhin vi iu khin ny cng c dng trong cc ng dng bnh thng nh cc loi vi iu khin khc . S3C44B0X l vi iu khin thuc dng vi iu khin s dng nhn vi x l ARM . Cng ging nh mt s hng khc nh Philipe , Atmel , hng Samsung s dng nhn vi x l ARM7TDMI c thit k bi hng Advanced RISC Machines ARM sau thit k mt s ngoi vi to nn mt chip vi iu khin . S3C44B0X c tch hp mt s khi chc nng c bit gip cho vic thit k h thng tr nn n gin hn , gim chi ph cho h thng .
Cc c im ca vi iu S3C44B0X
2.1.1.1.
-
Kin trc :
c tch hp trong cc thit b cm tay , di ng v cc ng dng ni chung . S dng nhn vi x l ARM7TDMI c thit k theo kin trc RISC 16/32-bit . Tch hp ch g ri trn chip thng qua chun JTAG .
Lng Th Oanh
13
H Cng Ngh - HQG H Ni Tch hp b nhn bng phn cng 32x8 bit .
S dng kin trc bus SAMBA ( SAMSUNGs ARM CPU Embedded Microcontroller Bus Architecture ) lm gim cng sut tiu th ca vi iu khin . Qun l h thng :
2.1.1.2.
H tr Little endian Byte thp c lu a ch thp , byte cao c lu a ch cao v Big endian Byte thp c lu a ch cao , byte cao c lu a ch thp . Khng gian a ch l 32Mbytes trn mi bng . Tng cng l 256Mbytes . H tr kh nng lp trnh 8/16/32- bit rng bus d liu cho mi bng . C nh a ch bt u v kh trnh kch thc bng cho tt c 7 bng . a ch bt u v kch thc ca mi bng c th lp trnh c . C 8 bng nh : 6 bng nh cho ROM , SRAM , v cc loi khc . 2 bng nh cho ROM /SRAM/DRAM( Fast page , EDO , Synchronous DRAM ).
H tr i tn hiu bn ngoi cho ti khi kt thc chu k bus . H tr ch lm ti DRAM/SDRAM . H tr ch a ch i xng / khng i xng ca DRAM . B nh cache v SRAM ni :
2.1.1.3. -
0/4/8 Kbyte SRAM ni c s dng khi m b nh cache khng c dng . Ni dng chuyn gia b nh chnh v b nh cache c duy tr thng qua b bo v . B qun l Clock v ngun :
2.1.1.4. -
Lng Th Oanh
14
C b PLL tao tn hiu xung nhp iu khin h thng ln ti tc ti a 66MHz . Tn hiu clock c th c chn cho mi khi chc nng v c thit lp bng phn mm . Cc ch : Normal ch hot ng bnh thng , slow ch hot ng tn s thp khng c PLL , idle- stop clock cho CPU , stop stop ton b tn hiu clock . Khi c tn hiu ngt t ngt ngoi EINT[7:0] hoc ngt cnh bo ca b thi gian thc th vi iu khin tr v trng thi bnh thng . Ngt ca vi iu khin :
2.1.1.5.
Vi iu khin c 30 ngun ngt ( watch-dog timer , 6 timer , 6 UART , 8 ngt ngoi , 4 DMA , 2 RTC ,1 ADC , 1 IIC ,1SIO ) . H tr ngt ngoi theo mc v theo sn tn hiu . Ch ngt theo sn v theo mc c th chn bng lp trnh . H tr FIQ ( Fast Interrupt request ) khi c yu cu ngt ngay tc khc . Timer c iu ch rng xung :
2.1.1.6. -
5 knh Timer iu ch rng xung 16 bit . 1 knh timer ni 16 bit c DMA hoc ngt . H tr ngun clock bn ngoi . ng h thi gian thc RTC ( Real Time Clock ) :
2.1.1.7. -
ng h thi gian thc h tr : mini giy , giy , pht , gi , ngy , tun , thng , nm . Hot ng vi tn s 32.768 KHz . C ngt cnh bo nh thc CPU . Ngt timer tick . Cc IO Port :
2.1.1.8.
Lng Th Oanh
15
2.1.1.9. -
2 knh UART c DMA v ngt. H tr chun d liu truyn nhn 5 , 6 , 7 , 8 bit . C bt tay bng phn cng . Tc baud c th thit lp bng phn mm . H tr giao tip hng ngoi IrDA 1.0 ( 115.2 kbps) . Mi knh UART c 2 b nh m bn trong 32 byte FIFO cho Rx v Tx . B iu khin DMA Direct Memory Access :
2.1.1.10.
2 knh iu khin DMA cho mc ch chung khng chu s can thip bi CPU. 2 knh iu khin DMA cho ngoi vi . H tr DMA gia cc cng vo ra ti b nh v t b nh ti cc cng vo ra . DMA c th c yu bi phn mm , 4 khi chc nng bn trong ( UART , SIO , Timer , IIS) v t cc chn bn ngoi . Mc u tin th t gia cc DMA c th thit lp bng phn mm . Tng tc truyn trn FPDRAM , EDODRAM v SDRAM . B bin i A/D :
2.1.1.11.
2.1.1.12.
-
Lng Th Oanh
16
H Cng Ngh - HQG H Ni S dng b nh h thng lm b nh hin th . S dng DMA truyn d . Kch thc mn hnh c th chn bng chng trnh . H tr mn hnh Gray 16 mc . H tr 256 mu . Watchdog timer :
2.1.1.13. -
C Watchdog timer 16 bit . C yu cu ngt hoc khi ng li h thng sau mt khong thi gian . Giao tip bus IIC :
2.1.1.14. -
1 knh Multi- Master IIC-Bus c iu khin ngt . Truyn ni tip , truyn d liu 8 bit theo mt chiu , hai chiu tc ln ti 100 Kbit/s trong ch chun ( standard mode ) v 400Kbit/s trong ch nhanh ( fast mode) . Giao tip bus IIS :
2.1.1.15. -
Mt knh IIS-bus cho giao tip audio c iu khin DMA . Truyn ni tip , 8/16 bit cho mi knh truyn d liu . H tr nh dng d liu MSB . Truyn ni tip ng b SIO ( Synchronous Serial I/O ) :
2.1.1.16. -
Mt knh SIO c iu khin DMA v ngt . Tc baud c th lp trnh c . H tr iu khin truyn nhn d liu 8 bit trong SIO . Tn s hot ng ca h thng :
2.1.1.17.
Lng Th Oanh
17
H Cng Ngh - HQG H Ni Cung cp cho nhn vi x l l 2.5V . Cung cp cho cc cng vo ra l 3V 3.6V .
S chn
Lng Th Oanh
18
S khi
Lng Th Oanh
19
Lng Th Oanh
20
Lng Th Oanh
21
Lng Th Oanh
22
Hnh 8: S cc tn hiu vo ra ca ARM7TDMI . a. Cc ch hot ng : - User : Thc hin cc chng trnh bnh thng . - FIQ : H tr vic truyn d liu v cc knh x l . - IRQ : c s dng cho vic x l cc ngt mc ch chung . - Supervisor (svc) : y l ch bo v dng cho h iu hnh . - Abort mode (abt) : c nhp vo sau khi d liu hoc lnh c b qua tin np . - System ( sys ) : Ch c quyn ngi dng dng cho h iu hnh . - Undefined ( und ) : c nhp vo khi mt lnh khng xc nh c thc thi.
Lng Th Oanh
23
Cc ch ny c th c thit lp bng phn mm hoc thng qua cc ngt bn ngoi hoc thng qua qu trnh x l ngoi l . Phn ln cc chng trnh ng dng c thc thi trong ch User .Mi ch iu khin u c cc bng thanh ghi h tr tng tc bt cc ngoi l . Ch FIQ c nm bng thanh ghi h tr t r8_fiq n r12_fiq lm tng tc x l cc ngt . b. Cc thanh ghi :
ARM7TDMI c tt c 37 thanh ghi , trong c 31 thanh ghi dng cho mc ch chung 32 bit , v 6 thanh ghi trng thi . Cc thanh ghi c s dng trong trng thi ARM ( The ARM-state register set ): Trong trng thi ARM , 16 thanh ghi chung v mt hoc hai thanh ghi trng thi c th c s dng mi thi im . Trong ch c quyn , bng thanh ghi ng vi ch c th s c thit lp . Bng cc thanh dng chung c s dng tng ng vi mi ch hot ng :
Lng Th Oanh
24
Cc bng thanh ghi Cc thanh ghi dng trong trng thi lnh rt gn ( The Thumb-state register set) : Bng cc thanh ghi dng c s dng tng ng vi mi ch hot ng :
Cc bng thanh ghi Mi lin h cc thanh ghi gia ARM state v Thumb-state : Cc thanh ghi t r0 n r7 ca Thumb-state ging nh cc thanh ghi r0 n r7 ca ARM-state . Thanh ghi CPSR v cc thanh ghi SPSR ca Thumb-state ging vi cc thanh ghi SPSR v cc thanh ghi SPSR ca ARM-state . Thanh ghi SP ca Thumb-state c nh x ti thanh ghi r13 ca ARM-state . Thanh ghi LR ca Thumb-state c nh x ti thanh ghi r14 ca ARM-state .
Lng Th Oanh
25
Hnh 9 : S nh x cc thanh ghi ca Thumb-sate v ARM-state . Cc thanh ghi trng thi chng trnh Li vi x l ARM7TDMI bao gm mt thanh ghi CPSR v nm thanh ghi SPSR lu gi trng thi cc ngoi l . Mc ch ca cc thanh ghi trng thi l : - Nm gi thng tin mi c thc hin bi b tnh ton ALU . - iu khin cho php hoc v hiu ha cc ngt . - Thit lp trng thi hot ng ca vi x l .
Lng Th Oanh
26
Hnh 10 : nh dng cc bit ca thanh ghi trng thi . Cc c iu kin ( Condition code flags ) :
Cc bit N , Z , C v V l m cc c iu kin , cc bit ny c th thit lp bng cc s hoc bng cc ton t logic . Chng cng c th c thit lp bng cc lnh MSR hoc LDM . Vi x l ARM7TDMI kim tra cc c ny quyt nh xem lnh c thc thi hay khng . Cc bit iu khin :
Tm bit thp ca mt thanh ghi trng thi chng trnh l cc bit iu khin . Chng c th l : cc bit v hiu ha ngt , bit T, cc bit thit lp ch . Cc bit iu khin ny thay i khi xut hin mt ngoi l . Khi vi x l hot ng ch c quyn th phn mm c th thao tc vi cc bit ny . Cc bit v hiu ha ngt : Hai bit I v F l cc bit v hiu ha ngt . Khi bit I c t l 1 th cc ngt IRQ b v hiu ha . Khi bit F c t l 1 th cc ngt FIQ b v hiu ha . Bit T : Bit ny phn nh trng thi hot ng : khi bit T c t l 1 th b vi x l thc thi trong Thumb-state . Khi bit t t l 0 th b vi x l thc thi trong ARM-state . Cc bit thit lp ch : cc bit M[4:0] qui nh trng ch hot ng ca vi x l . Bng gi tr cc bit thit lp ch ca thanh ghi trng thi chng trnh
Lng Th Oanh
27
Cc bit d tr : Cc bit ny cha c s dng , khi m cc bit c hoc cc bit iu khin thay i gi tr th cc bit d tr ny khng thay i .
3.1.4.2. Cc cng vo ra S3C44B0X c tt c 71 chn vo ra a chc nng , v cc chn ny c chia thnh cc cng : - Hai cng vo ra 9 bit ( Port E v port F) . - Hai cng vo ra 8 bit ( Port D v port G) . - Mt cng vo ra 16 bit ( Port C ) . - Mt cng ra 10 bit ( Port A) . - Mt cng ra 11 bit ( Port B) . Mi cng c th cu hnh d dng bng phn mm ph hp vi cc h thng v ph hp vi yu cu thit k .Cc chc nng ca mi chn c s dng phi c nh ngha trc khi chng trnh chnh bt u . Nu m trn mt chn nhiu chc nng khng c s dng , th chn c th c cu hnh ging nh cc cng vo ra bnh thng . Bnh thng cc chn ny c cu hnh mc nh trnh xy ra cc vn xung t . Cc cng ca S3C44B0X c cc thanh ghi bao gm thanh ghi cu hnh , thanh ghi d liu , thanh ghi thit lp tr treo , thanh ghi iu khin ngt bn ngoi.
Lng Th Oanh
28
Thanh ghi cu hnh ( Port Configuration Register PCONA-G ) : Phn ln cc chn trn mt cng u c nhiu chc nng , do chc nng cho mi chn phi c la chn khi s dng . Thanh ghi PCONn s quyt nh chc nng c s dng cho tng chn . Thanh ghi d liu ( Port Data Register - PDATA-C) : Nu cc cng c cu hnh l cc cng ra , d liu c th c th c ghi vo thanh ghi PDATn tng ng tng bit . Nu m cc cng c cu hnh l cc cng vo th d liu c th c c t thanh ghi PDATn . Thanh ghi thit lp tr ko ( Port Pull-up Register PUPC-G ) : Thanh ghi ny thit lp vic cho php hoc v hiu ha cc cng c tr ko hay khng . ng vi tng bit ca thanh ghi ny nu m c t l 0 , th ng vi bit trn cng c tr ko v nu c t l 1 th ng vi bit trn cng khng c tr ko .
Bng cc a ch cc thanh ghi ca cc cng : Thanh ghi PCONA PDATA PCONB PDATB PCONC PDATC PUPC PCOND PDATD PUPD PCONE PDATE PUPE PCONF PDATF PUPF PCONG PDATG PUPG a ch 0x01D20000 0x01D20004 0x01D20008 0x01D2000C 0x01D20010 0x01D20014 0x01D20018 0x01D2001C 0x01D20020 0x01D20024 0x01D20028 0x01D2002C 0x01D20030 0x01D20034 0x01D20038 0x01D2003C 0x01D20040 0x01D20044 0x01D20048 Chc nng Cu hnh chn cng A Thanh ghi d liu cng A Cu hnh chn cng B Thanh ghi d liu cng B Cu hnh chn cng C Thanh ghi d liu cng C Cu hnh tr ko cng C Cu hnh chn cng D Thanh ghi d liu cng D Cu hnh tr ko cng D Cu hnh chn cng E Thanh ghi d liu cng E Cu hnh tr ko cng E Cu hnh chn cng F Thanh ghi d liu cng F Cu hnh tr ko cng F Cu hnh chn cng G Thanh ghi d liu cng G Cu hnh tr ko cng G R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W R/W Gi tr mc inh 0x3ff Khng nh trc 0x7ff Khng nh trc 0xAAAAAAAA Khng nh trc 0x0 0x0000 Khng nh trc 0x0 0x0000 Khng nh trc 0x0 0x0000 Khng nh trc 0x0 0x0000 Khng nh trc 0x0
Lng Th Oanh
29
Thanh ghi iu khin ngt ngoi ( External Interrupt Control Register ) : Thanh ghi EXTINT cu hnh tn hiu ngt nh ngt xy ra mc thp , ngt xy ra mc cao , ngt xy ra khi c xut hin sn ln ca xung , ngt xy ra khi xut hin sn xung ca xung v xy ra khi xut hin ca hai dng sn xung .
Thanh ghi EXTINT cu hnh trng thi tn hiu ngt cho tm ngun ngt bn ngoi .
3.1.4.3.
B to xung nhp bn trong S3C44B0X c th to tn hiu xung nhp cung cp cho CPU v cc ngoi vi . B to xung nhp c th c iu khin cung cp hoc
Lng Th Oanh
30
ngt tn hiu xung nhp ti mi khi ngoi vi bng kha S/W . Ngun xung nhp chnh c th ly t thch anh bn ngoi hoc t tn hiu xung nhp bn ngoi . B to xung nhp c mt b dao ng c ni ti thch anh bn ngoi , v c mt b PLL ( Phase Locke - Loop ) to ra xung nhp c tn s cao t tn s thp ca b dao ng theo yu cu ca S3C44B0X .
Lng Th Oanh
31
Hnh 15 : Mch to dao ng bng thch anh v bng ngun dao ng bn ngoi 3.1.4.4. B iu khin truy cp b nh trc tip DMA .
Vi iu khin S3C44B0X c bn knh iu khin DMA . Hai knh DMA c gi l ZDMA c gn vo SSB ( Samsung System Bus ) vo hai knh DMA c gi l BDMA l cu ni gia hi SSB v SPB ( Samsung Peripheral Bus ) . Hai iu knh iu khin ZDMA truyn d liu gia b nh v b nh . Hai knh iu khin BDMA truyn d liu qua li gi ngoi vi vo ra v b nh . Cc bus SPB nh SIO , IIS ,UART . Nh c DMA nn vic truyn d liu khng cn s can thip ca CPU .
Lng Th Oanh
32
3.1.4.5.
S3C44B0X c su b nh thi 16 bit , mi b nh thi c th hot ng da trn ch ngt hoc DMA . Cc b nh thi 0 , 1, 2, 3 v 4 c chc nng to rng xung . B nh thi 5 l mt b nh thi bn trong v khng c chn ra . Ngun xung nhp chnh ca h thng c a qua b prescaler 8 bit v qua cc b chia tn sau mi c a n cc b nh thi . Thng qua b chia tn ngun xung nhp cp cho cc b nh thi c th iu chnh tn s r dng . Ngoi chc nng iu ch rng xung ra , cc b nh thi ca S3C44B0X cn c hai b m , khi thay i gi tr ca b nh thi th gi tr c t ng np vo vo qu trnh hot ng ln tip theo n khng lm nh hng hay lm dng hot ng hin ti . Cc b nh thi c kh nng t ng np li gi tr m .
Lng Th Oanh
33
Lng Th Oanh
34
Lng Th Oanh
35
Hnh 20: S khi Kit pht trin S nguyn l ca kit HT44B0 c trong ti liu km theo . Mt s c im ca HT44B0 : - Dng vi iu khin S3C44B0X ( Samsung) c nhn vi x l ARM7TDMI . - C 2MB b nh Flash . - Cng Ethernet 10M , dng chp RTL8019AS . - C mn hnh LCD graphics , kch thc 320x240 en trng . - C cng USB 1.1 , dng chp PDIUSBD12 . - C 2 cng RS232 . - C cng IDE . - C loa . - C JTAG g ri chng trnh trn chp . - H tr h iu hnh nhng UCOSII v uClinux . Kit HT44B0 c np sn BIOS ngoi ra nh sn xut cng cung cp m ngun BIOS cho php ngi pht trin c th sa i . BIOS cung cp cho cc lnh cho php thc hin cc ty bin :
Lng Th Oanh
36
help ------ Hin th tr gip . ? ------ Tng ng vi lnh help date ------ Hin th v thit lp ngy thng nm cho h thng time ------ Hin th v thit t gi pht giy cho h thng . setweek ------ Thit t tun ca h thng . clock ------ Hin th tn s hot ng ca h thng . setmclk ------ Thit lp tn s ca h thng . setbaud ------ Thit lp tc baud . load ------ Np file ra b nh . comload ------ np file t cng ni tip . prog ------ Ghi chng trnh vo b nh Flash. boot ------ Thc hin khi ng t Flash . ap ------ T ng np file nh chng trnh v ghi vo b nh flash . copy ------ Sao chp b nh Flash t a ngun vo a ch ch . ipcfg ------ Hin th v t a ch IP . run ------ Chy chng trnh t mt a ch trong RAM . move ------ Chuyn d liu trong b nh Flash ra RAM .
Kt ni kit vi my tnh : Cc kt ni gia HT44B0 bo gm kt ni JTAG , kt ni cng RS232 , kt ni Ethernet . Kt ni JTAG : Ghp ni gia chn JTAG ca kit vi cng LPT ca my tnh thng qua cp JTAG . Thng qua kt ni ny , ngi lp trnh c th vit chng trnh sau c th chy trnh v thc hin g ri ngay trn chp . Nh vy m vic pht trin chng trnh nhanh hn v trc quan hn . Kt ni gia cng RS232 ca my tnh vi cng COM1 ca kit : nh kt ni ny ngi s dng dng chng trnh Hyper Terminal ca h iu hnh Windows nh mt mn hnh hin th v nhp d liu , cn trn trn kit qu trnh truyn nhn c iu khin bi BIOS . Kt ni ethernet : BIOS trn HT44B0 h tr mt mini FTP , nn thng qua ethernet ta c th y file t my tnh vo b nh flash sau nh s iu khin ca BIOS s lu file vo mt a ch xc nh trn b nh flash .
Lng Th Oanh
37
Phn B : Thc nghim Chng 3 . Bin dch m ngun uClinux v xy dng ng dng
Bin dch m ngun h iu hnh uClinux
Qu trnh bin dch nhn uClinux cng ging nh qu trnh bin dch nhn h Linux bnh thng . Trong m ngun uClinux , cc nh pht trin a vo rt nhiu th vin , chng trnh ng dng , driver cho cc thit b nu m bin dch ht ton b m ngun th kch thc file nh ca h iu hnh rt ln v c nhng th vin , chng trnh , hoc cc driver m h thng khng cn n . ph hp cho tng h thng th uClinux h tr cc la chn cu hnh nhng m ngun cn bin dch v cc b x l khc nhau . Khi tin hnh bin dch ngi s dng thit lp cc la chn m khi bin dch xong h iu hnh uClinux h tr .
Lng Th Oanh
38
Hnh 21: Lu qu trnh bin dch m ngun uClinux b. Cc bc tin hnh Bc 1 : chun b : Xc nh cc ngoi vi phn cng c trn kit tin hnh bin dch driver . Xc nh cc chng trnh ng dng cn dng .
Lng Th Oanh
39
Bc 2 : Thc hin lnh cu hnh to ra cc mc la chn cu hnh . bt u cu hnh nhn uClinux , ti ca s Terminal ta di con ti th mc uClinux-dist y l th mc chnh cha ton b m ngun ca uClinux . tin hnh cu hnh ta thc hin lnh cu hnh . Lnh cu hnh c th l mt trong ba lnh sau : make config , make menuconfig , make xconfig . Ba lnh ny u c mt mc ch l cu hnh nhn nhng th cn thit bin dch nhn Linux sau l lu vo mt file cu hnh dng text file , chng ch khc nhau v giao din , cch thc trnh by cc la chn cn cu hnh . Cu hnh bng lnh make config : nu thc hin cu hnh bng lnh ny th cc mc lc la chn c th hin di dng mn hnh text .
Hnh 22: Mn hnh cu hnh bng lnh make config. Cu hnh bng lnh make menuconfig : khi thc hin lnh ny cc mc la chn cu hnh c hin th ra di dng cc menu rt thun tin cho vic la chn .
Lng Th Oanh
40
Hnh 23: mn hnh cu hnh bng lnh make menuconfig . Cu hnh bng lnh make xconfig : mn hnh cu hnh hin th di dng hp thoi , c giao din trc quan .
Hnh 24 : Giao din cu hnh bng lnh make xconfig. Bc 3 : La chn cc mc cn cu hnh trn menu chnh Menu chnh c cu trc cc mc chung nh sau :
Lng Th Oanh
41
Hnh 25 : Cc mc chnh trm menu cu hnh . Mc Choose a Vendor/Product selection xut hin danh sch lit k ton b nh sn xut v tn sn phm . Tn sn nh sn xut v sn phm c t trong th mc vendors trong th mc chnh uClinux-dist . Nhim v cn phi lm l la chn nh sn xut v sn phm m cn nhng h iu hnh uClinux vo . Vic chn
Lng Th Oanh
42
ng nh sn xut v tn sn phm rt quan trng , nu chn sai tn sn phm khi bin dch h iu hnh uClinux v trin khai vo h thng th s khng chy c v cu hnh phn cng ca mi loi vi iu khin s khc nhau . Trong kha lun ny em dng vi iu khin S3C44B0X ca hng Samsung .
Hnh 26: danh sch cc nh sn xut v sn phm Mc Libc Version cho php la chn mt trong hai th vin uC-libc v uClibc . Mc Default all settings : nu chn mc ny th cu hnh ca h iu hnh c chn theo mc nh ( theo ln cu hnh trc ) . - Mc Customize kernel settings : khi chn mc ny th s xut hin mt mn hnh c cc mc chn cn cu hnh cho nhn nh la chn cc driver , cc th vin h tr .. - Mc Customize Vendor/User setting : Khi chn mc ny th cng c mt mn hnh c cc mc la chn cc chng trnh ng dng , cc cng c , cc tr chi Bc 4 : Lu cc la chn cu hnh vo mt file v tin hnh cc lnh to file nh ca h iu hnh . Sau khi lu la chn cu hnh cn thc hin cc lnh sau to file nh : - make dep . - make lib_only. - make user_only - make romfs - make image - make linux - make image
Lng Th Oanh
43
Kt thc qu trnh bin dch h iu hnh , ton b h iu hnh c to thnh mt file nh c l image.rom , y l file cn nhng vo kit pht trin . File image.rom c lu trong th mc images nm trong th mc chnh uClinux-dist . Cu trc th mc ca h iu hnh uClinux sau khi bin dch ging nh cu trc cc th mc con trong th mc romfs nm trong th mc chnh uClinux-dist .
Lng Th Oanh
44
Sau kh thc hin kt ni , ta cp ngun cho kit . Nu trn HyperTerminal nhn c nh sau th qu trnh ghp ni thnh cng :
Hnh 28 :Tn hiu nhn c t kit HT44B0 truyn v my tnh . b. Ghp ni ethernet :
Mini Ftp trn kit c t a ch IP l 192.168.0.100 nn trn my tnh t a ch IP cho card mng l 192.168.0.152 . kim tra kt ni ethernet thnh cng hay cha ta thc hin lnh Ping t my tnh ti minu Ftp ca kit . Ti mn hnh HyperTerminal sau khi thc hin thnh cng kt ni cng RS232 , ta thc hin lnh ap
Lng Th Oanh
45
Ti my tnh , ta thc hin lnh ping ti a ch 192.168.0.100 nu qu trnh ping thnh cng th kt ni ethernet thnh cng .
Lng Th Oanh
46
Hnh 31: Qu trnh gi v nhn file t my tnh v kit . Tip tc chn n v thc hin lnh prog 10000 c008000 100000 sau chn y thc hin qu trnh ghi file nh h iu hnh t RAM vo b nh flash :
Lng Th Oanh
47
Lnh prog s thc hin ghi nh h iu hnh vo flash a ch 0x10000 thay v ghi vo a ch 0x00 v a ch ny lu BIOS v Bootloader . i s th ba 0x100000 l s byte c ghi , nu file nh ca h iu hnh ln hn th s ny c tng ln .
. Hnh 34: Lnh di chuyn d liu t flash vo RAM v lnh chy chng trnh .
Lng Th Oanh
48
Hinh 35: Lu qu trnh khi ng h iu hnh uClinux Khi hon thnh qu trnh khi ng :
Lng Th Oanh
49
Hnh 36: Mn hnh sau khi khi ng xong h iu hnh uClinux . H iu hnh c gii nn v bt u qu trnh khi ng ( qu trnh khi ng ca c trnh by trong 2.1.4 ) . Khi hon tt qu trnh khi ng , chng trnh HyperTerminal s tr thnh mt chng trnh ging nh chng trnh Terminal trn h iu hnh Linux . Thng qua HyperTerminal ta c th thc thi cc lnh ca Linux :
Hnh 36 : Chy th mt s lnh c bn . uClinux cng c cc lnh c bn ging nh h iu hnh Linux cho PC vi d nh cc lnh : ls , cd , echo , cat v uClinux cng cho php s dng cc lnh theo cu trc ng ng , chy cc lnh shell . H iu hnh uClinux c nhng thnh cng vo kit HT44B0 . Vi iu khin S3C44B0X c h iu hnh v cc ngoi vi
Lng Th Oanh
50
tr thnh mt my tnh thu nh c th giao tip vi th gii bn ngoi qua cc cng , cho php chy cc chng trnh .
Xy dng ng dng
Cc ng dng c xy dng chy trn mi trng h iu hnh uClinux cng ging nh cc ng dng chy trn mi trng h iu hnh Linux trn PC . Cc chng trnh ng dng giao tip vi cc thit b ngoi vi thng cc driver ca h iu hnh . Chng trnh c th c vit v kin tra trn mi trng Linux trn PC , sau khi c chng trnh chy ng th mi chuyn xung chy trn nn uClinux . Do chng trnh c chy trn mi trng uClinux trn kit nn cc file chng trnh phi chuyn i nh dng t ELF sang FLT ( s dng cng c arm-elf-elft2flt ). Do uClinux c xy dng bng ngn ng C , C++ v s dng cc th vin C nn cc chng trnh a s u c vit bng ngn ng C . Cc bc to chng trnh : To file m ngun v vit m ngun . To Makefile . Bin dch . Vi d to chng trnh n gin in ra mn hnh dng ch Hello world ! bng ngn ng C : To th mc hello trong th mc uClinux-dist/user/ Trong th mc hello to file hello.c c n dung : #include <stdio.h> int main(){ printf(Hello world !\n); return 0; } To file Makefile nm trong cng th mc hello c ni dng: EXEC = hello
Lng Th Oanh
51
$(CC) $(LDFLAGS) o $@ $(OBJS) $(LDLIBS) romfs : $(ROMFSINST) /bin/$(EXEC) clean : -rm -f $(EXEC) *.elf *.gdb *.o
Tip theo chnh sa thng tin file Makefile trong th mc uClinux-dist/user . Thm dng lnh sau vo file Makefile : dir_$(CONFIG_USER_HELLO) +=hello Chnh sa thng tin file config.in trong th mc uClinux-dist/config . Thm dng lnh sau : mainmenu_option next_comment comment Hello Applications bool hello CONFIG_USER_HELLO endmenu Tin hnh bin dch chng trnh v a chng trnh vo h iu hnh : Trong chng trnh terminal ca Redhat thc hin lnh make menuconfig cu hnh li cc chng trnh ngi dng .
Lng Th Oanh
52
Hnh 37 : Cc la chn cu hnh bin dch chng trnh hello Mt cch khc c th bin dch file m ngun hello.c ra file chy bng cch dng lnh trc tip t terminal ca RedHat : arm-elf-gcc Wl, -eft2flt hello.c o hello
Lng Th Oanh
53
Cc th vin c cung cp trong Linux u c vit bng ngn ng C , C++ nn rt tin cho qu trnh pht trin ng dng . ng thi h iu hnh uClinux l h iu hnh a nhim , cho php qun l nhiu tin trnh chy ng thi cng mt lc do c th pht trin cc ng dng a lung rt tin li . Khai thc cc c tnh u vit ca vi iu khin S3C44B0X 32 bit hot vi xung nhp ln ti 66MHz v s dng h iu hnh a nhim thi gian thc uClinux c rt nhiu th vin sn c , c th xy dng cc ng dng nh x l nh , ting ni , gii m MP3 , VoIP
Lng Th Oanh
54
Kt lun
Sau qu trnh hc tp v nghin cu di s gip , ch bo tn tnh ca thy TS. Nguyn Thng Long , cc thy c trong khoa , em hon thnh c kha lun tt nghip vi ti Nghin cu ng dng h iu hnh nhng uClinux trn vi iu khin S3C44B0X . Kha lun ny t c nhng kt qu sau : 1. Nghin cu tm hiu v nhn h iu hnh Linux v uClinux . 2. Tip cn vi dng vi iu khin 32 bit s dng nhn vi x l ARM7TDMI . 3. Nm c phng php cu hnh nhn v bin dch h iu hnh uClinux . 4. Nhng h iu hnh uClinux xung vi iu khin S3C44B0X v xy dng ng dng chy trn nn h iu hnh uClinux . Hng pht trin tip theo ca kha lun l i su vo xy dng cc ng dng v pht trin cc driver trong mi trng h iu hnh uClinux ca cc h thng nhng .
Lng Th Oanh
55
Lng Th Oanh
56