193
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM NGUYỄN THỊ HỒNG NHANH - NGUYỄN LONG THỊNH NGHIÊN CỨU VÀ XÂY DỰNG BỘ CÔNG CỤ PHÁT TRIỂN PHẦN MỀM NHÚNG E-STUDIO, PHẦN BARE PROJECT KHÓA LUẬN TỐT NGHIỆP CỬ NHÂN CNTT 1

Bao Cao Edited Makefile Linker Linux

Embed Size (px)

DESCRIPTION

Makefile Linker Linux

Citation preview

TRNG I HC KHOA HC T NHINKHOA CNG NGH THNG TINB MN CNG NGH PHN MM

NGUYN TH HNG NHANH - NGUYN LONG THNH

NGHIN CU V XY DNG B CNG C PHT TRIN PHN MM NHNG E-STUDIO, PHN BARE PROJECT

KHA LUN TT NGHIP C NHN CNTT

TP.HCM, NM 2010TRNG I HC KHOA HC T NHINKHOA CNG NGH THNG TINB MN CNG NGH PHN MM

NGUYN TH HNG NHANH - 0612302NGUYN LONG THNH - 0612432

NGHIN CU V XY DNG B CNG C PHT TRIN PHN MM NHNG E-STUDIO, PHN BARE PROJECT

KHA LUN TT NGHIP C NHN CNTT

GIO VIN HNG DNThS. NGUYN TN TRN MINH KHANGCHU CH THIN

KHA 2006 2010NHN XT CA GIO VIN HNG DN..................... TpHCM, ngy .. thng nm .Gio vin hng dn

NHN XT CA GIO VIN PHN BIN.....................Kha lun p ng yu cu ca Kha lun c nhn CNTT TpHCM, ngy .. thng nm Gio vin phn bin

LI CM N

TpHCM, ngy 02 thng 06 nm 2010Khoa Cng Ngh Thng TinB mn Cng Ngh Phn Mm

CNG CHI TIT

Tn Ti: Nghin cu v xy dng b cng c pht trin phn mm nhng E-Studio, phn Bare Project

Gio vin hng dn: Nguyn Tn Trn Minh KhangChu Ch Thin

Thi gian thc hin: 23/02/2010 n 15/7/2010

Sinh vin thc hin: Nguyn Th Hng Nhanh 0612302 Nguyn Long Thnh - 0612432

Loi ti: Nghin cu, xy dng chng trnh hon thin

Ni Dung Ti: 1. M t chi tit ni dung ti: ti gm cc ni dung sau: Tm hiu kin trc plug-in trong Eclipse Tm hiu kin trc v m hnh ca cc vi x l thuc h ARM7, ARM9, Cortex-M3 Tm hiu GNUARM Toolchain v cc thnh phn ca GNUARM Toolchain, c bit l GNU Debugger (GDB). Tm hiu kin trc CDT (C/C++ Development Tooling), CDT Debugger v CDT Project Template Engine. Tch hp Debugger vo ARMStudio hon chnh h thng v ci tin thm mt s chc nng mi.2. Yu cu: Kin thc v eclipse v plug-in trong Eclipse. Kin thc v CDT, ch yu l CDT Debugger Nm vng kin trc vi x l h ARM Kin thc v GNUARM Toolchain Kin thc v Lp trnh nhng v Linux.3. Phng php thc hin: Tm hiu cc kin thc cn pht trin plug-in: kin trc plug-in, to, c im plug-in, chy, debug v ng gi plug-in Tm hiu v tp lnh ca vi x l v t chc b nh, kiu thao tc, kiu d liu, thanh ghi ca cc vi x l thuc h ARM7, ARM9 v Cortex-M3 Tm hiu v kin trc CDT, CDT Debugger v CDT Project Template Engine. Tm hiu cch bin dch, cch to template, cch s dng toolchain v cch debug trn Linux. Tm hiu cch quc t ha mt plug-in trong Eclipse Xy dng ARMStudio hon chnh4. Kt qu t c: ARMStudio c tnh nng debug v cc tnh nng ci tin khc. Xy dng c ARMStudio chy trn Linux Xy dng c template cho nhiu vi x l ARM7, ARM9, Cortex-M3. Quc t ha sn phm h tr a ngn ng: ting Vit, ting Nht.

K Hoch Thc Hin: STTCng vicThi gian thc hin

1. 1Vit cng chi tit22/2 02/03

2. Tm hiu cc kin thc cn pht trin plug-in trong Eclipse22/02 05/03

3. Tm hiu kin trc v m hnh ca cc vi x l thuc h ARM7, ARM9, Cortex-M306/03 15/03

4. Tm hiu GNUARM Toolchain (GNU Binutils, Compiler set (GCC), Debugger, Newlib) v cc thnh phn ca GNUARM Toolchain, c bit l GDB16/03 25/03

5. Tm hiu kin trc CDT (C/C++ Development Tooling), CDT Debugger v CDT Project Template Engine.26/03 09/04

6. Nghin cu cc chc nng c xy dng trong h thng ARMStudio, cc chc nng cn ci tin v cc chc nng c th pht trin thm hon chnh h thng.10/04 19/04

7. Tch hp Debugger20/04 19/05

8. Xy dng c template cho nhiu vi x l thuc cc h ARM7, ARM9, Cortex-M320/05 03/06

9. Xy dng h thng ARMStudio chy trn Linux04/06 18/06

10. Quc t ha sn phm19/06 30/06

11. Vit bo co20/04 04/07

12. Kim tra tng th ti07/07 14/07

Xc nhn ca GVHDNgythngnmSV Thc hin

Mc lcChng 1.ECLIPSE V PLUGIN TRONG ECLIPSE171.1Tng quan v Eclipse171.1.1Gii thiu Eclipse, download v ci t (3 trang)171.1.2Kin trc Eclipse ( 5 trang)191.1.3Cch thc qun l cc file m ngun (4 trang)231.2Kin trc plug-in trong Eclipse (7 trang)231.2.1Gii thiu v plug-in v extension point231.2.2The plug-in manifest file241.2.3Vng i ca mt plug-in251.2.4ng gi plug-in251.2.5Plug-in fragment and features26Chng 2.TNG QUAN V CHIP ARM262.1ARM7 (32-bit)262.1.1ARM7EJ-S272.1.2ARM7TDMI342.2ARM9 (32-bit)352.2.1Gii thiu tng quan352.2.2Tm hiu v ARM968E-S372.2.3Lnh vc ng dng ARM9412.3Cortex-M3412.3.1Gii thiu tng quan422.3.2n v x l trung tm Cortex (Cortex CPU)452.3.3c im ni bt ca Cortex-M351Chng 3.GII THIU B BIN DCH GNUARM553.1Gii thiu GNUARM Toolchain553.2Cc thnh phn ca Toolchain553.2.1GNU Binutils553.2.2Compiler set (GCC)593.2.3Debugger663.2.4Newlib70Chng 4.CDT (C/C++ DEVELOPMENT TOOLING)704.1Gii thiu CDT704.2Cc gi chnh trong m ngun CDT724.3CDT Debugger754.1Pht trin CDT Plug-in754.1.1Managed Build System754.1.2Project Template Engine86Chng 5.XY DNG H THNG ARMSTUDIO CHO CC VI X L H ARM965.1Gii thiu h thng v nhu cu xy dng ARMStudio965.2Cc chc nng ca h thng ARMStudio975.3Chc nng ca cc plug-in trong h thng ARMStudio985.3.1vn.edu.hcmuns.selab.debug.core985.3.2vn.edu.hcmuns.selab.debug.ui995.3.3vn.edu.hcmuns.selab.arm.target.mcb23xx995.3.4vn.edu.hcmuns.selab.arm.ui1005.3.5vn.edu.hcmuns.selab.arm.core1005.3.6vn.edu.hcmuns.selab.tool.fm1005.3.7vn.edu.hcmuns.selab.arm.managedbuilder.gnu1015.3.8vn.edu.hcmuns.selab.arm.managedbuilder.gnu.ui1015.4M t qu trnh xy dng h thng1015.4.1Cc chc nng c h thng ARMStudio c1025.4.2Cc chc nng c ci tin trong ARMStudio1045.4.3Cc chc nng mi h thng ARMStudio1155.5Nhn xt v nh gi (2 trang)1305.6Cc thnh phn ca m hnh CDT1315.7Ba trng thi ca m hnh CDT1335.7.1To ra m hnh CDT1335.7.2To mi CProject1345.7.3To mi TranslationUnit v WorkingCopy136

Danh sch hnhHnh 11 Kin trc Eclipse20Hnh 12 Kin trc h tr pht trin plug-in trn eclipse22Hnh 13 Plugin v extension point trong Eclipse23Hnh 21B thanh ghi trng thi ARM ca vi x l ARM7EJ-S32Hnh 22B thanh ghi trng thi Thumb ca vi x l ARM7EJ-S33Hnh 23 Nhng sn phm ng dng ph bin ca vi x l ARM734Hnh 24 Cc thnh phn chnh ca vi x l ARM968E-S35Hnh 25 So snh c im gia cc vi x l trong h ARM936Hnh 26 Tp thanh ghi ARM968E-S38Hnh 27 Thanh ghi trng thi chng trnh ca vi x l ARM968E-S40Hnh 28 Cc thnh phn chnh ca vi x l Cortex-M344Hnh 29 Kin trc ng ng ca ARM Cortex-M345Hnh 210 Kin trc load v store ca vi x l ARM Cortex-M346Hnh 211 M hnh lp trnh ca vi x l ARM Cortex-M347Hnh 212 Thanh ghi trng thi chng trnh ca vi x l Cortex-M348Hnh 213 M hnh hot ng ca ch Thread v Handler49Hnh 41 Kin trc CDT tng qut70Hnh 42 Kin trc CDT chi tit71Hnh 43 M hnh Build Definition74

TM TT KHA LUN

M U

TNG QUAN

Chng 1. ECLIPSE V PLUGIN TRONG ECLIPSE

Tng quan v EclipseGii thiu Eclipse, download v ci t (3 trang)Eclipse l mt nn tng pht trin m ngun m da trn Java v c th m rng c. Eclipse n gin ch l mt framework v mt tp hp cc dch v xy dng cc ng dng t cc thnh phn plug-in. Eclipse c to thnh bi mt tp hp cc plug-in chun v thng c gi l JDT (Java Development Tools).Trong khi hu ht ngi s dng hi lng vi vic s dng Eclipse nh l mi trng pht trin tch hp Java (IDE), mt s khc cn c nhng nhu cu s dng khc hn na. Do , Eclipse cn bao gm PDE (Plug-in Development Environment) dnh cho ngi dng mun m rng Eclipse. V th, Eclipse cho php ngi xy dng cc tool tch hp vo mi trng Eclipse. Bi v mi th trong Eclipse u l plug-in nn cc nh pht trin cc tool u cung cp cc sn chi m rng Eclispe v cung cp mt IDE thng nht v chc chn cho ngi dng.Mc d Eclipse c vit bng ngn ng Java, nhng Eclipse c cung cp cc plug-in h tr cc ngn ng lp trnh khc nh C/C++ v COBOL. Eclipse framework c th c s dng nh l nn tng cho cc loi ng dng khc khng lin quan n pht trin phn mm, v d nh: h qun tr ni dung.Eclipse l cng ng m ngun m m cc project ca n tp trung vo vic xy dng nn tng m ngun m bao gm cc framework c th m rng, cc tool v runtime xy dng, trin khai v qun l cc phn mm trong chu k sng ca n. Eclipse l mt t chc phi li nhun c h tr bi cc thnh vin, l ni pht trin cc d n ca Eclipse, v l ni pht trin cng ng m ngun m v h thng cc sn phm, dch v.D n Eclipse c IBM bt u vo thng 11 nm 2001 v c cc nh bn phn mm h tr. T chc Eclipse c thnh lp vo thng 1 nm 2004 nh l mt t chc c lp phi li nhun qun l cng ng Eclipse. Ngy nay, cng ng Eclipse gm nhiu c nhn v t chc t cc nhnh tiu biu v cng nghip phn mm. Eclipse l phn mm m ngun m, v th nhng ngi to ra plug-in cho Eclipse hoc nhng ngi s dng Eclipse nh l nn tng cho cc ng dng pht trin phn mm cn release code Eclipse m h dng hoc sa cha theo giy php EPL.Download, ci t:http://www.eclipse.org/downloads/ Kin trc Eclipse ( 5 trang)Kin trc Eclipse platform gm c nhiu thnh phn v cc chc nng ca thnh phn li tch bit vi cc chc nng ca phn giao din. Kin trc Eclipse c thit k v xy dng p ng cc yu cu sau: H tr vic xy dng cc tool khc nhau pht trin ng dng H tr khng gii hn cc nh cung cp tool, bao gm cc phn mm c lp ngi bn. H tr cc tool thao tc trn bt k loi ni dung no H tr tch hp cc tool mt cch d dng vi cc loi ni dung khc nhau v nh cung cp tool khc nhau. H tr mi trng pht trin ng dng giao din v khng giao din Chy c trn nhiu h iu hnh, gm Window v Linux Li dng tnh ph bin ca ngn ng lp trnh Java vit ra cc tool.Vai tr chnh ca platform l cung cp cc tool ca cc nh sn xut khc nhau cng vi c ch s dng v nhng quy nh phi tun th c th tch hp cc tool mt cch d dng. Nhng c ch ny c trnh by thng gia giao din API, cc lp v phng thc. Ngoi ra, platform cn cung cp cc framework v block d dng pht trin cc tool mi.Eclipse Platform khng gii hn s ng dng ngn ng Java. Tuy nhin, Eclipse SDK gm c Eclipse Platform, JDT v PDE. Trong JDT v PDE l cc plugin c gn vo Platform. Eclipse Platform c xy dng da trn c ch pht hin ra, tch hp v chy plug-in. Plug-in l n v chc nng nh nht c th c pht trin v phn phi mt cch ring bit. Thng thng, mt tool nh c vit trong mt plug-in ring bit, trong khi cc tool phc tp c cc chc nng c tch ra nhiu plug-in. Hnh 11 Kin trc EclipseSWTStandard Widget Toolkit (SWT) cung cp cc API c lp nn tng cho cc widget v cng c ha bng cch cho php tch hp cht ch vi h iu hnh bn di. Giao din Eclipse Platform s dng SWT trnh by thng tin cho ngi dng, cho d ngi dng ang lm vic trn h iu hnh Linux, Window hay h iu hnh no khc c giao din ha.Java AWT (Abstract Windowing Toolkit) cung cp cc widget n gin nh: list, text field v button, nhng khng c cc widget cp cao nh: tree hay rich text. Cc widget ca AWT s dng cc widget sn c ca tt c cc h iu hnh. Java Swing ra i nh l gii php khc phc cc vn . Swing l mt GUI Framework ca ring Java , khng ph thuc vo bt c nn tng no. Swing khng s dng cc thnh phn sn c ca h iu hnh , n s dng cc i tng c Sun xy dng sn. Cc ng dng c giao din bng Swing s trng khng c ph hp, t nhin trn nn tng m n ang chy. D nhng phin bn cui cng ca JVM , cc ng dng Swing vn tn ti s khc bit vi nn tng giao din ca cc h iu hnh. Mc d ngi dng c th ci cc b cm quan (LookAndFeel ) nhng giao din vn cha c t nhin.IBM tm ra c gii php thch hp khc phc c nhng yu im trn ca c AWT v Swing, IBM to ra mt GUI Framework mi c gi l Standard Widget Toolkit SWT . SWT c th truy cp vo cc thnh phn giao din t nhin ca tng nn tng thng qua JNI . Nu nh mt nn tng no khng c thnh phn , SWT s cung cp chng trong th vin ca n. Ngi dng hon ton c th chy mt ng dng Java c giao din chng khc g giao din c to bng C# hay VB trong Windows. SWT chy cc nhanh vi lng ti nguyn chim dng trong b nh ch bng mt na so vi Swing .JFaceJFace l tookit xy dng giao din ngi dng cp cao, JFace l tng trn cng ca SWT, cung cp cc lp thuc m hnh MVC pht trin cc ng dng ha d dng hn. Nhng ngi mun pht trin Eclipse s s dng PDE (Plug-in Development Environment) b sung thm cc plug-in mi

