You are on page 1of 63

dce

2010

H iu hnh T-kernel
Tng quan v h thng Lp T-Kernel Lp cc chng trnh ng dng Lp T-Monitor Bin dch v lin kt chng trnh chy trn T-Kernel Cu trc mt trnh ng dng v cc hm qun l tc v Qun l thit b v giao tip qun l thit b Load Bitmap Keyboard/Pointer Device Cc hm qun l s kin

BK
TP.HCM

dce

2010

Tng quan h thng T-kernel

3 thnh phn chnh


T-kernel Operating System T-kernel System Manager T-kernel Debugger Support
Data Communication and Computer Networks 2008, Dr. Dinh Duc Anh Vu 2

dce

2010

T-Kernel/OS
Hm iu khin task Hm giao tip gia cc task Hm qun l b nh Hm qun l cc Exception/interrupt Hm qun l thi gian Hm qun l Subsystem

Embedded system

2010, Phan Dinh Khoi

dce

2010

T-Kernel/SM
Hm qun l b nh ca h thng Hm qun l khng gian a ch Hm qun l cc thit b Hm qun l cc Interrupt Hm h tr truy xut I/O Hm qun l ngun Hm qun l cc thng tin cu hnh ca h thng
2010, Phan Dinh Khoi 4

Embedded system

dce

2010

T-Kernel/DS
Hm tham kho cc trng thi bn trong ca Kernel Trace

Embedded system

2010, Phan Dinh Khoi

dce

2010

Lp cc chng trnh ng dng


Phn mm Monitor-based
Chy trong mi trng khng c MMU S dng tt c ti nguyn phn cng ngoi tr ti nguyn T-Monitor ang s dng Khng s dng cc chc nng ca T-Kernel Ch yu test phn cng, debug firmware

Phn mm T-Kernel-based
Chy trong mi trng c s dng MMU Thng tr trong b nh h thng c ti bi lnh lodspg Gii phng khi b nh bi lnh unlspg Phn ln chng trnh ng dng dng ny

Phn mm process-based
Chy dng T-Kernel Extension process Khng trc tip s dng cc hm ca T-Kernel
Embedded system 2010, Phan Dinh Khoi 6

dce

2010

Lp ng dng

Embedded system

2010, Phan Dinh Khoi

dce

2010

T-Monitor
Chng trnh gim st c bn, thng tr trong ROM Cung cp cc hm
H thng
Khi to phn cng, khi ng h thng

Debug
Truy xut b nh, thanh ghi, I/O Disassembly Breakpoint, trace

H tr chng trnh
Embedded system 2010, Phan Dinh Khoi 8

dce

2010

T-Monitor: hm h thng
Khi to phn cng
Khi ng cc phn cng c bn khi boot Chn on li phn cng

Khi ng h thng
Tm a boot hoc boot t ROM Ch lnh nhp nu h thng ang ch khi ng monitor

iu khin exception/interrupt/trap
Nm gi bng vector
Embedded system 2010, Phan Dinh Khoi 9

dce

2010

Bin dch v lin kt chng trnh T-Kernel


Cu trc th mc

Embedded system

2010, Phan Dinh Khoi

10

dce

2010

Bin dch v lin kt chng trnh T-Kernel


Cu trc th mc

Embedded system

2010, Phan Dinh Khoi

11

dce

2010

Bin dch v lin kt chng trnh T-Kernel


Cu trc th mc

Embedded system

2010, Phan Dinh Khoi

12

dce

2010

Bin dch v lin kt chng trnh T-Kernel


Makefile
Cng c trnh bin dch li file m ngun khng c thay i Install/uninstall/configure chng trnh Xy dng makefile i khi rt phc tp, tng t nh vit 1 chng trnh Trn T-engine ta ch cn chnh sa mt makefile c sn ph hp vi chng trnh ng dng ca mnh

Embedded system

2010, Phan Dinh Khoi

13

dce

2010

Bin dch v lin kt chng trnh T-Kernel


Cu trc Makefile

Embedded system

2010, Phan Dinh Khoi

14

dce

2010

Mt s kiu d liu nh ngha trong T-Kernel

Embedded system

2010, Phan Dinh Khoi

15

dce

2010

Mt s kiu d liu nh ngha trong T-Kernel

Embedded system

2010, Phan Dinh Khoi

16

dce

2010

Mt s kiu d liu nh ngha trong T-Kernel