Hnh 12 Kin trc h tr pht trin plug-in trn eclipseCch thc qun l cc file m ngun (4 trang)Kin trc plug-in trong Eclipse (7 trang)Gii thiu v plug-in v extension point

Plug-in: tp hp cc chc nngn v nh nht ca EclipseV d plug-in ln: HTML editorV d plug-in nh: Action to file zipExtension point: thc th c t tn i din cho tp hp cc chc nng.Extension point l 1 c ch cho php 1 plug in c th thm cc chc nng t 1 plug in khc.V d: extension point cho giao din ngi dng workbenchExtension: mt chc nngV d: cc chc nng ca HTML editorHnh 13 Plugin v extension point trong Eclipse

Mi plug-in c mt hay nhiu extension point v c th ty khai bo mt extension point mi. Mi plug-in ph thuc vo tp hp cc plug-in khc, c th cha bt k th vin hoc tp tin no vit bng Java v c th export cc Java API c bn. V l thuyt th s plug-in khng b gii hn v c ch platform phi h tr lm gia tng s lng plug-in.The plug-in manifest fileChi tit ca plug-in c gii thch r rng trong tp tin plug-in manifest. Plugin manifest chnh l tp tin plugin.xml, cha thng tin m t s c Eclipse s dng tch hp plug-in vo framework. Mc nh, plugin.xml m khu vc editor ca manifest khi n c to ra ln u tin. bn di y ca editor c cc tab h tr ngi dng la chn vic thit lp cc thng tin khc nhau v plug-in. V d: tab Source hin th ton b ni dung tp tin plugin.xml dng xml.Tp tin manifest cha nhng thng tin chung v plug-in bao gm: tn plug-in, phin bn, tn lp, tn file JAR. Ngoi ra, tp tin manifest cn cha danh sch nhng plug-in m plug-in hin ti cn dng.

Plug-in u tin l org.eclipse.core.resources l workspace plug-in v Plug-in th hai l org.elipse.ui l workbench plugin. Mt trong nhng extension cn tm hiu l extension c thuc tnh point=org.eclipse.ui.actionSets. Mt action set l mt nhm cc chc nng m plug-in s thm vo giao din workbench, v d nh l menus, menu items, v toolbars. Action set s gom nhm cc chc nng ngi dng c th qun l chng mt cch d dng.Mt action set c th cha 2 th: th menu m t ni item xut hin v cch hin th ca n trn workbench; th action m t mt item s thc hin chc nng g v lp x l action thc hin chc nng .

Vng i ca mt plug-inPlug-in c mt chu trnh sng c iu khin bi workbench. Khi Eclipse khi ng th n thm plug-in vo m khng load ngay lp tc, ch load plug-in khi cn thit. Trong sut qu trnh load, Elipse gi phng thc startup() v trc khi unload th gi shutdown(). Hai phng thc load v unload c th c coi nh l hm khi to v hm hy plug-in. ng gi plug-inEclipse quyt nh plug-in no c load bng cch kim tra th mc plugins vo thi im khi ng. ci t mt plug-in th cn to mt th mc con trong th mc plugins v chp tt c cc tp tin chng trnh v manifest vo . Nn t tn th mc cha plug-in theo chun: tn ca plug-in c theo sau bi du gch di v ch s phin bn. V d: C:\eclipse\plugins\com.example.hello_1.0.0. Sau , nn th mc con va c to thnh tp tin JAR. to c tp tin JAR bng giao din Elipcse th gi File->Export. Sau ch cn khi ng li Eclipse Eclipse c th nhn ra plug-in mi.Plug-in fragment and features Plugin fragment: Plug-in fragment c hnh thnh t mt phn ca plug-in. Plug-in fragment c ch khi mun s dng mt phn ca plug-in c lp vi phn cn li ca plug-in. Plug-in fragment c th c dng thm cc c im no vo mt plug-in ang c m khng cn pht hnh mt bn release mi y hoc c th c dng cung cp chc nng cho mt nn tng no Plug-in fragment gn ging vi plug-in thng thng, ch khc mt vi c im sau: Thng tin m t plug-in c lu trong tp tin fragment.xml thay v plugin.xml nh cc plug-in thng thng. Trong tp tin fragment.xml, nt gc l v nt ny c 2 thuc tnh l: plugin-id v plugin-version dng ch ra nh danh v phin bn ca plug-in cha. Plug-in fragment s t ng k tha cc nt ca plug-in cha v c th thm cc nt khc nu cn thit. Plug-in feature: Trong kin trc Eclipse, feature l vic ng gi mt nhm cc plug-in c lin quan li thnh mt sn phm tch hp. Plug-in feature khng c cha code. V d: Java Development Tooling (JDT) l mt feature project c to thnh bi cc plug-in nh Java editor, debugger, v console. Tp tin c t feature project l feature.xml, tp tin ny cha tham chiu n cc plug-in v cc ti nguyn khc ca feature project, ng thi cha cc thng tin v vic update, copyright v license.1. TNG QUAN V CHIP ARMARM7 (32-bit) Ra i vo nm 1994, ARM7 pht trin ht sc thnh cng v gip ARM tr thnh kin trc c la chn ca th gii k thut s. Trong vi nm qua, hn 10 t thit b c s dng chip ARM7 c ng dng trong nhiu lnh vc ca i sng. Hin nay, ARM7 vn tip tuc c s dng rng ri thit k cc thit b 32 bit n gin. c im ni bt ca ARM7: Kin trc cng nghip chun. D dng thit k v debug.Ngy nay, cc k s ti nhiu cng ty c th thit k vi x l ARM7TDMI mt cch quen thuc. V lp trnh vin c th i v nh sm hn, bi v ARM7TDMI s tng thch vi phn mm hin c.Tom Halfhill, Senior Editor & Senior Analyst, Microprocessor Report, 2005

Lnh vc ng dng ca ARM7: Embedded: USB controllers, HDD controllers, Bluetooth controllers, Networking/WiFi ,Medical scanners. Consumer: Electronic toys, Low end handheld devices, GPS, MP3 Players, Entry level handsets. Automotive: Diagnostics, Maintenance, Entertainment, Sensors. Industrial: Power meters, Circuit breakers, UPS, Brushless motor drive, Factory automation. Point of Sale: Card readers, ATM, Cash registers, Vending machines H ARM7 gm c cc vi x l: ARM7TDMI-S, ARM7TDMI, ARM7EJ-S.0. ARM7EJ-SVi x l ARM7EJ-S c kin trc ARMv5TEJ vi cng ngh Jazelle nng cao hiu qu ca vic x l tn hiu s (Digital Signal Processing). Cng ngh Jazelle cho php thc thi trc tip Java bytecode trn vi x l ARM, iu ny dn n s pht trin ca cc thit b nhng v wireless.ARM7EJ-S l mt thnh phn ca b vi x l a dng 32 bit h ARM. Vi x l h ARM c hiu qu cao v tiu th nng lng rt thp v s cng t.Kin trc ARM da trn nguyn l RISC. Tp lnh gim v c ch gii m n gin hn nhiu so vi thit k CISC0. Kin trc b vi x l ARM7EJ-S Vi x l ARM7EJ-S c 3 tp lnh: Tp lnh ARM 32 bit c s dng cho trng thi ARM (ARM state). Tp lnh Thumb 16 bit c s dng cho trng thi Thumb (Thumb state). Java bytecode 8 bit c s dng cho trng thi Jazelle (Jazelle state). Tng quan v tp lnh Vi kin trc 32 bit, c th thao tc trn s nguyn 32 bit ch vi nhng lnh n v nh a ch trn khng gian a ch ln, c hiu qu hn nhiu so vi kin trc 16 bit. Khi x l d liu 32 bit, kin trc 16 bit phi s dng t nht 2 lnh thc hin c cng cng vic nh mt lnh 32 bit. Kin trc 32 bit ch c lnh 32 bit v kin trc 16 bit ch c lnh 16 bit, do kin trc 16 bit c mt code dy c hn. Thumb implement tp lnh 16 bit trn kin trc 32 bit nn hiu qu cao hn kin trc 16 bit v mt code dy c hn kin trc 32 bit. ARM7EJ-S cho ngi s dng la chn trng thi ARM, Thumb hoc l trn ln c hai. iu ny cho php ngi s dng ti u ha mt v hiu qu ca code tt nht cho tng yu cu ca ng dng. Tp lnh Thumb Tp lnh Thumb l tp con ca nhng lnh ARM 32 bit thng c s dng nht. Tp lnh Thumb c di mi lnh l 16 bit v c lnh ARM 32 bit. Tp lnh Thumb thao tc c vi cu hnh thanh ghi ARM chun, kt hp nhng im tt nht ARM v Thumb. Tp lnh Thumb c tt c nhng thun li ca vi x l 32 bit: Khng gian a ch 32 bit Thanh ghi 32 bit 32 bit Shifter v ALU Mang chuyn b nh 32 bitDo , tp lnh Thumb c phm vi cho tng thnh phn di hn, thao tc s hc mnh m v khng gian a ch rng ln. Thumb code c kch thc ch bng 65% code Arm v hiu qu n 160% khi chy code ARM trn b nh 16 bit.Tp lnh Thumb lm cho vi x l ARM7EJ-S thch hp mt cch l tng cho cc ng dng nhng vn hn ch v b nh.M hnh vi x l ARM7EJ-S Trng thi thao tc ca vi x l:Vi x l ARM7EJ-S c 3 trng thi thao tc: ARM, Thumb, JazelleKhi chuyn i gia 3 trng thi ny th khng nh hng n mode ca vi x l v ni dung ca cc thanh ghi. Chuyn i gia cc trng thi:Ngi dng c th chuyn i gia cc trng thi ca ARM7EJ-S: Chuyn i gia ARM v Thumb s dng lnh BX v BLX Chuyn i gia ARM v Jazelle s dng lnh BXJTt c cc exception c x l trng thi ARM, nu exception xut hin trng thi Thumb hoc Jazelle, vi x l tr li trng thi ARM. Vic chuyn i tr li trng thi Thumb hoc Jazelle c thc hin t ng sau khi exception return.

T chc b nhVi x l xem b nh nh l tp hp dy cc byte c nh s tng t 0. V d: Byte 0 n byte 3 lu t (word) th nht. Byte 4 n byte 7 lu t (word) th hai.Vi x l c th thao tc vi cc t (word) c lu tr trong b nh theo 2 kiu nh dng: Little-endian format Big-endian format Kiu d liuVi x l ARM7EJ-S h tr cc kiu d liu sau: word (32-bit) halfword (16-bit) byte (8-bit). Kiu thao tc (Operating modes)Tt c cc trng thi u c 7 kiu thao tc: User mode: trng thi thc thi chng trnh thng thng ca ARM, c dng thc thi hu ht cc ng dng. Fast interrupt (FIQ) mode: kiu thao tc ny c dng x l ngt khn cp. Interrupt (IRQ) mode: kiu x l c dng x l cc ngt thng thng Supervisor mode: protected mode cho h iu hnh Abort mode : c gi sau khi d liu hoc lnh Prefetch Abort System mode: user mode c quyn dnh cho h iu hnh Undefined mode: c dng khi xy ra exception lnh cha c nh ngha.User mode cn c bit n nh l kiu thao tc c quyn (privileged modes). Kiu thao tc c quyn c dng phc v interrupt hoc exception hoc truy xut n cc ti nguyn c bo v. Thanh ghi Vi x l ARM7EJ-S c tt c 37 thanh ghi: 31 thanh ghi a dng 32 bit v 6 thanh ghi trng thi 32 bit. Khng th truy xut tt c cc thanh ghi cng thi im. Trng thi v kiu thao tc ca vi x l quyt nh thanh ghi no c php truy xut. B thanh ghi ca trng thi ARM (ARM state) trng thi ARM, c 16 thanh ghi a dng v 1 hoc 2 thanh ghi trng thi c th c truy xut ti bt k thi im no. Trong kiu thao tc c quyn, banked registers c th c s dng.C 16 thanh ghi c th truy xut trc tip (r0-r15). Thanh ghi trng thi chng trnh (CPSR) cha cc bit iu kin v bit mode. Thanh ghi a dng ro n r13 c dng lu tr d liu hoc a ch. Thanh ghi r14, r15v CPSR c nhng chc nng c bit sau: Thanh ghi lin kt (Link register): Thanh ghi r14 c s dng nh l thanh ghi lin kt LR Thanh ghi r14 nhn gi tr ca thanh ghi r15 khi lnh BL hoc BLX c thc thi. Ngoi thi im ny ra, thanh ghi r14 c th c s dng nh l thanh ghi a dng. Banked registers r14_svc, r14_irq, r14_fiq, r14_abt, and r14_und cng c th c s dng lu gi tr tr v ca thanh ghi r15 khi ngt v exception xy ra hoc khi lnh BL hoc BLX c thc thi bn trong ngt hoc exception. Thanh ghi PC (Program Counter): Thanh ghi PC lu tr cc trng thi (Arm state, Thumb state, hoc Jazelle state). kiu thao tc c quyn, thanh ghi Saved Program Status Register (SPSR) c php truy xut. Thanh ghi ny cha cc bt c v kiu thao tc. Banked registers l cc thanh ghi vt l ring bit c nh x thnh cc thanh ghi khc ty thuc vo kiu thao tc hin thi ca vi x l. Ni dung ca banked registers c lu tr khi kiu thao tc thay i. Mi banked register c mt id xc nh thanh ghi, kiu thao tc no ang c nh x ti. Xem hnh FIQ mode c 7 banked register nh x ti cc thanh ghi t r8 n r14 (r8_fiq n r14_fiq). Do , cc x l FIQ khng cn phi lu bt k thanh ghi no. Cc kiu thao tc cn li (Supervisor, Abort, IRQ, Undefined), mi kiu thao tc c nhng thanh ghi tng ng nh x ti cc thanh ghi t r13 ti r14.

Hnh 21B thanh ghi trng thi ARM ca vi x l ARM7EJ-S

B thanh ghi ca trng thi ThumbB thanh ghi ca trng thi ARM l tp con ca b thanh ghi trng thi ARM. Ngi s dng c th truy xut trc tip n: 8 thanh ghi a dng: t r0-r7 Thanh ghi PC Stack pointer, SP (ARM r13) Thanh ghi lin kt LR (ARM r14) Thanh ghi CPSR

Hnh 22B thanh ghi trng thi Thumb ca vi x l ARM7EJ-S

ARM7TDMIARM7TDMI l thnh phn ca b vi x l a dng 32 bit h ARM. Vi x l h ARM c hiu qu cao do tiu th nng lng thp v kch thc nh.Kin trc vi x l ARM7TDMI Vi x l ARM7TDMI c 2 tp lnh: Tp lnh ARM 32 bit Tp lnh Thumb 16 bit

My nh Kodak EasyShare LS753My in mu Fuji xerox DocuPrint C2090FSB nh v Nokia 500

Khng long Ugobe PleoMy ch Veracity TimeNetH thng thanh ton qua in thoi ExaDigm XD2100SP

V lng khng dy cho Microsoft Xbox 360

My tnh Hewlett Packard 20b

a LaCie Bigger

Hnh 23 Nhng sn phm ng dng ph bin ca vi x l ARM7

ARM9 (32-bit)Gii thiu tng quanH vi x l ARM9 l gii php vi x l n cho cc ng dng microcontroller, DSP v Java. ARM9 em n th trng chip gi tr v gim bt s phc tp, tit kim nng lng v thi gian giao dch. H ARM9 gm c cc vi x l ARM968E-S, ARM946E-S, ARM926E-S.ARM9 DSP l vi x l c ci tin tng thch tt vi cc ng dng i hi s kt hp gia DSP v hiu qu ca microcontroller.

Hnh 24 Cc thnh phn chnh ca vi x l ARM968E-S

So snh cc c im gia cc vi x l trong h ARM9ARM968E-Sy l vi x l ARM9 nh nht vi s ci tin DSP gim s tiu th nng lng cho cc ng dng nhng thi gian thc.Vi x l ARM9 nh nht v tiu th nng lng t nht l tng cho nhiu loi ng dng thi gian thc. Vi x l hot ng c hiu qu t Tightly Coupled Memory c th tch hp mt cch d dng thng qua giao din chun.ARM946E-SARM946E-S c s ci tin v b x l cache vi MPU cho cc ng dng thi gian thc chy trn RTOS.Vi x l hng thi gian thc c b sung thm y Memory Protection Unit. Vi x l ny c ch cho cc ng dng m phn ln code nm trong b nh chnh v c nhu cu load vo b nh cache, trong khi vic x l cc exception v d liu c th ti Tightly Coupled Memory.ARM926EJ-SVi x l c h tr Java, DSP v MMU dnh cho cc ng dng chy trn h iu hnh c bn. ARM926EJ-S l vi x l c kh nng h tr y cc h iu hnh nh Linux, WindowsCE v Symbian. Vi x l ny thch hp cho nhiu ng dng cn giao din ha y .

Hnh 25 So snh c im gia cc vi x l trong h ARM9Tm hiu v ARM968E-SGii thiu ARM968E-SVi x l ARM968E-S l thnh vin ca h ARM9 Thumb v implement kin trc ARMv5TE. Vi x l ny h tr tp lnh 32 bit ARM v 16-bit Thumb. Vi x l ARM968E-S c dng trong nhiu lnh vc nhng i hi hiu qu cao, chi ph thp, kch thc nh v tiu th nng lng t.c im ca ARM968E-S: Li ARM9E-S Instruction Tightly-Coupled Memory (ITCM) v Data Tightly-Coupled Memory (DTCM) tng tc vi nhau Giao din DMA (Direct Memory Access) Giao din BIU (Bus Interface Unit) Bn b nh c nh Giao din la chn ETM Giao din debug y v c lm nh i. H tr scan testM hnh lp trnhKiu thao tc ca vi x lC 7 kiu thao tc ca vi x l:User: kiu thao tc khng c quyn dnh cho vic thc thi cc chng trnh thng thngFast interrupt (FIQ): kiu thao tc c quyn x l cc ngt khn cp.Interrupt (IRQ): kiu thao tc c quyn x l cc ngt thng thngSupervisor: kiu thao tc c quyn dnh cho cc chc nng ca h iu hnhAbort: kiu thao tc c quyn x l Data Aborts v Prefetch Aborts.System: kiu thao tc ngi dng c quyn dnh cho cc chc nng ca h iu hnhUndefined: kiu thao tc c quyn x l cc lnh cha c nh ngha.Ngoi kiu thao tc User mode th cc kiu thao tc cn li c bit n nh l kiu thao tc c quyn. Kiu thao tc c quyn c dng phc v cho cc ngt hoc truy xut n cc ti nguyn c bo v.Tp thanh ghi ca ARM968E-SVi x l ARM968E-S c 37 thanh ghi 32-bit: trong c 16 thanh ghi a dng, 1 thanh ghi trng thi chng trnh hin ti, 15 banked register c dng nh l thanh ghi a dng v dng cho nhiu kiu thao tc, 5 banked register c dng nh l thanh ghi lu li trng thi chng trnh cho cc kiu thao tc. Cc thanh ghi ny khng th truy xut cng thi im. Trng thi v kiu thao tc ca vi x l s quyt nh thanh ghi no c th dng c ti thi im .

Hnh 26 Tp thanh ghi ARM968E-SARM9 c nhiu ci tin ln so vi ARM7 bng vic s dng thm nhiu transitor, gm c: Ci tin tn s ng h: t kin trc pipleline 3 giai on thnh 5 giai on tc ng h tng gn nh gp i Ci tin chu k xung nhp: load v lu tr nhanh hn, nhiu lnh ch tn mt chu k ng h, ti u ha lc compiler.Vi x l ARM9 kt hp cht ch gia cc lnh gia tng DSP nh a thc thi h tr c hiu qu vic thi hnh cc thut ton x l tn hiu s. Truy xut tp thanh ghi trng thi Thumb trng thi Thumb, ngoi cc cu lnh nh trng thi ARM, cn c cc cu lnh truy xut n cc Thanh ghi trng thi chng trnh v cc thanh ghi cao hn (r8-r15): trng thi Thumb, khng c lnh MRS hoc MSR di chuyn d liu gia CPSR hoc SPSR v cc thanh ghi a dng. trng thi Thumb, ch c nhng lnh sau c th truy cp vo cc thanh ghi cao: Lnh ADD: dng ADD (4) Lnh CMP: dng CMP (3) Lnh MOV: dng MOV (3) Lnh BLX: dng BLX (2)

Thanh ghi trng thi chng trnhVi x l c mt thanh ghi trng thi chng trnh hin thi (CPSR) v 5 thanh ghi trng thi chng trnh c lu li (SPSRs) x l cc exception. Thanh ghi trng thi chng trnh c nhim v: Lu tr thng tin v nhng thao tc tnh ton gn y nht c thc hin trong ALU. iu khin m v ng cc ngt Thit lp kiu thao tc ca vi x l

Hnh 27 Thanh ghi trng thi chng trnh ca vi x l ARM968E-SN: c overflowZ: c ZeroC: c Carry/borrowV: c Negative hoc nh hnI: bit disable IRQF: bit disable FIQT: c trng thi ThumbM: Mode fieldLnh vc ng dng ARM9Cc vi x l ARM9 l tri tim ca nhng sn phm tn hiu s cao cp. H vi x l ARM9 p ng c cc yu cu kht khe v tnh hiu qu cao, tnh linh hot v chi ph cho cc ng dng nhng.Tiu dng:Smartphones, PDA, Set top box, PMP, chi in t, my quay Digital still, my quay video k thut s.Mng:Wireless LAN, 802.11, Bluetooth, Firewire, SCSI, 2.5G/3G, BasebandXe hi:Power train, ABS, Body systems, Navigation, Infotainment.Nhng:USB controllers, Bluetooth controllers, medical scannersLu tr:HDD controllers, solid state drivesCortex-M3Trong vi nm tr li y, mt trong nhng xu hng ch yu trong cc thit k vi vi iu khin l s dng cc chip ARM7 v ARM9 nh mt vi iu khin a dng. Ngy nay cc nh sn xut IC a ra th trng hn 240 dng vi iu khin s dng li ARM. Tp on ST Microelectronic va cho ra mt dng STM32, vi iu khin u tin da trn nn li ARM Cortex-M3 th h mi do hng ARM thit k, li ARM Cortex-M3 l s ci tin ca li ARM7 truyn thng, tng mang li s thnh cng vang di cho cng ty ARM. Dng STM32 thit lp cc tiu chun mi v hiu sut, chi ph cng nh kh nng p ng cc ng dng tiu th nng lng thp v tnh iu khin thi gian thc kht khe.Gii thiu tng quanB vi x l ARM Cortex-M3 l b x l ARM th h mi cho cc h thng nhng. N c pht trin cung cp mt nn tng chi ph thp, p ng yu cu thc thi ca MCU vi vic gim s bng bn dn trong li ARM Cortex dn ti tiu th nng lng thp v gim gi thnh vi x l, ng thi cung cp hiu nng tnh ton cao v mt h thng tin tin p ng ngt. B vi x l ARM Cortex-M3 32-bit RISC t hiu sut cao hn so vi ARM7TDMI-S.Dng ARM Cortex l mt b x l th h mi a ra mt kin trc chun cho nhu cu a dng v cng ngh. Khng ging nh cc chip ARM khc, dng Cortex l mt li x l hon thin, a ra mt chun CPU v kin trc h thng chung. Dng Cortex gm c 3 phn nhnh chnh: dng A dnh cho cc ng dng cao cp, dng R dnh cho cc ng dng thi gian thc nh cc u c v dng M dnh cho cc ng dng vi iu khin v chi ph thp.Cc chip ARM7 v ARM9 c cc nh sn xut bn dn thit k vi gii php ring ca mnh, c bit l phn x l cc ngt c bit (exception) v cc ngt thng thng (interrupt). Cortex-M3 a ra mt li vi iu khin chun nhm cung cp phn tng qut, quan trng nht ca mt vi iu khin, bao gm h thng ngt (interrupt system), SysTick timer (c thit k cho h iu hnh thi gian thc), h thng kim li (debug system) v memory map. Khng gian a ch 4Gbyte ca Cortex-M3 c chia thnh cc vng cho m chng trnh, SRAM, ngoi vi v ngoi vi h thng. Khng ging vi ARM7 c thit k theo kin trc Von Neumann (b nh chng trnh v b nh d liu chung vi nhau), Cortex-M3 c thit k da theo kin trc Harvard (b nh chng trnh v b nh d liu tch bit vi nhau), v c nhiu bus cho php thc hin cc thao tc song song vi nhau, do lm tng hiu sut ca chip. Khng ging vi cc kin trc ARM trc , dng Cortex cho php truy cp d liu khng xp hng (unaligned data, v chip ARM l kin trc 32 bit, do tt c d liu hoc m chng trnh u c sp xp kht vi vng b nh l bi s ca 4 byte). c im ny cho php s dng hiu qu SRAM ni. Dng Cortex cn h tr vic t v xa cc bit bn trong hai vng 1 Mbyte ca b nh bng phng php gi l bit banding. c im ny cho php truy cp hiu qu ti cc thanh ghi ngoi vi v cc c c dng trn b nh SRAM m khng cn mt b x l lun l (Boolean processor).B x l Cortex-M3 l mt vi iu khin c tiu chun ha gm mt CPU 32 bit, cu trc bus, n v x l ngt c h tr tnh nng lng ngt vo nhau (nested interrupt unit), h thng kim li (debug system) v tiu chun b tr b nh (standard memory layout).Mt trong nhng thnh phn chnh ca li Cortex-M3 l NVIC (Nested Vector Interrupt Controller). NVIC cung cp mt cu trc ngt chun cho tt c cc vi iu khin c thit k da trn li Cortex v cch x l cc ngt c bit (exceptional interrupt). NVIC cung cp cc vector ngt chuyn dng ln ti 240 ngun ngt t ngoi vi, mi ngun ngt c th c u tin ha vi cc mc ring bit. NVIC c thit k x l cc ngt i hi thi gian p ng cc k nhanh (extremely fast interrupt). Thi gian t lc nhn mt tn hiu ngt cho ti khi thc thi dng lnh u tin trong trnh phc v ngt ch l 12 chu k xung nhp. Cng vic ny c thc hin t ng bi mt vi chng trnh (microcode) c ci sn trong CPU. Trong trng hp xut hin cc interrupt lng nhau (tc l xy ra ngt khi ang x l ngt trc ), NVIC s dng mt phng thc gi l tail chain cho php ngt lin tip c phc v vi tr ch c 6 chu k xung nhp. Trong sut giai on lu tr d liu ln vng nh stack bt u thc thi chng trnh phc v ngt, mt ngt c mc u tin cao hn ngt hin ti c th cnh tranh vi ngt hin ti m khng chu bt k tr hon no. Cu trc ngt cng i km vi ch tit kim nng lng trong li Cortex-M3. CPU c th c cu hnh t ng vo ch tit kim nng lng sau khi thot khi ngt. Sau li tip tc ng cho n khi mt exception (ngt c bit) xut hin. Mc d Cortex-M3 c thit k nh l mt li chi ph thp (low cost core), nhng n vn l mt CPU 32 bit v vn h tr hai ch hot ng: Thread v Handler, mi ch c th c cu hnh vi mi vng stack ring bit ca n, iu ny cho php thit k cc phn mm phc tp v h tr cc h iu hnh thi gian thc. Li Cortex c h tr mt timer 24 bit t ng np li gi tr, n s cung cp mt ngt timer u n cho mt nhn RTOS (Real Time Operating System). Cc chip ARM7 v ARM9 c hai tp lnh (tp lnh ARM 32 bit v tp lnh Thumb 16 bit), trong khi dng Cortex c thit k h tr tp lnh ARM Thumb-2, tp lnh ny c pha trn gia tp lnh 16 v 32 bit, nhm t c hiu sut cao ca tp lnh ARM 32-bit vi mt m chng trnh ti u ca tp lnh Thumb 16 bit. Tp lnh Thumb-2 c thit k c bit dnh cho trnh bin dich C/C++, tc l cc ng dng da trn nn Cortex hon ton c th c vit bng ngn ng C m khng cn n chng trnh khi ng vit bng assembler nh ARM7 v ARM9.