Embedded system

2010, Phan Dinh Khoi

17

dce

2010

Cu trc chng trnh ng dng

Embedded system

2010, Phan Dinh Khoi

18

dce

2010

Cu trc chng trnh ng dng

Embedded system

2010, Phan Dinh Khoi

19

dce

2010

Khi nim
task
n v lun l c bn ca mt chng trnh ang thc thi Chng trnh c 1 task thc thi tun t Chng trnh c 2 task tr ln th cc task thc thi song song Mi task c u tin ban u v u tin hin ti Mi task c 2 vng stack: stack h thng v stack ngi dng

Dispatcher
Chuyn i s thc thi gia cc task

Scheduler
Quyt nh task no s c thc thi k tip Hin thc trong phn x l system call hay trong dispatcher
Embedded system 2010, Phan Dinh Khoi 20

dce

2010

Khi nim
Cc trng thi h thng

Embedded system

2010, Phan Dinh Khoi

21

dce

2010

Khi nim
Cc trng thi h thng
Transient
Cc system call ca OS ang c thc thi Khng c ngt qung gia chng Ngi dng khng thy c cc trng thi bn trong

Task-independent portion
Cc trnh x l interrupt/event ang thc thi Interrupt lun c u tin cao hn cc task Khng cho php chuyn i thc thi gia cc task khi ang trong trng thi ny V d: interrupt lng nhau
Embedded system 2010, Phan Dinh Khoi 22

dce

2010

Khi nim
Cc trng thi h thng
Task-independent portion

Embedded system

2010, Phan Dinh Khoi

23

dce

2010

Khi nim
Cc trng thi h thng
Quasi-task portion
Cc trnh x l SVC m rng, cc system call m rng ang thc thi Cc trnh x l ny khng i hi u tin cao hn task Qu trnh chuyn i thc thi ca task xy ra bnh thng

Embedded system

2010, Phan Dinh Khoi

24

dce

2010

Cc trng thi ca task

Embedded system

2010, Phan Dinh Khoi

25

dce

2010

Cc trng thi ca task

Embedded system

2010, Phan Dinh Khoi

26

dce

2010

tk_cre_tsk

Cc hm qun l task
ID tskid = tk_cre_tsk ( T_CTSK * pk_ctsk ); Khi to 1 task, gn 1 ID cho n Cp pht TCB (Task Control Block) Task c to ra trng thi DORMANT Tr v: ID task hoc m li (tham kho ti liu) Mt s thng s quan trng ca T_CTSK:
VP exinf Extended information
Thng s do ngi dng t thm vo PRCTSK_EXINF nu mun truy xut file trong task

ATR tskatr Task attributes


Mi thuc tnh l 1 bit TA_ASM||TA_HLNG: chng trnh vit bng ASM/ngn ng cp cao TA_RNG0||TA_RNG1||TA_RNG2||TA_RNG3: cp bo v b nh ca task TA_FPU: task c s dng b FPU

PRI itskpri u tin ban u ca task


C th thay i trong lc thc thi 1- 140 theo u tin gim dn

INT stksz Kch thc user stack OS cp cho task (bytes) FP task Con tr ch n hm hin thc task
Embedded system 2010, Phan Dinh Khoi 27

dce

2010

Cc hm qun l task
tk_cre_tsk

Embedded system

2010, Phan Dinh Khoi

28

dce

2010

Embedded system

2010, Phan Dinh Khoi

29

dce

2010

Cc hm qun l task
Cp bo v vng nh
T-Kernel c 4 cp bo v b nh, t 0-3 0 cao nht, 3 thp nht Task cp bo v no ch c th truy xut vng nh ngang cp hoc thp hn

Embedded system

2010, Phan Dinh Khoi

30

dce

2010

Cc hm qun l task
Mi task c mt stack h thng v 1 stack ngi dng (user stack)
Stack h thng c cp bo v 0 Stack ngi dng c cp bo v quy nh bi tham s TA_RNGn Bin cc b trong task c cp pht trn vng nh ca stack ngi dng Bin ton cc hoc static c cp pht trong vng nh ca chng trnh, khng chim stack Bin cp pht ng (malloc) khng chim stack

Embedded system

2010, Phan Dinh Khoi

31

dce

2010

Cc hm qun l task
ER ercd = tk_sta_tsk (ID tskid, INT stacd); Cho php task c tskid to bt u thc thi Chuyn trng thi task t DORMANT READY

tk_sta_tsk

tk_ext_tsk
void tk_ext_tsk ( ); Kt thc task triu gi bnh thng Chuyn task sang trng thi DORMANT

tk_exd_tsk
void tk_exd_tsk ( ); Kt thc task triu gi bnh thng Xa task ang trng thi DORMANT khi b nh
Embedded system 2010, Phan Dinh Khoi 32

dce

2010

Cc hm qun l task
ER ercd = tk_ter_tsk (ID tskid); Kt thc s thc thi ca task ch nh bi tskid Chuyn task sang trng thi DORMANT

tk_ter_tsk

tk_del_tsk
ER ercd = tk_del_tsk (ID tskid); Xa task c ch nh bi tskid khi b nh Task phi ang trng thi DORMANT

tk_chg_pri
ER ercd = tk_chg_pri(ID tskid, PRI tskpri); Thay i u tin hin ti ca task
Embedded system 2010, Phan Dinh Khoi 33

dce

2010

Cc hm qun l task
ER ercd = tk_chg_slt(ID tskid, RELTIM slicetime);

tk_chg_slt
Thay i time slice ca task Time slice c s dng khi nh thi round robin gia cc task c cng u tin

tk_inf_tsk
ER ercd = tk_inf_tsk(ID tskid, T_ITSK * pk_itsk, BOOL clr);

Thu thp thng tin v thi gian chy ca task

tk_ref_tsk
ER ercd = tk_ref_tsk ( ID tskid, T_RTSK * pk_rtsk ) ;

Thu thp thng tin v trng thi task


Embedded system 2010, Phan Dinh Khoi 34

dce

2010

Qun l thit b trn T-Engine


Mi thit b ngoi vi trn T-Engine c qun l nh l mt thit b ca h thng
Key board, screen, touch panel, audio, USB

Tn thit b
Mi thit b c t tn theo quy nh ca driver cho thit b khi ng k vi h thng Tn thit b l duy nht cho thit b Chui ti a 8 k t theo quy tc
Type: loi thit b (a-z, A-Z)
pc, hd, fd, screen

Unit: phn bit nhiu thit b cng loi (a-z)


pca, hda, fda, rsa

Subunit: phn bit thit b lun l (0-254)


pca0, hda0, uda0
Embedded system 2010, Phan Dinh Khoi 35

dce

2010

Qun l thit b
Thuc tnh ca thit b
Kiu ATR (32 bit)
16 bit cao: thuc tnh ring ca mi thit b 16 bit thp: c nh ngha bi h thng
#define TD_PROTECT 0x8000 /* P: write protection */ #define TD_REMOVABLE 0x4000 /* R: removable media */ #define TD_DEVKIND 0x00ff /* K: device/media kind */ #define TD_DEVTYPE 0x00f0 /* device type */ #define TDK_UNDEF 0x0000 /* undefined/unknown */ #define TDK_DISK 0x0010 /* disk device */ #define TDK_DISK_UNDEF 0x0010 /* miscellaneous disk */ #define TDK_DISK_RAM 0x0011 /* RAM disk (used as main memory) */ #define TDK_DISK_ROM 0x0012 /* ROM disk (used as main memory) */ #define TDK_DISK_FLA 0x0013 /* Flash ROM or other silicon disk */ #define TDK_DISK_FD 0x0014 /* floppy disk */ #define TDK_DISK_HD 0x0015 /* hard disk */ #define TDK_DISK_CDROM 0x0016 /* CD-ROM */

Hu ht cc thit b l TDK_UNDEF
Embedded system 2010, Phan Dinh Khoi 36

dce

2010

Qun l thit b
Application interface
Cc hm SVC m rng Qun l bi T-Kernel/SM Khng th gi t task-independent portion, trong khi ang dispatch hoc interrupt ang b v hiu

Embedded system

2010, Phan Dinh Khoi

37

dce

2010

Application interface
Nhc li quy trnh truy xut file
M file
FILE *fopen(const char *filename, const char *mode);

Truy xut file


c/ghi file Truy xut thuc tnh file

ng file
int fclose(FILE *fp);

Quy trnh s dng mt thit b trn T-engine


M thit b
ID tk_opn_dev (UB *devnm, UINT omode)

Truy xut thit b