Hnh 28 Cc thnh phn chnh ca vi x l Cortex-M3Ngun: http://www.arm.com/products/processors/cortex-m/cortex-m3.php n v x l trung tm Cortex (Cortex CPU)Trung tm ca b x l Cortex l mt CPU RISC 32 bit. CPU ny c mt phin bn c n gin ha t m hnh lp trnh ca ARM7 v ARM9, nhng c mt tp lnh phong ph hn vi s h tr tt cho cc php ton s nguyn, kh nng thao tc vi bit tt hn v kh nng p ng thi gian thc tt hnKin trc ng ng (Pipeline)CPU Cortex c th thc thi hu ht cc lnh trong mt chu k n. Ging nh CPU ca ARM7 v ARM9, vic thc thi ngy t c vi mt ng ng ba tng. Tuy nhin, Cortex-M3 c kh nng d on vic r nhnh gim thiu s ln lm rng (flush) ng ng.

Hnh 29 Kin trc ng ng ca ARM Cortex-M3Ngun: http://www.arm.vn/default.aspx?tabid=748&g=posts&t=20 Trong khi mt lnh ang c thc thi, th lnh tip theo s c gii m v lnh tip theo na s c ly v t b nh. Phng thc hot ng ny s pht huy hiu qu ti a cho m tuyn tnh (linear code), nhng khi gp phi mt lnh r nhnh (v d: cu trc lnh ifelse) th cc ng ng phi c lm rng (flush) v lm y (refill) trc khi m c th tip tc thc thi. Vi CPU ARM7 v ARRM9, vic r nhnh l rt tn km v mt hiu sut m (code performance). Trong CPU Cortex c ng ng ba tng c tng cng kh nng d on r nhnh, c ngha rng khi mt lnh r nhnh c iu kin xut hin, mt thao tc ly lnh da trn suy on c thc hin, do lnh r nhnh c iu kin sn sng thc hin m khng cn phi chu thm mt thao tc no. Trng hp xu nht khi gp phi mt lnh r nhnh gin tip, khi khng th thc hin vic ly lnh da trn vic suy on, do phi lm rng ng ng dn. Kin trc ng ng l cha kha dn n hiu sut tng th ca CPU Cortex, v vy khng cn bt k cn nhc, xem xt c bit no c thc hin trong m ng dng.M hnh lp trnh (Programmers model)CPU Cortex l b x l da trn kin trc RISC, do h tr kin trc np v lu tr (load and store architecture). thc hin lnh x l d liu, cc ton hng phi c np vo mt tp thanh ghi trung tm, cc php tnh d liu phi c thc hin trn cc thanh ghi ny v kt qu sau c lu li trong b nh.

Hnh 210 Kin trc load v store ca vi x l ARM Cortex-M3Ngun: http://www.arm.vn/default.aspx?tabid=748&g=posts&t=20 Do vy tt c cc hot ng ca chng trnh tp trung xung quanh tp thanh ghi ca CPU. Tp thanh ghi ny bao gm mi su thanh ghi 32 bit. Cc thanh ghi R0-R12 l cc thanh ghi n gin, c th c dng cha cc bin ca chng trnh. Cc thanh ghi R13-R15 c chc nng c bit trong CPU Cortex. Thanh ghi R13 c dng nh l con tr ngn xp (stack pointer). Thanh ghi ny c chia thnh nhm (banked), cho php CPU Cortex c hai ch hot ng, mi ch c khng gian ngn xp ring bit. c im ny thng c h iu hnh thi gian thc (Real Time Operating System) d dng c th chy m h thng ca mnh trong mt ch bo v. Trong CPU Cortex c hai ngn xp c gi l main stack v process stack. Thanh ghi R14 tip theo c gi l thanh ghi lin kt (link register). Thanh ghi ny c s dng lu tr cc a ch tr v khi mt cuc gi th tc (call a procedure) c thc hin. iu ny cho php CPU Cortex thc hin rt nhanh vic nhp v thot khi mt th tc. Nu chng trnh ca bn gi su vo nhiu lp chng trnh con, trnh bin dch s t ng lu R14 trn ngn xp. Thanh ghi cui cng R15 l b m chng trnh (Program Counter); n l mt phn ca tp thanh ghi trung tm, n c th c c v thao tc ging nh bt k thanh ghi no khc.

Hnh 211 M hnh lp trnh ca vi x l ARM Cortex-M3Ngun: http://www.arm.vn/default.aspx?tabid=748&g=posts&t=20 Thanh ghi XPSRNgoi tp thanh ghi trung tm cn c mt thanh ghi ring bit c gi l thanh ghi trng thi chng trnh (Program Status Register). N khng phi l mt phn ca tp thanh ghi chnh v ch c teher truy cp thng qua hai lnh chuyn dng. XPSR cha mt s cc vng chc nng quan trng nh hng n vic thc thi ca CPU Cortex.

Hnh 212 Thanh ghi trng thi chng trnh ca vi x l Cortex-M3Ngun: http://www.arm.vn/default.aspx?tabid=748&g=posts&t=20 Thanh ghi XPSR cng c th c truy cp thng qua ba bit hiu c bit cho php truy cp vo cc bit trong XPSR. Nm bit u l nhng c m iu kin v c gn bit hiu (aliased) nh thanh ghi trng thi chng trnh ng dng. Bn c N, Z, C, V (Negative, Zero, Carry v Overflow) s c thit lp v xa ty thuc vo kt qu ca mt lnh x l d liu. Bit Q l c s dng bi cc lnh ton hc DPS ch ra rng mt bing t gi tr ti a hoc ti thiu ca n. Ging nh tp lnh ARM 32 bit, cc lnh Thumb-2 ch c thc hin nu m iu kin ca lnh ph hp vi trng thi ca cc c trong thanh ghi trng thi chng trnh ng dng. Nu m iu kin ca lnh khng ph hp, th lnh i ngang qua ng ng nh l mt lnh NOP (lnh ny khng lm g c).Cc ch hot ng ca vi x lB x l Cortex c thit k vi mc tiu gim s bng bn dn, nhanh chng v d s dng li vi iu khin, n c c thit k h tr vic s dng h iu hnh thi gian thc. B x l Cortex c hai ch hot ng: ch Thread v ch Handler. CPU s chy ch Thread trong khi n ang thc thi ch nn khng c ngt xy ra v s chuyn sang ch Handler khi n ang thc thi cc ngt c bit (exceptions). Ngoi ra, CPU Cortex c th thc thi m trong ch c quyn hoc khng c quyn (privileged hoc non-privileged). Trong ch c quyn, CPU c quyn truy cp tt c cc lnh. Trong ch khng c c quyn, mt s lnh b cm truy cp. Ngoi ra, vic truy cp cc thanh ghi iu khin h thng trong b vi x l Cortex cng b cm. Cch s dng ngn xp cng c th c cu hnh. Ngn xp chnh (main stack-R13) c th c s dng bi c hai ch Thread v Handler. Ch Handler c th c cu hnh s dng ngn xp qu trnh.

Hnh 213 M hnh hot ng ca ch Thread v HandlerNgun: http://www.arm.vn/default.aspx?tabid=748&g=posts&t=20Sau khi reset, b x l Cortex s chy trong cu hnh phng. C hai ch Thread v Handler c thc thi trong ch c quyn (privileged mode), do , khng c s gii hn no v quyn truy cp vo bt k ti nguyn ca b x l. C hai ch Thread v Handler u s dng ngn xp chnh. bt u thc hin, b x l Cortex n gin ch cn vector reset v a ch bt u ca ngn xp c cu hnh trc khi c th bt u thc thi chng trnh ng dng C. Tuy nhin, nu ngi dng ang s dng mt h iu hnh thi gian thc (RTOS) hoc ang pht trin mt ng dng i hi khc khe v an ton, chip c th c s dng trong ch cu hnh nng cao, ni ch Handler (exceptions v RTOS) chy trong ch c quyn v s dng ngn xp chnh (main stack), trong khi m ng dng chy trong ch Thread v khng c c quyn truy cp v s dng ngn xp qu trnh. Bng cch ny m h thng v m ng dng c phn vng v cc li trong m ng dng s khng lm cho RTOS sp .c im ni bt ca Cortex-M3 Tp on ST a ra th trng 4 dng vi iu khin da trn ARM7 v ARM9, nhng STM32 l mt bc tin quan trng trn ng cong chi ph v hiu sut (price/performance), gi ch gn 1 Euro vi s lng ln, STM32 l s thch thc tht s vi cc vi iu khin 8 v 16 bit truyn thng. STM32 u tin gm 14 bin th khc nhau, c phn thnh hai nhm: dng Performance c tn s hot ng ca CPU ln 72Mhz v dng Access c tn s hot ng ln ti 36Mhz. Cc bin th STM32 trong hai nhm ny tng thch hon ton v cch b tr chn (pin) v phn mm, ng thi kch thc b nh FLASH ROM c th ln ti 128K v 20K SRAM.Dng STM32 c hai nhnh, nhnh Performance hot ng vi xung nhp ln n 72Mhz v c y cc ngoi vi, nhnh Access hot ng vi xung nhp ti a 36Mhz v c t ngoi vi hn so vi nhnh Performance.S tinh viThot nhn th cc ngoi vi ca STM32 cng ging nh nhng vi iu khin khc, nh hai b chuyn i ADC, timer, I2C, SPI, CAN, USB v RTC. Tuy nhin, mi ngoi vi trn u c rt nhiu c im th v. V d nh b ADC 12 bit c tch hp mt cm bin nhit t ng hiu chnh khi nhit thay i v h tr nhiu mode chuyn i. Mi b timer c 4 khi capture compare, mi khi timer c th lin kt vi cc khi timer khc to ra mt mng cc timer tinh vi. Mt timer cao cp chuyn h tr iu khin ng c, vi 6 u ra PWM sang mt trng thi an ton c ci sn. Ngoi vi ni tip SPI c mt khi kim tng CRC bng phn cng cho 8 v 16 word h tr tch cc cho giao tip th nh SD hoc MMC.STM32 c h tr thm 7 knh DMA (Direct Memory Access). Mi knh c th c dng truyn d liu n cc thanh ghi ngoi vi hoc t cc thanh ghi ngoi vi i vi kch thc t (word) d liu truyn i c th l 8/16 hoc 32 bit. Mi ngoi vi c th c mt b iu khin DMA (DMA controller) i km dng gi hoc i hi d liu nh yu cu. Mt b phn x bus ni (bus arbiter) v ma trn bus (bus matrix) ti thiu ha s tranh chp bus truy cp d liu thng qua CPU (CPU data access) v cc knh DMA. iu cho php cc n v DMA hot ng linh hot, d dng v t ng iu khin cc lung d liu bn trong vi iu khin.STM32 l mt vi iu khin tiu th nng lng thp v t hiu sut cao. N c th hot ng in p 2V, chy tn s 72MHz v dng tiu th ch c 36mA vi tt c cc khi bn trong vi iu khin u c hot ng. Kt hp vi cc ch tit kim nng lng ca Cortex, STM32 ch tiu th 2A khi ch standby. Mt b dao dng ni RC 8MHz cho php chip nhanh chng thot khi ch tit kim nng lng trong khi b dao ng ngoi ang khi ng. Kh nng nhanh i vo v thot khi cc ch tit kim nng lng lm gim nhiu s tiu th nng lng tng th.S an tonNgy nay, cc ng dng hin i thng phi hot ng trong mi trng khc khe, i hi tnh an ton cao, cng nh i hi sc mnh x l v cng nhiu thit b ngoi vi tinh vi. p ng cc yu cu khc khe , STM32 cung cp mt s tnh nng phn cng h tr cc ng dng mt cch tt nht. Chng bao gm mt b pht hin in p thp, mt h thng bo v xung clock v hai b watchdogs. B u tin l mt watchdog ca s. Watchdog ny phi c lm ti trong mt khung thi gian xc nh. Nu nhn n qu sm, hoc qu mun, th watchdog s kch hot. B th hai l mt watchdog c lp, c b dao ng bn ngoi tch bit vi xung nhp h thng chnh. H thng bo v xung nhp c th pht hin li ca b dao dng chnh bn ngoi (thng l thch anh) v t ng chuyn sang dng b dao ng ni RC 8MHz.Tnh bo mtMt trong nhng yu cu khc khe khc ca thit k hin i l nhu cu bo mt m chng trnh ngn chn sao chp tri php phn mm. B nh Flash ca STM32 c th c kha chng truy cp c Flash thng qua cng debug. Khi tnh nng bo v c c kch hot, b nh Flash cng c bo v chng ghi ngn chn m khng tin cy c chn vo bng vector ngt. Hn na bo v ghi c th c cho php trong phn cn li ca b nh Flash. STM32 cng c mt ng h thi gian thc v mt khu vc nh d liu trn SRAM c nui nh ngun pin. Khu vc ny c mt u vo chng gi mo, c th kch hot mt s kin ngt khi c s thay i trng thi u vo ny. Ngoi ra, mt s kin chng gi mo s t ng xa d liu c lu tr trn SRAM c nui bng ngun pin.Pht trin phn mmNu ngi dng s dng mt vi iu khin da trn li ARM, th s thy cc cng c pht trin c h tr tp lnh Thumb-2 v dng Cortex. Ngoi ra ST cng cung cp mt th vin iu khin thit b ngoi vi, mt b th vin pht trin USB nh l mt th vin ANSI C v m ngun l thng thch vi cc th vin trc c cng b cho vi iu khin STR7 v STR9. C rt nhiu RTOS m ngun m, thng mi v middleware (TCP/IP, h thng tp tin) h tr cho h Cortex. Dng Cortex-M3 cng i km vi mt h thng g li hon ton mi gi l CoreSight. Truy cp vo h thng CoreSight thng qua cng truy cp Debug , cng ny h tr kt ni chun JTAG hoc giao din 2 dy (serial wire-2 Pin), cng nh cung cp trnh iu khin chy g li, h thng CoreSight trn STM32 cung cp mt data watchpoint v mt cng c theo di (instrumentation trace). Cng c ny c th gi thng tin v ng dng c la chn n cng c g li. iu ny c th cung cp thm cc thng tin g li v cng c th c s dng trong qu trnh th nghim phn mm.Dng Performance v Access ca STM32H STM32 c hai nhnh u tin ring bit: dng Performance v dng Access. Dng Performance tp hp y cc thit b ngoi vi v chy ti xung nhp ti a 72MHz. Dng Access c cc thit b ngoi vi t hn v chy ti a 32 MHz. Quan trng hn l cch b tr chn (pins layout) v cc kiu ng gi chip (package type) l nh nhau gia dng Access v dng Performance. iu ny cho php cc phin bn khc nhau ca STM32 c hon v m khng cn phi sa i sp xp li footprint (m hnh chn ca chip trong cng c layout bo mch) trn PCB (Printed Circuit Board).Ngoi hai dng Performance v Access u tin, hin nay ST a ra th trng thm hai dng USB Access v Connectivity nh hnh bn di