c/ghi d liu t thit b Truy xut thuc tnh thit b

ng thit b
ER tk_cls_dev ( ID dd, UINT option )
Embedded system 2010, Phan Dinh Khoi 38

dce

2010

Cc hm giao tip thit b


ID tk_opn_dev ( UB *devnm, UINT omode )
M mt thit b c tn l devnm vi ch l omode, v chun b cho vic truy cp thit b omode = (TD_READ || TD_WRITE || TD_UPDATE) | [TD_EXCL || TD_WEXCL]| [TD_NOLOCK] Tr v Device descriptor hay m li

Embedded system

2010, Phan Dinh Khoi

39

dce

2010

Cc hm giao tip thit b


ER tk_cls_dev ( ID dd, UINT option)
ng mt thit b c descriptor l dd. Nu c mt yu cu v thit b th yu cu s b b qua v thit b s b ng. option = [TD_EJECT] Tr v m li

Embedded system

2010, Phan Dinh Khoi

40

dce

2010

Cc hm giao tip thit b


ID tk_rea_dev ( ID dd, INT data, VP buf, INT size, TMO tmout)
c d liu hoc thuc tnh t thit b c ch nh Non-blocking Tham s
data: loi d liu cn c, c th l d liu do driver quy nh hoc thuc tnh ca thit b buf: buffer cha d liu cn c size: kch thc d liu cn c (byte) tmout: thi gian ch thit b chp nhn yu cu (ms)

Tr v: request ID hoc m li

Embedded system

2010, Phan Dinh Khoi

41

dce

2010

Cc hm giao tip thit b


ID tk_wri_dev ( ID dd, INT data, VP buf, INT size, TMO tmout)
Ghi d liu hoc thuc tnh vo thit b c ch nh Non-blocking Tham s
data: loi d liu cn c, c th l d liu do driver quy nh hoc thuc tnh ca thit b buf: buffer cha d liu cn c size: kch thc d liu cn c (byte) tmout: thi gian ch thit b chp nhn yu cu (ms)

Tr v: request ID hoc m li

Embedded system

2010, Phan Dinh Khoi

42

dce

2010

Cc hm giao tip thit b


ID tk_wai_dev ( ID dd, ID reqid, INT *asize, ER *ioer, TMO tmout )
Ch cho yu cu reqid ca thit b dd c thc hin xong. Ch c tc dng cho nhng yu su ang c x l khi hm c gi, nhng yu cu ny sinh sau khi gi hm s khng c i. Tham s
dd: Device descriptor reqid: Request ID do hm c/ghi tr v asize: Kch thc c hay ghi c ioer: Li I/O tr v tmout: thi gian timeout (ms)

Tr v: Request ID c hon thnh hoc li


Li do vic ch khng hp l

Nhiu task khng th cng i s hon thnh ca cng mt request ID ti mt thi im.
Embedded system 2010, Phan Dinh Khoi 43

dce

2010

Cc hm giao tip thit b

Embedded system

2010, Phan Dinh Khoi

44

dce

2010

Cc hm giao tip thit b


ID tk_srea_dev ( ID dd, INT start, VP buf, INT size, INT *asize)
c d liu ng b Blocking

Embedded system

2010, Phan Dinh Khoi

45

dce

2010

Cc hm giao tip thit b


ID tk_swri_dev ( ID dd, INT start, VP buf, INT size, INT *asize)
Ghi d liu ng b Blocking

Embedded system

2010, Phan Dinh Khoi

46

dce

2010

Cc hm qun l thit b

Embedded system

2010, Phan Dinh Khoi

47

dce

2010

Cc hm qun l thit b
INT tk_sus_dev (UINT mode) INT tk_get_dev (ID devid, UB *devnm) ID tk_ref_dev (UB *devnm, T_RDEV *rdev) ID tk_oref_dev (ID dd, T_RDEV *rdev) INT tk_lst_dev (T_LDEV *ldev, INT start, INT ndev) INT tk_evt_dev (ID devid, INT evttyp, VP evtinf)

Embedded system

2010, Phan Dinh Khoi

48

dce

2010

Thit b mn hnh (SCREEN)


Tn thit b SCREEN phn gii 320x240 Cc ch hin th mu
256 (mode 1) 65.536 [5-6-5] (mode 2) Ch hin th c chn khi khi ng h thng thng qua file DEVCONF