GII THIU B BIN DCH GNUARM Gii thiu GNUARM Toolchain Gii thiu Hu ht vic lp trnh cho cc h thng ARM din ra trn cc my ko phi thuc h thng ARM v cc my ny s dng cc cng c bin dch cho v target ti ARM platform. GNUARM toolchain l mt mi trng lp trnh tng t nh vy, n cho php bn s dng bt k mi trng hoc cng c no thit k, pht trin v k c vic testing trn cc b m phng ARM. GNUARM Toolchain gm c GNU binutils, b bin dch GCC v debugger (Insight cho Window v Linux, GDB cho MacOS), th vin C cho cc h thng nhng (Newlib). GNUARM Toolchain gm trnh bin dch cho c ngn ng C v C++. Download, ci thttp://www.gnuarm.com/files.html Cc thnh phn ca ToolchainGNU BinutilsGNU Binutils l tp hp cc cng c nh phn. GNU Binutils gm c 2 tool chnh l: GNU linker (ld) v GNU assembler (as). Ngoi ra, cn c mt s tool khc nh:addr2line Chuyn cc a ch vo trong tn tp tin v s dng.ar Mt cng c cho php to, sa xa cc tp tin lu tr(archives).dlltool To files bin dch v s dng DLLs.gold Mt book linker mi, nhanh cho ELF(beta test).gprof Hin th thng tin profiling.nlmconv Chuyn m object sang NLM.nm Lit k cc symbols t file object.objcopy Chp v dch cc file object.objdump Hin th thng tin ca file object.ranlib To ch mc cho ni dung file lu tr(archive).readelf Hin th thng tin t bt k nh dng file ELF no.size Lit k kch thc section ca file object hoc file lu tr.lestrings Lit k cc chui c th in trong file.strip Hy b symbols.windmc B bin dch thng ip. windres B bin dch cho cc file ti nguyn3.2.1.1 GNU linker M tld kt hp mt s file object v file nn, sp xp li d liu ca cc file v lin kt chng li vi nhau. Thng thng, bc cui cng ca qu trnh compile mt chng trnh l chy ld. Ngoi tnh linh hot, GNU linker cn hu ch hn nhng linker khc v c cung cp nhng thng tin d on. Nhiu linker khc dng vic thc thi ngay lp tc khi gp li; bt c khi no c th, ld tip tc vic thc thi, cho php ngi s dng nhn ra li, hoc trong mt s trng hp vn cho ra file output mc d c li. Tm tt cch s dng GNU linker trn chip ARM Cu lnh tng qut:ld [options] objfile Cc options-o output--output=output: s dng output lm tn file output; nu khng c option ny th tn file output mc nh l a.out.-O level: Nu level l s ln hn 0, ld s ti u ha file output. iu ny s lm lu hn ng k v do gn nh chc chn l ch dng cho file nh phn cui cng. -M--print-map: In ra bn lin kt (link map) vo file output chun. Bn lin kt cung cp thng tin v cc lin kt, gm c: File object c nh x vo b nh u. Nhng k t thng gp c cp pht nh th no Gi tr gn cho k t. Tt c cc thnh phn c gom li trong lin kt.V d on linker script cha: foo = 1foo = foo * 4foo = foo + 8th kt qu output trong bn lin kt nu c s dng option M l:0x00000001foo = 0x1[0x0000000c]foo = (foo * 0x4)[0x0000000c]foo = (foo + 0x8)-Map mapfile: In bn lin kt vo file mapfile. Xem thm m t option M.-T scriptfile--script=scriptfile: S dng scriptfile lm tn file lin kt. File ny s thay th file lin kt mc nh ca GNU ld. Nu scriptfile khng tn ti trong th mc hin ti, ld s tm kim n trong nhng th mc c ch nh bi L option.3.2.1.2 GNU assembler M tGNU as l mt h cc assembler. Nu s dng GNU assembler trn 1 kin trc m mun s dng n trn kin trc khc th ch cn tm mt mi trng tng t. GNU as c dng ch yu assemble kt qu output ca gcc. Tm tt cch s dng GNU as trn chip ARM Cu lnh tng qut:as [-a[cdghlns][=file]][--alternate][-D][--debug-prefix-map old=new][--defsym sym=val][-f] [-g] [--gstabs][--gstabs+] [--gdwarf-2] [--help] [-I dir] [-J][-K] [-L] [--listing-lhs-width=NUM][--listing-lhs-width2=NUM] [--listing-rhs-width=NUM][--listing-cont-lines=NUM] [--keep-locals] [-o objfile][-R] [--reduce-memory-overheads] [--statistics][-v] [-version] [--version] [-W] [--warn][--fatal-warnings] [-w] [-x] [-Z] [@FILE][--target-help] [target-options][--|files]

Cc option ca GNU as--gdwarf-2: Pht sinh thng tin debug DWARF2 cho mi dng assembler. Thng tin ny gip debug code assembler, nu debugger c th x l dng file ny. -I dir: Thm th mc dir vo danh sch cc th mc tm kim include.-o objfile: Tn ca file object output sau khi GNUARM as thc hin cu lnh as objfile.-mcpu=processor[+extension]: Ch nh loi vi x l ARM-mthumb-interwork: Ch nh code c pht sinh gm c code ARM v Thumb.

Compiler set (GCC) GCC l vit tt ca GNU Compiler Collection, GCC tch hp trnh bin dch dnh cho nhiu ngn ng lp trnh khc nhau: C, C++, Objective-C, Objective-C++, Java, Fortran, and Ada. Thnh phn c lp ngn ng ca GCC gm c vic ti u ha v pht sinh m my cho nhiu vi x l khc nhau. Thnh phn ca compiler c trng cho mt ngn ng ring bit c gi l front end. Ngoi nhng front end c tch hp sn vo GCC cn c nhng front end khc c lu ring bit. Nhng front end l: Pascal, Mercury v COBOL, s dng c nhng ngn ng ny th phi built chng vi GCC proper. Hu ht compiler cho cc ngn ng khc C th c tn ring ca n. Compiler cho ngn ng C++ l G++, cho ADA l GNAT. Khi chng ta ni v vic compile mt trong nhng ngn ng trn, chng ta cp n bng tn ring ca chng hoc GCC, c 2 u ng. Trong qu kh, compiler cho nhiu ngn ng, trong c c C++ v Fortran, khi thc hin tin x l s pht sinh ra mt ngn ng cp cao khc, chng hn nh l C. Nhng compiler GCC khng thc hin theo cch ny, cc compiler ca gcc u pht sinh ra m my trc tip.Nhng ngn ng chun c h tr bi GCC Ngn ng CGCC h tr 3 phin bn ca ngn ng C chun, mc d h tr cho phin bn gn y nht th cha c hon chnh: ANSI C standard (X3.159-1989) (thng c bit n nh l C89), chn chun ny trong GCC th s dng option -ansi hoc -std=c89 hoc -std=iso9899:1990 ISO C99. chn chun ny trong GCC th s dng option -std=c99 hoc -std=iso9899-1999. Mc nh, GCC cung cp mt vi m rng cho trng hp him khi xy ra: xung t vi C chun. Mt s phin bn m rng ca ngn ng C: Option -std=gnu89 cho C89 with GNU extensions. Option -std=gnu99 cho C99 with Gnu extensions.Mc nh, nu khng c option ca ngn ng C no c chn, th option mc nh l -gnu89. Khi C99 c h tr hon chnh, th option mc nh s l -gnu99. Mt vi c im ca C99 c chp nhn trong C89. Ngn ng C++GCC h tr ISO C++ chun (1998) v h tr th nghim cho ISO C++ chun sp ti (200x) ISO C++ chun thng c bit n nh l C++98 v C++03. chn chun ny th s dng option -ansi hoc -std=c++98. C++0x 2009, chn chun ny s dng option -std=c++0x Objective-C v Objective-C++Khng c chun chnh thc c vit cho Objective-C v Objective-C++. Ti liu Object-Oriented Programming and the Objective-C Language c th tm ti mt s website:http://developer.apple.com/documentation/Cocoa/Conceptual/ObjectiveC/ http://www.toodarkpark.org/computers/objc/ http://www.gnustep.org v http://gcc.gnu.org/readings.html Tm tt v hng dn cch s dng trnh bin dch GCC trn chip ARM Cu lnh bin dch tng qut: gcc [-c|-E] [-std=standard][-g] [-pg] [-Olevel][-Wwarn] [-pedantic][-Idir] [-Ldir][-Dmacro[=defn]] [-Umacro][-foption] [-mmachine-option][-o outfile] [@file] infile

Option iu khin loi output (Overall Option)-c: compile hoc assemble source file, khng lin kt. Giai on lin kt thng l khng lm. Ouput cui cng l file object cho mi source file. Mc nh tn ca file object l tn ca source file c thay th hu t .c, .i, .s bi .o. Nu khng nhn ra file input th khng yu cu vic bin dch, pht l i.-x language: Ch nh ngn ng cho file input (hn l vic compiler t chn ngn ng mc nh da trn hu t ca tn file). Option ny c hiu lc cho tt c cc file input cho n khi x option tip theo c ch nh. language c th c cc gi tr nh sau:c, c-header, c-cpp-outputc++, c++-header, c++-cpp-outputobjective-c, objective-c-header, objective-c-cpp-outputobjective-c++, objective-c++-header, objective-c++-cpp-outputassembler, assembler-with-cppadaf95, f95-cpp-inputjavatreelang-o file: t kt qu output vo file file. iu ny c p dng bt chp loi ca file output ra l g, c th l file thc thi, l object file hay assembler file hay code C c tin x l. Nu o khng c ch nh, mc inh bin dch cc file source.suffix thnh file source.o, cn cc file assembler th thnh source.s.-S: Dng sau giai on compile, khng assemble.Kt qu output l code assembler cho nhng file input khng phi l assembler. Mc nh, tn assembler file l tn ca source file thay hu t .c, .i thnh .s.-E: Dng sau giai on tin x l, khng chy compiler thch hp. Kt qu output l hnh thc tin x l source code. Nhng file input khng cn tin x l s c b qua. C Language Options-fsigned-char: Chn kiu char c du. -fno-unsigned-char l hnh thc s m ca funsigned-char. Cng ging nh vy, ng ngha vi fno-signed-char l funsigned-char. Preprocessor Options-MT target: thit lp target l chui target c ch nh. Nu mun c nhiu target, c th ch nh ra cc target sau option -MT hoc s dng nhiu option MT.V d: -MT ($objpfx)foo.o c th hiu: $(objpfx)foo.o: foo.c-MP: option ny ch dn CPP thm target gi cho mi phn ph thuc ca 1 target, mi phn ca target khng ph thuc vo ci g c. V d:test.o: test.c test.htest.h: Linker Options-nostdlib: Khng s dng startup file hoc cc th vin h thng chun khi lin kt. Khng c startup file m ch c cc th vin m ngi dng ch ra s c gi n linker. Compiler c th pht sinh ra cc li gi memcmp, memset, memcpy v memmove. Mt trong nhng th vin chun b -nostdlib v -nodefaultlibs b qua l libgcc.a, libgcc.a l th vin ca chng trnh con, GCC s dng th vin ny khc phc nhng thiu st ca nhng my c bit hoc cho nhng yu cu c bit ca mt s ngn ng. Trong hu ht cc trng hp, u cn th vin libgcc.a thm ch khi mun trnh cc th vin chun khc. Trong nhng trng hp , khi s dng nostdlib hoc nodefaultlibs nn s dng lgcc. iu ny m bo rng ngi dng s khng gp phi cc trng hp thiu tham chiu n cc th vin bn trong ca GCC.-W1, option: Chuyn option nh l mt s la chn (option) cho linker. Nu option cha du phy, n s c ct thnh nhiu option ti du phy. Language Independent Options-fmessage-length=n: nh dng thng ip li l n k t va vi mt s dng nht nh. Mc nh l 72 k t cho g++ v 0 cho nhng front-end cn li. Nu n l 0 th khng cn phi thc hin nh dng dng, mi thng ip li s xut hin trn 1 dng. Nhng option yu cu hoc l chn cc warning-Wall: option ny cho ra tt c cc warning v cc hm thit lp v cc warning ny rt d trnh (hoc l chnh sa ngn chn cc warning). Nhng option iu khin qu trnh tin x l-MF file: Khi c s dng vi M hoc MM, c ngha l ch nh 1 file ghi cc dependence vo. Khi s dng option MD hoc MMD, -MF ghi cc dependency ln file output mc nh. Option cho vic debug chng trnh hoc GCC (Debugging Options)-gdwarf-2: Pht sinh thong tin debug di nh dng DWARF version 2 (nu n c h tr). y l nh dng c s dng bi DBX trn IRIX 6. Vi option ny, GCC s s dng cc tnh nng ca DWARF version 3 khi chng hu dng, version 3 th tng thch hn version 2 nhng vn gy ra nhiu vn i vi cc debugger c hn. Option iu khin ti u ha codeS dng c ti u ha code gip compiler nng cao hiu qu v kch thc code cng nh s tiu tn thi gian bin dch v c th l c vic debug chng trnh.-Olevel:-O0: gim bt thi gian complile v lm cho qu trnh debug cho kt qu ging nh mong i. y l kiu ti u ha mc nh.-O1: Ti u ha. Vic ti u ha code s khin compiler tn nhiu thi gian hn v nhiu b nh hn mt cht i vi cc hm ln. level ny, compiler c gng gim kch thc code v thi gian thc thi m khng thc hin bt k vic ti u ha no m mt nhiu thi gian compile.-O2: Ti u ha nhiu hn na. GCC thc hin gn nh tt c cc cch ti u ha c h tr m khng bao gm space-speed tradeoff. Compiler cng khng thc hin loop unroll hay l function inline. So snh vi O th kiu ti u ha ny gia tng c thi gian compile v hiu qu ca vic pht sinh code.-O3: Ti u ha nhiu hn na. O3 thc hin tt c cc ti u ha ging nh O2 v thm vi option: -finline-functions, -funswitch-loops, -fpredictive-commoning, -fgcse-after-reload v ftreevectorize.-Os: Ti u ha kch thc, -Os thc hin tt c cc cch ti u nh O2 m khng lm gia tng kch thc code. Ngoi ra Os cng thc hin nhng cch ti u khc na gim kch thc code.

Directory options (option tm kim th mc)-Idir: Thm th mc dir vo u danh sch th mc tm kim file header. Ch nh Target Machine v Compiler versionGCC c cung cp option cho cc trnh bin dch cho v version:-b machine: Tham s machine ch nh target machine cho vic bin dch. Khi ngi s dng compile tp tin nh phn elf trn vi x l ARM th phi ch nh b arm-elf chy trnh bin dch cho .-V version: Tham s version ch ra vic s dng GCC phin bn no. Tham s ny c ch khi c nhiu phin bn ca GCC c ci t. V d nu version l 4.0 th phin bn ca GCC c chn l 4.0Tham s -V v b cng c th c s dng theo cch -gcc-. ARM optionsOption m c nh ngha dnh cho kin trc my RISC-mthumb-interwork: Pht sinh code h tr tp lnh ARM v Thumb. Nu khng c option ny, 2 tp lnh trn khng th c s dng bn trong chng trnh. Mc nh cu hnh l mno-thumb-interwork, do khi chn mthumb-interwork c chn th s pht sinh ra lng code ln hn.-mcpu=name: Ch ra tn ca vi x l ARM. GCC s dng tn ny quyt nh tp lnh no c dng khi pht sinh ra hp ng. Tham s name c th l arm2, arm250, arm3, arm6, arm60, arm610, arm620, arm7, arm7m, arm7d, arm7dm, arm7di, arm7dmi, arm70, arm700, arm700i, arm710, arm710c, arm7100, arm7500

DebuggerInsight Gii thiuInsight l phin bn ca GDB c vit bng ngn ng thng dch Tcl/Tk b sung giao din ha ngi dng. Insight tch hp giao din ha y , gm nhiu ca s ring bit c cc thnh phn chun nh button, scrollbar, textbox to ra giao din d s dng. Mi ca s c ni dung v mc ch r rng, v c th enable hoc disable tng ci ring bit. Nhng ca s c th cha soure file, assembly ca hm hin ti S dng Insight C th bt u Insight bng vic chy file thc thi insight (v d: powerpc-elf-insight). Hoc bt u GDB vi option gdb w hoc gdb i=insight. Nu chy thnh cng th s c nhiu ca s pop up, bt u debug, nhn button Run. Nu mun s dng GDB bng command line th bt u GDB vi option l nw hoc insight i=console. Insight c tt c cc ca s debug chun:Console WindowSource WindowRegister WindowMemory WindowLocals WindowWatch WindowStack WindowThread/Process WindowFunction Browser WindowDebug Window Nhng lnh Tcl c to bi Insightgdb_cmd: gi lnh n gdb v tr v kt qugdb_sourcelines:

GDB Gii thiuGDB (GNU Project Debugger) cho php ngi dng thy c iu g din ra bn trong chng trnh khi n ang thc thi hoc mt chng trnh ang lm g ti thi im b treo.GDB c th lm 4 vic chnh gip ngi dng bt li: Chy chng trnh, thc hin chc nng no cn kim tra. m bo chng trnh dng ti iu kin no (breakpoint). Xem gi tr cc bin, vng nh, kim tra chuyn g xy ra khi chng trnh dng ti . Thay i cc thng tin chng trnh lm vic ng hoc kim tra cc iu kin mi. GDB c th g li cho cc chng trnh vit bng C, C++, Ada v Modula-2. Tm tt cch s dng GDB trn chip ARMCu lnh tng quan:gdb[-help][-nx][-q][-batch][-cd=dir][-f] [-b bps][-tty=dev][-s symfile][-e prog] [-se prog][-c core][-x cmds][-d dir] [prog[core|procID]]

GDB c bt u khi ngi dng g lnh gdb. Khi c bt u ri, gdb s c cc lnh t terminal cho n khi ngi dng tt i bng cch g lnh quit. C th run gdb khng c tham s hoc option. Nhng cch thng thng, bt u GDB vi 1 hoc 2 tham s, ch nh tn chng trnh thc thi nh l tham s:gdb program Ch nh tham s th 2 l process ID nu mun debug tin trnh ang chy.gdb program 1234: gn GDB vo process 1234 Mt s lnh gdb thng gp:break[file:]function: t breakpoint ti hm function (trong tp tin file).run[arglist]: bt u chng trnh vi danh sch cc tham s arglist.bt: backtrace: hin th stack print expr: hin th gi tr ca biu thc exprc: tip tc chy chng trnh (sau khi dng, v d dng ti breakpoint)next: Thc thi dng tip theo ca chng trnh (sau khi dng); b qua (step over) bt c li gi hm no trn dng.edit[file:]function: xem xt dng m chng trnh ang dnglist[file:]function: lit k ni dung ca hm function trong tp tin file.step: Thc thi dng tip theo ca chng trnh (sau khi dng); nhy vo (step into) bt c li gi hm no trn dng.help[name]: Hin th thng tin v lnh GDB c tn name, hoc thng tin chung v vic s dng GDBquit: thot GDBNewlibNewlib l th vin C c dng cho cc h thng nhng. Newlib l s kt hp ca nhiu th vin min ph nn c th s dng d dng trn cc sn phm nhng.Newlib ch c dng source, c th c compile trn nhiu vi x l v hot ng trn nhiu kin trc khc nhau.Download, ci t: http://sourceware.org/newlib/

CDT (C/C++ DEVELOPMENT TOOLING) Gii thiu CDTCDT l mt plug-in cho Eclipse, h tr ngi dng pht trin cc chng trnh C/C++, CDT c nh gi l C/C++ IDE m ngun m tt nht hin nay. Bao gm y cc thnh phn h tr son tho, debug v to ch mc; gip iu khin qu trnh bin dch mt cch linh ng khng ng. Nu khng mun t vit makefile, n s c to ra 1 ln v cp nht lin tc cho d n ca bn. Ta c th truy cp vo b bin dch GCC (GNU Compiler Collection) v cc ng dng GNU C/C++ khc trong phm vi CDT, ta cng c th tch hp mt s toolchain khc nu mun (m ngun m hoc khng).D n CDT (C/C++ Development Tools) nhm mc ch cung cp 1 mi trng pht trin C/C++ tch hp trn nn Eclipse. Cc tnh nng ca CDT: C/C++ Editor (cc chc nng c bn, syntax highlighting, code completion...) C/C++ Debugger (trnh g li, bao gm cc chc nng v cc hm APIs, dng GDB) C/C++ Launcher (chy chng trnh) Parser Search Engine Content Assist Provider Makefile generatorCDT hon ton min ph v m ngun m, c vit hon ton bng Java, CDT l 1 plug-in cho Eclipse.Giy php ca CDT l Common Public License

Hnh 41 Kin trc CDT tng qutNgun: http://wiki.eclipse.org/CDT:Presentations

Hnh 42 Kin trc CDT chi titNgun: http://wiki.eclipse.org/CDT:Presentations Cc gi chnh trong m ngun CDT org.eclipse.cdt.coreQun l cc hm, th vin dng chung cho h thng CDT bao gm cc gi c bn: resources, parser, formatter, errorparsers... org.eclipse.cdt.make.coreQun l cc hm, th vin s dng trong qu trnh bin dch cc chng trnh s dng makefile c sn, bao gm cc gi: makefile, scannerconfig(gom cc thng tin v d n: bin mi trng, ng dn....), messages...org.eclipse.cdt.make.uiQun l cc hm, th vin s dng trong vic xy dng giao din cu hnh bin dch cc chng trnh s dng makefile c sn, gm cc phn: dialogs, views, wizards, actions....org.eclipse.cdt.managedbuilder.coreQun l cc hm, th vin s dng trong vic xy dng cc chng trnh khng s dng makefile c sn, m trc tip s dng h thng builder c qun l bi CDT ( pht sinh ra makefile hoc dng internalbuilder);Bao gm cc gi chnh: buildmodel, buildproperties, scannerconfig, makegen, projectconverter, templateengine..org.eclipse.cdt.managedbuilder.gnu.uinh ngha cc toolchain, project, template, wizard.. s dng GNU trn cc mi trng, v d: cygwin, mingw, gcc...org.eclipse.cdt.managedbuilder.uiQun l cc hm, th vin s dng trong vic xy dng giao din gip cu hnh thng tin lin quan n org.eclipse.cdt.managedbuilder.core; v d: wizard, dialog, newproject....org.eclipse.cdt.uiQun l cc hm, th vin s dng trong vic xy dng giao din chnh ca CDT, bao gm wizard, editor, refactoring, search, buildconsole, autocorrection...org.elipse.cdt.debug.corenh ngha m hnh debug v cc thnh phn c bn ca mt m hnh debug: breakpoints, disassembly, sourcelookup, executables, events.nh ngha cc thnh phn c bn ca CDI (C/C++ Debugging Interface): model, eventsorg.eclipse.cdt.debug.uinh ngha cc thnh phn v m hnh giao din ngi dng debug. Cc gi chnh bao gm: actions, dialogfields, dialogs, command, editor, viewer, adapter, launch, preferences, propertypages, sourcelookup, views, disassembly, executables, memory, modules, signals, breakpointactions, breakpoints, .org.elipse.cdt.debug.mi.corenh ngha cc thnh phn c bn ca c ch debug mi (machine interface). Cc gi c bn bao gm: debugger, command, event, output, modelK tha cc thnh phn t org.elipse.cdt.debug.coreorg.eclipse.cdt.debug.mi.uinh ngha cc thnh phn cu thnh nn giao din ngi dng khi debug bng c ch mi (machine interface). Bao gm cc gi: actions, dialogfields, preferences, propertypages, console, console.actionsK tha cc thnh phn t org.elipse.cdt.debug.uiCDT DebuggerTo ra DebuggerKhi ngi dng click Debug, Eclipse s tm kim Debugger thng qua nh danh (ID) ca debugger.Khi Debugger bt u, Eclipse s kim tra mi trng sp chy debug c c h tr hay khng thng qua thuc tnh platform v cpu ca debugger. Nu c h tr, Eclipse s tip tc kim tra ch nh chy c c h tr hay khng thng qua thuc tnh modes. Nu c 3 thuc tnh trn u c h tr, Eclipse s tip tc tm phng thc createSession() trong mt lp implement ICDIDebugger2. Phng thc createSession s to ra mt i tng kiu ICDISession. i tng ny c CDT dng truy xut debugger. C 3 phng thc truy xut debugger quan trng l: getSessionProcess(): tr v tin trnh ca debugger ang chy getTargets(): tr v mng cc target ang c debug getEventManager(): tr v i tng qun l thm v hy cc listener.Targets, events v m hnh CDI (C/C++ Debugging Interface) Khi CDT gi getTargets(), session phi cung cp ICDITarget cho mi tin trnh ang c debug. ICDITarget s nhn cc lnh debug, sau dch v gi cho debugger. V d: khi ngi dng nhn Step hoc Resume, CDT gi phng thc stepOver() hoc resume() ca ICDITarget. Ngoi nhim v gi cc lnh n cho debugger, ICDITarget cn c nhim v chuyn kt qu tr v ca debugger cho bt k i tng no mun nhn thng qua cc s kin ca CDI.V d: khi mt i tng CDI, chng hn RegisterView mun nhn c cc s kin ca debugger, th i tng ny s gi phng thc getEventManager() truy xut vo ICDIEventManager ca session. Sau i tng ny s gi phng thc addEventListener() thm chnh n nh l mt listener. Khi debugger c cc kt qu tr ra, Target s gi Manager, Manager s s dng phng thc handleDebugEvents() cnh bo n tt c cc listener. CDI cung cp mt tp chun cc ICDIEvent. Mi kt qu tr v ca debugger hoc mi thay i ca debugger u phi c ng gi thnh cc s kin sau: ICDIBreakpointMovedEvent: xy ra khi ngi dng t breakpoint mi. ICDIChangedEvent: xy ra khi gi tr ca bin, thanh ghi hoc mt phn ca b nh thay i. ICDICreationEvent/ICDIDestroyedEvent: xy ra khi mt i tng c to ra hoc b hy. V d: i tng breakpoint ICDIExitedEvent: xy ra khi chng trnh hon tt ICDIRestartedEvent/ICDIDisconnectedEvent: xy ra khi target c restart hoc ngt kt ni. ICDIExecutableReloadedEvent: xy ra khi chng trnh c load li, chng hn sau khi build. ICDISuspendedEvent/ICDIRestartedEvent/ICDIResumedEvent: xy ra khi vic thc thi b dng li, khi ng li hoc tip tc.Trong cc s kin trn th ICDIChangedEvent c bit quan trng v s kin ny xy ra mi khi Target c s thay i. Mi i tng c th thay i ca Target c i din bi mt ICDIObject v cc i tng ny hnh thnh m hnh k tha CDI Model. Cc i tng ny gm c ICDIRegister, ICDIVariable, ICDIMemoryBlock, ICDIThread ICDITarget l nt gc v cha cc i tng khc ca m hnh CDI. Mi i tng ICDIObject phi implements phng thc getTarget().

Figure 1 M hnh CDT DebuggerCDI breakpoint v watchpointBreakpoint v watchpoint l hai cch quan trng ca vic iu khin debugger. Breakpoint bt debugger dng li khi n v tr c t breakpoint hoc khi gp mt iu kin no . Cn Watchpoint bt debugger dng li khi mt bin c ch nh no c c hoc ghi. Ngi dng c th to ra hoc xa mt breakpoint v watchpoint thng qua mt th hin ca ICDIBreakpointManagement. Interface ny cung cp cc phng thc nh setLineBreakpoint(), deleteBreakpoints() v setWatchpoint(). Plug-in org.eclipse.debug.core s cung cp interface IBreakpointManager qun l cc breakpoint, c th gi i tng IBreakpointManager bng vic gi hm DebugPlugin.getDefault().getBreakpointManager().Pht trin CDT Plug-in0. Managed Build SystemNhng ngi pht trin C/C++ chia ra lm nhiu nhm khc nhau. Mi nhm s dng cc cng c khc nhau, tin trnh m h tun th khc nhau v mc h tr h mong mun t nhng mi trng m h pht trin cng khc nhau. Do , CDT cung cp mt framework tch hp tch hp nhng cng c vo Eclipse v h thng qun l build l mt phn ca framework. H thng qun l build ca CDT c cu hnh s dng GCC t pht sinh ra Gnu makefile. T build thnh file thc thi v cc file th vin.