DEVCONF
VIDEOMODE mode [pmode] [w] [h] [pw] [ph] Dng lnh devconf [/att_name] item [new_value | @] trn CLI

#include <device/screen.h>
Embedded system 2010, Phan Dinh Khoi 49

dce

2010

Thit b mn hnh (SCREEN)


RECT

(0,0) (1,0) (2,0)

(239,319)

Embedded system

2010, Phan Dinh Khoi

50

dce

2010

SCREEN d liu driver


DN_SCRBMP (R)
Ly thng tin v khong khng gian v hnh ca thit b D liu BMP devbmp S dng

Embedded system

2010, Phan Dinh Khoi

51

dce

2010

SCREEN DN_SCRBMP

Embedded system

2010, Phan Dinh Khoi

52

dce

2010

SCREEN d liu driver


DN_SCRCOLOR (RW)
Ly hoc thit lp gi tr ca bng nh x mu D liu COLOR map[*] S dng

Embedded system

2010, Phan Dinh Khoi

53

dce

2010

SCREEN d liu driver


DN_SCRUPDRECT (W)
Cp nht li mn hnh ti mt vng no D liu S dng: ch cn thit cho mt s thit b c bit hoc ch hin th c bit i hi phi update sau khi x l

Embedded system

2010, Phan Dinh Khoi

54

dce

2010

SCREEN Cc hm th vin h tr
int in_rect(int x, int y, RECT *r)
Kim tra im (x,y) c nm trong vng r khng Tr v T/F

void draw_pixel(int x, int y, int c, BMP *p_bmp)


V mt pixel ti ta (x,y), mu c

void draw_line (int x1, int y1, int x2, int y2, int c, BMP *p_bmp)
V mt ng thng ni 2 im (x1,y1), (x2,y2), mu c

void fill_rect(int x1, int y1, int x2, int y2, int c, BMP *p_bmp)
V mt hnh ch nht c 2 nh cho (x1,y1), (x2,y2) v t mu c

void draw_text(char *str, int x, int y, int c, BMP *p_bmp)


V mt chui k t str, bt u ti ta (x,y), mu c

void draw_btn(RECT *r, char *s, int psh, BMP *p_bmp)


V mt nt nhn ti vng r, trn nt nhn c chui k t s psh quy nh nt ang nhn hay th
Embedded system 2010, Phan Dinh Khoi 55

dce

2010

Thit b nhp (kbpd)


Tn thit b kbpd Dng chung cho keypad, touch panel, usb keyboard, usb mouse #include <device/kbpd.h>, <btron/event.h>

Embedded system

2010, Phan Dinh Khoi

56

dce

2010

Thit b nhp (kbpd) d liu driver


DN_KEYMAP (R)
Ly thng tin v trng thi cc phm nhn D liu KeyMap #define KEYMAX 256 typedef UB KeyMap[KEYMAX/8] Mi bit ca KeyMap lu trng thi ca mt phm nhn,
tch cc mc 1 Mi phm nhn c gn mt scancode ch v tr ca bit biu din trng thi phm trong KeyMap
5 bit u: index trong aray KeyMap 3 bit cui: v tr ca bit trong byte truy xut c t KeyMap
Embedded system 2010, Phan Dinh Khoi 57

dce

2010

kbpd - DN_KEYMAP

Embedded system

2010, Phan Dinh Khoi

58

dce

2010

kbpd - DN_KEYMAP
Scancode ca cc nt nhn trn T-Engine

Cc scancode ny phi nh ngha trong chng trnh ng dng


Embedded system 2010, Phan Dinh Khoi 59

dce

2010

Thit b nhp (kbpd) d liu driver


DN_PDRANGE (RW)
Ly hoc thit lp phm vi x l ca touch panel D liu PdRange
typedef struct { H xmax; /* Maximum x coordinate value */ H ymax; /* Maximum y coordinate value */ } PdRange;

Embedded system

2010, Phan Dinh Khoi

60

dce

2010

kbpd touch panel

Embedded system

2010, Phan Dinh Khoi

61

dce

2010

kbpd touch panel


S dng event h thng thng bo trng thi ca touch panel cho ng dng

Embedded system

2010, Phan Dinh Khoi

62

dce

2010

Load file bitmap


Cu trc file bmp Cch x l load ln mn hnh T-engine
T c Thuyt trnh

Embedded system

2010, Phan Dinh Khoi

63

You might also like