Hnh 43 M hnh Build DefinitionNgun: http://help.eclipse.org 1. Tng quan v Managed Build SystemH thng Managed Build System bao gm nhiu thnh phn tng tc vi nhau bin dch 1 project. C 3 thnh phn bn trong: giao din ngi dng, thnh phn pht sinh file c trch nhim pht sinh chnh xc file h tr bin dch project, v thnh phn phn tch (parser).Thnh phn bn ngoi bao gm: ngi dng cui (l ngi tng tc vi m hnh bin dch thng qua giao din ngi dng) v Tool intergrator (l ngi cung cp cc nh ngha cho m hnh bin dch). Biu di y ch ra tp hp cc mi quan h c bn gia cc thnh phn.

Hnh 44 Tng quan v Managed Build System Ngun: http://www.eclipse.org External Users: Ngi dng tng tc vi cc thnh phn giao din. Giao din bao gm 1 new project wizard c h thng bo cho bit loi project no s c to ra. Khi project mi c to, trang property ca project s s dng thng tin trong h thng bin dch hin th ra giao din. Ngi dng c th thay i thng tin lin kt ti cc tool thng qua trang property v h thng build c nhim v lu tr cc thay i ny gia cc phin lm vic. Thnh phn th 2 ca External Users l Tool integrator. Tool integrator l ngi cung cp thng tin v tool-chain ca h cho plug-in manifest. Internal Users: C 3 thnh phn bn trong ca h thng qun l build. Th nht l build file generator c nhim v to ra file build ng n cho project da trn cc tool v nhng ci t cho project c nh ngha trong h thng build. Th hai l CDT parser da vo h thng build cung cp cc ng dn v nhng k t tin x l. Th 3 l thnh phn giao din ca h thng build, thnh phn ny da vo m hnh build to ra giao din hin cho ngi dng v lu li nhng ci t ca h.Managed Build System s dng c ch Toolchain bin dch chng trnh, khi ngi dng to mi 1 project th ngi dng cn phi chn Toolchain s dng bin dch. Project typeMi projectType i din cho mt loi project, projectType tch hp sn nhiu tool v ng vai tr ging nh template cho cc project. projectType cha mt hoc nhiu loi configuration, ngi dng c th nh ngha loi configuration hoc s dng vi loi mc nh c sn.Mi projectType c mt nh danh duy nht, Build model s da vo nh danh ny phn bit cc nh ngha projectType m n tm thy.Mt projectType c th phi nh ngha t nht mt configuration. Mt configuration phi nh ngha (hoc k tha) t mt b toolchain to ra c tp tin output.Cc thuc tnh quan trng ca projectType:id: nh danh duy nht ca projectTypename: tn ca projectType c dng hin th trn giao din ngi dng.superClass: nh danh ca mt projectType khc m projectType ny k tha.isAbstract: nu projectType ny c nh ngha vi mc ch khng phi ngi dng s dng, m c dng cc projectType khc k tha, th isAbstract nn c thit lp true. Abstract projectType s khng hin th trn giao din ngi dng v cc projectType k tha t abstract projectType s c cng cu hnh nh abstract projectTypeprojectEnvironmentSupplier: tn mt lp implements lp IProjectEnvironmentVariableSupplier cung cp cc bin mi trng m project h trCu hnh (Configuration)Mt thnh phn Configuration th hin s thit lp trong m hnh ngi dng. Mt b tch hp cc cng c nh ngha nn cc cu hnh mc nh. Cc cu hnh ny l con ca projectType v chng cung cp mt template cho cc cu hnh thm vo project, nhng cu hnh ny c lu trong file .cdtbuild. Mt projectType phi c t nht mt cu hnh mc nh v mt project phi cha t nht mt cu hnh.Configuration cha mt nt con kiu toolchain. Toolchain ny m t cch m ti nguyn ca project c bin i thnh kt qu build tng trng. Configuration chu trch nhim gi li tn ca tp tin c build cui cng. Ngi dng s cu hnh tn ca build artifact trn giao din, thuc tnh artifactName v artifactExtension. Configuration c th cha mt hoc nhiu resourceConfiguration. Mt s thuc tnh c bn ca Configuration:id: nh danh duy nht ca configurationname: tn ca configuration dng hin th trn giao dinparent: nh danh ca configuration khc m configuration ny k tha.artifactExtension: kt qu build s c ui l artifactExtension, v d: .exe hoc .elfToolchainToolchain bao gm 1 danh sch c th t cc tool, 1 tool c cc thuc tnh ring quy nh cch thc thc thi 1 lnh t command line, c th coi tool nh l 1 lnh bin dch n l. Cc option trong tool c th l configuration, l tham s ca lnh; hoc l inputType (u vo), outputType (u ra). Cc toolchain, tool, option ca tool (hoc toolchain) u c th k tha c. InputType v outputType l 2 option quan trng nht ca 1 tool. Mt tool c th c 1(hoc 1 danh sch) cc inputType v c 1(hoc 1 danh sch) cc outputType. InputType thng l cc file u vo cho tool, v d nh l file.c (trong tool ARM GCC C Compiler).OutputType thng l cc file u ra ca 1 tool, v d nh file.o (trong tool ARM GCC C Compiler).Output ca tool ny c th l input cho tool kia.Trong h thng Managed Build System th cc inputType v outputType thng c ch nh bi 1 build variable; h thng s da vo build variable xc nh mi lin kt gia cc inputType v outputType. Cc inputType v outputType c cng build variable th outputType ca tool ny s l inputType ca tool kia.V d outputType ca tool ARM GCC C Compiler s l inputType ca tool ARM GCC C Linker v c chung build variable l OBJS.Toolchain bao gm 1 danh sch c th t cc tool, tuy nhin ch c 1 vi tool c ch nh l target tool, da vo target tool ny Managed Build System s to ra danh sch c th t cc tool s c thc thi, da trn inputType v outputTye ca tng tool. Mt toolchain c th c secondaryOutputs, l danh sch cc outputType ca cc tool. Cc output ny s c to ra bng cch gi cc tool tng ng sau khi cc tool trong target tool c thc thi.Target platformTargetPlatform i din cho cc kin trc m kt qu output ca mt toolchain c th trin khai c. S dng hai thuc tnh osList v archList ch ra tn ca h iu hnh v kin trc m targetPlatform ny h tr. Mt s thuc tnh ca targetPlatform:id: nh danh duy nht ca targetPlatformname: tn ca targetPlatform s c hin th trn giao dinsuperClass: nh danh duy nht ca targetPlatform khc m targetPlatform ny k tha.osList: lit k nhng h iu hnh m targetPlatform h tr. Nu osList khng c ch nh hoc ch nh l all, th targetPlatform ny h tr tt c cc h iu hnh.archList: lit k tt c cc kin trc m targetPlatform h tr. Nu tham s ny khng c ch nh hoc ch nh l all th targetPlatform h tr tt c cc kin trc.InputTypeInputType l nt con ca nt Tool, inputType ch ra danh sch cc loi input ca mt tool. Mt Tool c th c nhiu InputType v cc inputType ny c th tham chiu n cc content type ca Eclipse. Content type m t mt s im (v d:phn m rng ca tp tin) nhn dng mt loi tp tin no . CDT nh ngha sn mt s content type:cSource .c cHeader .h cxxSource .C,.cpp,.cxx,.cc cxxHeader .hpp,.hh,.hxx asmSource .asm,.s objectFile .o,.obj executable .exe staticLibrary .lib,.a sharedLibrary .dll,.so,.dylib Mt s thuc tnh ca inputType:id: nh danh duy nht ca inputTypesuperClass: nh danh ca inputType khc m inputType ny k tha.sourceContentType: nh danh ca Eclipse content type m m t loi input ny. Nu c hai thuc tnh sources v thuc tnh sourceContentType u c nh ngha th sourceContentType s c s dng nu n c nh ngha trong Eclipse.sources: danh sch cc ui ca tp tin m tool ny h tr. dependencyContentType: nh danh ca Eclipse content type ch ra nhng tp tin ph thuc. Nu c 2 thuc tnh dependencyContentType v dependencyExtensions u c ch nh th dependencyContentType s c s dng nu n c nh ngha trong Eclipse.dependencyExtensions: danh sch cc ui ca tp tin c s dng bi tp tin l thucdependencyCalculator: tn ca lp cung cp s tnh ton vic l thuc gia cc source file input.OutputTypeOutputType l nt con ca nt Tool. OutputType m t danh sch cc loi tp tin output c to bi tool. Mt Tool c th c nhiu OutputType v cc outputType ny c th tham chiu n cc content type ca Eclipse. Mt s thuc tnh ca OutputType cung cp c ch h thng qun l build quyt nh tn ca tp tin output. Mt s c ch quyt nh tn ca tp tin output:1. Nu l target tool trong tool-chain v l OutputTye chnh, th s dng artifact name v extension m ngi dng nh ngha lm tn tp tin output.2. Nu thuc tnh option c ch nh th s dng gi tr ca option.3. Nu thuc tnh nameProvider c ch nh th gi nameProvider v s dng tn c tr v.4. Nu thuc tnh outputNames c ch nh th s dng gi tr ca thuc tnh ny.5. S dng thuc tnh namePattern cu to nn tn ca tp tin output t tp tin input.Mt s thuc tnh ca outputType:id: nh danh duy nht ca outputTypesuperClass: nh danh ca outputType khc m outputType ny k tha.outputs: Phn ui mc nh ca kt qu output.buildVariables: Bin c s dng trong tp tin build i din cho danh sch cc file output.OptionNt option i din cho cc la chn option trong m hnh ngi dng. Cc option c s dng nh l cc i s dng lnh s c gi n cc tool trong sut qu trnh build. Ngi dng tng tc vi m hnh build thng qua giao din thit lp gi tr ca cc option. Mi option phi c mt nh danh duy nht. Thuc tnh name dng m t option cng phi c ch nh. Option c th c t chc thnh danh mc gip cho giao din d qun l hn. Nu mt danh mc cc option c nh ngha cho mt tool v option c hin th nh l mt phn ca danh mc th phi ch nh thuc tnh category ca option l nh danh ca danh mc.Enumerate Option ValueMt s option cho php ngi dng c mt la chn duy nht t danh sch cc chn la. V d: la chn mc ti u ha cho compiler. Enumerate Option Value thng c dng nh ngha mt option no l danh sch cc s la chn. Mi thnh phn ca Enumerated option u c thuc tnh name s c hin th trn giao din ngi dng v c thuc tnh command c s dng lm option ca command line gi n tool trong qu trnh bin dch. Hp nht Standard v Managed Build System trong CDT 4.0 CDT 4.0, Standard v Managed Build Systems c hp nht thnh CDT Build System. iu ny cho php tt c cc c im ca loi hnh build Standard c th c s dng cho khi build Managed v ngc li. iu ny cng gip cung cp mt giao din ngi dng v API cho cc ci t build.Theo quan im ca API, khng c s khc bit chnh gia Standard v Managed. Xt theo h thng build, s khc bit gia Standard v Managed l lc build ch Managed th c pht sinh makefile, trong khi ch build Standard th khng pht sinh makefile, v th ngi dng cn cung cp makefile.Cc toolChain, tool u c h tr thuc tnh supportsManagedBuild ch nh liu Managed Build c c h tr hay khng. Mc nh l c h tr.

Project Template EngineCDT 4.0 c cung cp framework v extension point cho php ngi dng thm cc project mu vo CDT. Cc project mu ny c s dng bi New Project Wizard pht sinh ra cc project c sn soure file v thng tin cu hnh. Mt s phn ca source file v thng tin cu hnh c th l thuc vo thng tin m ngi dng nhp vo wizard.C 2 phn chnh c bn to ra template l vit mt tp tin template (nh dng XML) v thm n vo mt plug-in (plug-in ny c k tha t extension point ph hp).Cch to ra mt file templateTemplate l mt phn quan trng ca Eclipse. Template h tr pht sinh t ng nhiu loi giao din ngi dng c h tr bi Eclipse framework. Nhng template ny thng c cp n nh l project template khi chng c s dng to ra cc project mu. V d: c th nh ngha mt template to ra giao din n gin h tr cu hnh bin dch da trn ng dng EXE.Project template l nhng file XML n gin, tun th theo cu trc c nh ngha trong lc TemplateDescriptorSchema.xsd. Template nh ngha cc d liu u vo v cc tin trnh (process) cn thit to mt project. D liu u vo c th l tp tin, hoc cc ci t Nhng tin trnh (process) nh ngha cn phi lm g vi d liu u vo to ra mt loi project no .New Project wizard s lit k tt c cc template c th c. Khi ngi dng chn mt template t danh sch template, plug-in Template Engine s x l template c chn. Plug-in s pht sinh ra cc trang wizard con ty thuc vo template.Cu trc project template:

Nt gc ca project template l c cha cc thuc tnh m t file template:type: ch nh loi template. Nu l project template, type nn l ProjTempl.version: mt con s ch ra phin bn chnh ca templatesupplier: tn ca nh cung cp templaterevision: con s ch ra phin bn nh ca templateauthor: tn tc gi ca templateid: nh danh cho template, nh danh ny l duy nht.label: m t ngn gn mc ch ca template. V d: nu ang nh ngha mt template cho ng dng HelloWorld EXE, label c th l HelloWorld EXE Application.description: m t template, c hin th i vi ngi s dng khi h chn mt template t danh sch cc template.help: ch nh tn tp tin hng dn c nh dng HTML cho template.preview-icon: tn tp tin GIF hoc JPG c dng lm icon ca template.Template gm c cc nt con: property-groupNt property-group i din cho 1 trang wizard trong New Project Wizard.Nt ny lit k tt c cc vng c hin th ngi dng nhp d liu vo, s dng nt property thc hin iu ny.V d: c th s dng nt ny lit k tt c cc field input c hin th trong trang Project Directories ca New Project wizard.property-group cha nhiu nt con l property ch ra tt c cc vng cn nhp vo trong mt trang wizard. property-group gm c cc thuc tnh sau:id: nh danh ca property-group.label: tn ca property-group, c hin th nh l tiu ca trang wizard ca wizard page c generate bi Template Engine.description: m t ngn gn property-group, c hin th bn di tiu ca trang wizard.type: ch ra loi wizard, c nhng loi wizard: PAGES_ONLY, PAGES_TAB, PAGES_TREE, PAGES_TREE_TREE, PAGES_TAB_TREEhelp: ch nh tn tp tin hng dn c nh dng HTML cho property-group. branding-icon: tn tp tin GIF c dng lm icon ca property-group. Nt con property ca property-groupNt property c cu trc nh sau:

Danh sch cc thuc tnh ca nt property:id: nh danh duy nht cho propertylabel: tn ca property, c hin th nh l label trong trang wizard k bn field input.description: m t ngn v property, c hin th khi r chut ln trn label.type: loi property. Mt s loi property: input: textbox multiline: multiline input box. select: drop-down combobox. boolean: chekbox stringlist: listbox. speciallist: listbox vi cc button thm v xa cc item. browse: hin th km theo nt Browse ngi dng c th chn tp tin hoc th mc.

pattern: Ch nh nhng mu gi tr hp l c th nhp v c.default: ch ra gi tr mc nh cho property.size: kch thc ca property, thuc tnh ny ch c s dng khi loi property l input hoc multiline.hidden: Ch nh liu ngi dng c th nhn thy property ny hay khng? Gi tr c th c : true/false.persist: ch nh liu property c nn khng khng gi gi tr ca n hay khng? Gi tr c th c: true/false.

Nu loi property l select hoc stringlist, c th thm cc nt tn . Khng gii hn s item c lit k. C php ca 1 item:

name: nh danh ca item label: label c hin th cho ngi dng. selected: liu item c c chn mc nh hay khng? Gi tr true hoc false.

processNt process nh ngha tin trnh ca vic to ra project trong workspace ca Eclipse da trn nhng gi tr m ngi dng nhp vo.V d: nu ngi dng ch nh include l th mc cha tt c cc file header, th process s to ra th mc vi ci tn l include v chp tt c cc file header vo th mc .Nt process nh ngha tin trnh s xy ra to project da trn nhng gi tr input nhn c. C php ca nt process:

Nt process nh ngha tin trnh n. Mt tin trnh ging nh procedure vi 1 tp hp cc tham s. Ni cch khc, nt process nh ngha procedure. cn ch ra tt c cc tham s m process cn. C th ch nh loi process s dng thuc tnh type. V d: thm file vo project c th s dng loi process l org.eclipse.cdt.templateengine.AddFiles.Nt process c th c cc nt con: simple: Tham s n gin kiu chui. Trong project template, cn ch ra tn v gi tr ca tham s:

simple-array: Tham s n gin kiu mng cc chui. Cn ch ra tn v gi tr, simple-array c s nt con khng hn ch

complex: Tham s phc tp, tham s ny gom nhm c tham s kiu simple, simple-aray v complex li vi nhau.

complex-array:Tham s kiu mng m mi phn t c kiu complex.

Cc loi processMi loi process nh ngha cc tham s cn thit hon thnh th tc ca process . V d: copy 1 file th cn thng tin v file ngun v file ch, thng tin ny c nh ngha nh l tham s ca process copy.Plug-in Template Engine cung cp mt tp hp cc loi process s dng extension point org.eclipse.cdt.templateengine.processType. Ngi dng c th s dng nhng loi process ny m t cc process trong template. V d: ngi dng c th m t process copy bng vic cung cp tn ca th mc ngun v th mc ch.Cc loi process cung cp bi Template Engine NewProjectProcess ny nh ngha cc tham s cn to mi mt project C/C++ v cung cp nh danh y cho lp, cc tham s ca process ny l:name: ch nh tn ca project, s dng tham s kiu simpleprojecttype: ch nh loi project, s dng tham s kiu simplelocation: ch nh v tr ca project, s dng tham s kiu simpletargettype: ch nh loi tp tin nh phn, s dng tham s kiu simpleconfigs: ch nh cu hnh build cho project, s dng tham s kiu simple NewManagedProjectProcess ny nh ngha tt c cc tham s cn to mi mt managed project (managed project l project vi makefile c sn, Eclipse s qun l makefile ny v gi makefile ny khi build)v cung cp nh danh y cho lp, cc tham s ca process ny:name: ch nh tn ca managed project, s dng tham s kiu simpleprojecttype: ch nh loi managed project, s dng tham s kiu simplelocation: ch nh v tr ca managed project, s dng tham s kiu simpletargettype: ch nh loi tp tin nh phn, s dng tham s kiu simpleconfigs: ch nh cu hnh build cho managed project, s dng tham s kiu simple AddFilesProcess ny nh ngha tt c cc tham s cn thm mt tp tin vo project, gm c cc tham s:projectname: tn ca project m tp tin c copy vo, s dng tham s kiu simplefile: dng include thng tin lin quan n source, target v replaceable, dng element

CreateSourceFolderProcess ny nh ngha tt c cc tham s cn to mt th mc cha source file trong project, gm c cc tham s:projectName: ch nh tn ca project m tp tin c thm vo, s dng th path: ch ng dn n th mc, ni m th mc c to ra, s dng th

SetMBSStringOptionValueProcess ny nh ngha tt c cc tham s cn to ra gi tr option kiu chui projectName: tn ca project m chui option c to, tham s ny kiu resourcePaths: ch nh ng dn n cc ti nguyn, tham s ny s dng kiu , mi resource path c to ra bi th , cha cc tham s kiu sau: id: nh danh ca resource path value: gi tr ca resource path. path: ng dn ca resource.

AppendMBStringOptionValueProcess ny nh ngha tt c cc tham s cn thit thm mt gi tr option kiu chui vo mt option kiu chui c sn, cc tham s ging vi SetMBStringOptionValue.

Cch ng k template vi EclipseKhi to xong template th cn ng k template vi Eclipse. Cc bc ng k nh sau: To mt plug-in t Eclipse workbench. To th mc, sau chp template v tt c ti nguyn cn to project vo th mc . V d: chp cc file header, source To k tha t extension-point org.eclipse.cdt.core.templates Sau click chut phi vo extension va thm vo v chn New->template. Template c mt s thuc tnh nh sau:id: nh danh ca templatelocation: ch ra ng dn n tp tin template nh dng xmlprojectType: loi project

XY DNG H THNG ARMSTUDIO CHO CC VI X L H ARMGii thiu h thng v nhu cu xy dng ARMStudioARMStudio IDE c xy dng da trn CDT. CDT l mi trng pht trin tch hp C/C++ hng u, tuy nhin CDT h tr pht trin cc phn mm nhng cn thp. Do , ngi dng mun pht trin cc chng trnh trn chip ARM s dng CDT th hu nh phi t cu hnh v lm mi th nh: bin dch, lin kt, np chng trnhDo , ARMStudio c xy dng vi mc ch gip ngi dng xy dng cc ng dng C/C++ d dng hn v trnh c nhng li xy ra trong qu trnh bin dch th cng. ARMStudio thc hin cc bin i trn nn CDT bao gm gi li cc chc nng cn thit v sa i, m rng thm cc chc nng khc cho ph hp vi yu cu h tr lp trnh C/C++ trn chip ARM. ARMStudio l mi trng pht trin tch hp (IDE) h tr pht trin cc chng trnh C/C++ chy trn chip h ARM7, ARM9 v Cortex-M3. ARMStudio bao gm mt tp hp cc plug-in cho Eclipse c xy dng trn nn Window v Linux v h thng ARMStudio h tr y cc chc nng : ARMStudio c cc chc nng ca mt mi trng pht trin tch hp nh: cho php chnh sa, build chng trnh, np chng trnh ln board, debug thng qua JTAG v GDB Server. Tch hp Toolchain t GNUARM c th bin dch c cc tp tin c vit bng C/C++ hoc Assembler. H tr nhiu vi x l nhng thuc cc h ARM7, ARM9, Cortex-M3 v c th chy c trn nhiu h iu hnh khc nhau nh: Window, Linux. M ngun m v hon ton min ph cho cng ng.H thng ARMStudio gm 3 phn chnh: phn bin dch, phn giao din v trnh g li. Cc phn ny u s dng cc extension point m rng, thm cc tnh nng vo Eclipse v CDT. Phn bin dch l h thng toolchain v cc tool c cu hnh s dng b bin dch GNUARM v c nhim v to mt mi trng cho ngi dng lp trnh, sa li, build Phn giao din l h thng cc dialog, cc ca s, editor, cc trang gip ngi dng thao tc v cu hnh cc d n ARM d dng hn. ARMStudio h tr trnh g li gip ngi dng c th kim tra xem iu g ang xy ra bn trong chng trnh khi n ang thc thi hoc chng trnh ang lm g ti thi im b treo.Cc chc nng ca h thng ARMStudio Module Bare Project H tr cac d an chay trc tip trn chip Quan ly cac file ma ngun H tr ngn ng Assembly va C trong cung mt d an H tr cu hinh tham s bin dich cua cac chip thuc ho ARM7, ARM9, Cortex-M3 Module Build Configuration T ng thit t tham s va kich ban bin dich Gn cc toolchain vo Eclipse: GNUARM cho Linux v Window Module Programmer Nap chng trinh a bin dich dang hex file vao chip H tr nap bng JTAG hoc ISP H tr cac dong chip ARM7, ARM9, Cortex M3 cua NXP Module Debug GUI H tr debug bng giao din GUI t breakpoint Cho phep xem cac gia tri bin, thanh ghi, b nh cua chip Cho phep kim soat program flow, next step, goto v.v Module Internationalize H tr a ngn ng Chc nng ca cc plug-in trong h thng ARMStudiovn.edu.hcmuns.selab.debug.coreTo ra debugger, kim tra cc iu kin nh platform, cpu, mode c c h tr chy debug hay khng. Sau , to ra session CDT truy xut debugger ly cc thng tin v tin trnh chy debug, thng tin v target v cc thng tin qun l s kin.Ngoi ra, plug-in ny cn c cc chc nng nh: nh ngha cc lp nhn cc lnh debug, sau bin dch lnh v gi cho debugger. X l cc s kin v breakpoint, bin, thanh ghi ..v s kin khi cc gi tr thay i. Package vn.edu.hcmuns.arm.debug.core Package vn.edu.hcmuns.arm.debug.core.copied Package vn.edu.hcmuns.arm.debug.core.launch Package vn.edu.hcmuns.arm.debug.core.launch.cygwin Package vn.edu.hcmuns.arm.debug.core.preferences Package vn.edu.hcmuns.arm.debug.core.sourcelookup Package vn.edu.hcmuns.arm.debug.core.sourcelookup.cygwinvn.edu.hcmuns.selab.debug.uiPlug-in ny bao gm cc lp vi chc nng l to ra giao din ARM Launch Configuration cho php ngi dng cu hnh cc thng tin debug. Cc thng tin c th cu hnh l: chn tp tin thc thi, chnh sa cc debug option Cc thng tin ny s c lu vo mt i tng v c gi cho debugger khi debug session bt u. Package vn.edu.hcmuns.selab.arm.debug.uiTrc khi mt ng dng ca Eclipse c th debug c th ngi dng phi chn cc thng s cu hnh chy. Cc thng s ny c c bng cch to mi mt cu hnh chy (new launch configuration). Khi to mi giao din s hin ra v ly thng tin t ngi dng, giao din ny gi l launch configuration tab group, nhm ny gm cc tab: Tab Main: cha tn project v tp tin thc thi Tab Commands: cha cc lnh command line Tab Debugger: cha tn loi debugger, tp lnh, protocol Tab Debug Configuration: chn loi debug v thit lp cc tham s v gi trvn.edu.hcmuns.selab.arm.target.mcb23xxnh ngha template mu cho nhiu loi chip khc nhau thuc cc h ARM7, ARM9 v Cortex-M3. Cc template mu ny u c th c s dng v np xung board ngay sau khi c to. Ngoi ra, trong project mu ngi dng cn c h tr t cu hnh b nh Stack, Heap v xung nhp ng h Th mc templates: mi th mc con trong th mc templates cha cc project mu ng vi tng loi chip. Mi project gm c tp tin template.xml, tp tin ny c plug-in Template Engine dng pht sinh giao din cho project mu, v cc tp tin khc nh: template.properties, tp tin startup (.s), linker script (.ld) v main.c.vn.edu.hcmuns.selab.arm.uinh ngha cc hm v class s dng trong qun l editor, perspective, wizard.. v cc dialog lin quan vi cc chc nng nh: Cung cp giao din ca s h tr son tho vn bn theo nh dng assembler (.s) hoc linker script (ld) vi cc chc nng: chnh sa ni dung, save, save as, hightlighting, outline, refactoring Thc hin vic phn tch 1 file linkerscript (.ld), bao gm thng tin v DataAddress, DataLength, CodeAddress v CodeLength. Thc hin vic phn tch 1 file assembler (.s), bao gm thng tin v StackSize v HeapSize...nh ngha thng tin h tr qun l layout ca eclipse, cha cc class h tr xy dng 1 propertypage v thm propertypage vo mc Properties ca project.vn.edu.hcmuns.selab.arm.corenh ngha cc hm v class c bn, s dng cho ton h thng. Bao gm: cc class, interface qun l thng tin cu hnh h thng: AbstractSettings.java, GeneralSettings.java, ISettings.java v cc tool nh ngha cc hm h tr trong qu trnh hot ng ca h thng.vn.edu.hcmuns.selab.tool.fmnh ngha cc hm, th vin h tr tng tc gia h thng v chng trnh FlashMagic, gip np chng trnh c bin dch vo chip ARM. Bao gm cc lp vi cc chc nng: h tr tng tc vi FlashMagic bng commandline, h tr FlashMagic np chng trnh vo chip, thm mi mt item vo contextmenu v mainmenu ca chng trnh, nh ngha cc exception c tr v t FlashMagic.vn.edu.hcmuns.selab.arm.managedbuilder.gnunh ngha cc hm, th vin h tr cu hnh thng tin bin dch; gm c thng tin v toolchains, builders. Plug-in ny bao gm cc lp v hm h tr cc chc nng: Tm kim thng tin v GCC, GNUARM v phn tch thng tin tr v H tr cho GNUARM toolchain trn windows. Bao gm: cc lp gip ly cc bin mi trng cung cp cho toolchain, h tr kim tra s tn ti ca GNUARM trong h thng, h tr thm cc tham s bin dch cho commandline trong ch managedBuild (bin dch khng dng makefile c sn) v h tr ly v ng dn ci t ca GNUARM trong h thng.vn.edu.hcmuns.selab.arm.managedbuilder.gnu.uinh ngha cc hm, th vin h tr ng k s dng toolchains vo h thng, hin th trn cc New Project Wizard v h tr thm item "Empty ARM Project" vo danh sch Template Project ca CDT M t qu trnh xy dng h thngH thng ARMStudio