doc/note/architecture.txt	-*- text -*-
$Revision: 1.1 $


[B-Free Memo 1]






		   B-Free ܥƥ
		   --------------------------------


		 B-Free Architecture Specification





		     +--------------------------+
		     | F i r s t      D r a f t |
		     +--------------------------+



	*Abstruct*

	ܥɥȤϡB-Free δܹӳƹǤˤĤơ
	ά򵭽ҤƤ롣ܺ٤ʻͤˤĤƤ¾ΥɥȤ򻲾
	Τȡ 



====

  ΥɥȤǤ ITRON ˴ط뵭ҤϡITRON3.0ɸϥɥ
åƤ˽񤫤Ƥޤ
  ITRON ΤλͤˤĤƤϡITRON3.0ɸϥɥ֥å򻲹ͤˤƤ


Ѹ
==========

  ܥɥȤ B-Free OS ǻѤѸˤĤưʲΤ褦
  롣

1 ȥץ

   B-Free OS ǤϥȥץȤ̤Ƥ롣
  ȤΤϡITRON ٥ǴȤ˻Ѥ롣ˤϡ
CPU 񸻤ӥ񸻾󤬴ޤޤƤꡢեʤɤϴޤ
Ƥʤ桼ץ٥Ǥ̾勵Ȥñ̤Ǥϰռ

  ץϡB-Free OS Υץμ¹ԤƤ֤ΤȤɽ
դǤ롣ץˤϡȤƤξ¾ B-Free OS Υץ
μ¹Իɬפʾޤ(եʤ)
  BTRON ФץȤƤΰ̣Ĵˤϡä
BTRON ץȤդȤ⤢롣


2 ITRON

  ܥɥȤǰ ITRON ϡ֥ޥ ITRON 3.0 ϥɥ֥åפ
Ҥ줿ͤˤƤ롣
  ITRON (Industorial TRON) ϡȤ߹ߥԥ塼ѤȤƤλ
ͤƤ롣 B-Free OS  OS ΥʬȤ ITRON 
Ѥˤϡɬפʤʬ­ʤǽΤϳΤǤ롣
ǡITRON ͤˤĤƤϡɬפʤʬˤĤƤϻͤά
ޤǤ B-Free OS ΥʬȤɬפʤΤ򤹤뤳Ȥˤ
  ޤޥ ITRON 3.0 λͤˤ MMU λѤˤĤƤϥץ
Ȱ¸ȤƵꤵƤʤᡢλˡˤĤƤ B-Free OS 
ȼ˻ͤ᤿


3 BTRON

   B-Free OS ǤϡBTRON λͤȤơBTRON 1 ץߥɸϥ
ɥ֥åפӡBTRON1 ͥեȥ Ver.1.20.00.00פ򻲹ͤ
Ƥ(ƥˤĤƤȼιȤäƤ)


4 㳰ȳ

  B-Free OS (ITRON) Ǥ㳰ȳߤΤ˶̤Ƥ롣
  㳰 (Exception) ϡγ߰ʳΥեȥߤޤ
CPU ȯ㳰̣롣
   (Interrupt) ϡγߤ̣롣Ūʳߤ
㳰Ȥ̤˰롣

ƥ㳬
==================

  B-Free OS ϡĤγؤʬƤ롣ʲ˳ƳؤˤĤƴñ
򼨤

(0) ϡɥ
    B-Free OS ǤϡϡɥȤƥƥ 80386 ץåѤ
    ѡʥ륳ԥ塼оݤˤƤ롣ƥʳΥץå
    ѤƤѡʥ륳ԥ塼 B-Free OS ư뤫ϡ
    (80386 ʳΥץåѤޥ)äƤͤϤ
    롣

(1) ITRON (Υͥ)
    ITRONؤϡͥ⡼ɤưB-Free OS ΰִŪؤȤ
    ƾؤ롣

(2) ճ (BTRON Х)
    ճˤϡBTRON ȤƤεǽ󶡤롣BTRON ǽȤƤϡե
    ǽ/ץǽʤɤޤޤ롣BTRONФϡITRON
    Ȥ ץȤ롣  

(3) ǥХɥ饤Х ()
    ITRON ȤƥץȤ롣

(4) ޥ͡ ()
    BTRON ץȤƥץȤ롣

(5) 桼ץ


  γع¤ߤʬ褦ˡB-Free OS ϡޥͥ
ΥƥѤƤ롣


ITRON
=====

    ޥ ITRON3.0 ܻ(ĥͤޤ)Υͥ롣

    εǽġ

    
    Ʊ̿ǽ(IPC)
    ߴǽ
    㳰ǽ
    סǽ
    ִǽ
    ƥǽ
    ۥǽ
    
  ؤϡŪ OS εǽؤͿ롣
  ʤؤϤ ITRON ФƥƥॳȯԤ뤳Ȥˤ
ơITRONεǽѤ롣ITRON ̤ؤϡ٤(ǥХ
ɥ饤Фޤ)åˤ׵Ȥ褦ˤʤä
롣ȥåפ𤷤ƸƤӽФȤΤ ITRON Ǥ롣
  ץꥱ󤬡BTRON εǽѤ硢Τ褦ʽǽ
롣

  1) ITRON ФƥƥॳȯԤơBTRON ƥॳ
     إå롣
  2) BTRON ƥॳϡƤå
     ꡢå˽񤫤줿׵롣
  3) BTRON ƥॳϡƥॳȡ
     ̤åηˤ ITRON 𤷤ƥץꥱ롣
  4) ץꥱϡåȤ롣
     (ƥॳνλ)

  ɡITRON ϡå򤹤ȤΤֽפʵǽˤʤ
Ȼפ롣
  ʤITRON ƤӽФȤΤϡ̾饤֥Ǥꡢץꥱ
 ITRON ռɬפϤʤեɤ߽񤭤ʤɤνϡ
եåȤ뤳Ȥˤäƽ롣
  ޤ ITRON ǤϡޥITRON 3.0 ǿ˳ĥ줿³ǽ
ĤƤϡݡȤʤۤʤäۥȴ֤Ǥ̿ǽˤĤƤϡ
ITRON ٥⹹˾ؤεǽǥݡȤ롣


1. 

1.1  ITRON Υ߷ɸ

   1) Ǥ¤ꥳƥȥå®롣
   2) ֥å (TCB) 礭򾮤롣

  ITRON ΥǤϡƥȤ¤ΤηǤϡʤ
˥ڤؤ˥å˥ƥȤ褦ˤ롣
  Ĥޤꡢڤ괹륿Υåΰ־ˤΥΥ
ƥȤΤääƤʤФʤʤ


1.2 

  ȤƤϼΤΤ롣

  1)  ID
  2) °
  3) 
  4) Ԥװ
  5) ͥ
  6) ۥơ֥
  7) ͥ륹å
  8) IPC (Inter process communication) Ѥξ
  9) 㳰ϥɥơ֥

  * ITRON ٥Ǥϡե륷ƥˤĤƤξϰռƤʤ
    ե륷ƥˤĤƤξˤĤƤϡBTRON ٥(BTRON 
    )Ǵ롣

1.2.1  ID

   ID ϡƥ̤뤿ξǤ롣Τᡢ 
  ID ϡƥȤ˥ˡֹ椬Ƥ롣
   ITRON ǤϡΥǥåꤢƤ롣
   ID  1 ʾοꤢƤ롣ޤ ID 0 ϡʬ
  ȤΥɽ魯
	

1.2.2 °

  °ϡ򵭽Ҥ줬Ǥ뤫򼨤Ǥ롣
  ξ ITRON ˤäƷƤΤ ITRON Ǥϡ
  ֥ȹǵҤ줿Ȥζ̤ϤĤʤᡢ˹
  ǵҤ(TA_HLNG)롣

1.2.3 

  ߤΥξ֤򼨤
  ξ֤ϡ˼ͤΤɤ줫ˤʤäƤ(ޥ̾򼨤
  ϡºݤ)

  TTS_NON(0x00000000):	̤֡
  TTS_RUN(0x00000001):	Ծ֡ͤ򼨤ϡ˥ƥ
			1ĤǤ롣
  TTS_RDY(0x00000002):	Բǽ֡
  TTS_WAI(0x00000004):	Ԥ֡ʬǥ٥ȤԤĤȤꤷ
			ˤͤġ
  TTS_SUS(0x00000008):	Ԥ֡¾Υ鶯ŪԤ֤
			줿硢ͤġ
  TTS_WAS(0x00000010):	Ԥ֤äƤˡ¾Υ
			鶯ŪԤ֤ˡͤġ
  TTS_DMT(0x00000020):	ٻ߾֡ƤϤ뤬ޤư
			Ƥʤˤͤġξ֤ΤȤ
			ϡϼʬλ񸻤ʤˤ񤷤Ƥʤ

1.2.4 Ԥװ

  TTS_WAI,TTS_SUS,TTS_WASΤ줫ξ֤ΤȤˡװԤ
  äƤΤ򼨤ͤǤ롣

  ԤȤưʲξ֤Ƥ:

	Ԥ	(ޥե٥ȥե顢åԤ
			߹碌ƻȤ)
	ޥեԤ
	٥ȥե饰Ԥ
	åԤ

  ޥե/٥ȥե饰/åϡԤȤ߹碌뤳Ȥ
Ǥ롣
  դ˥ԤƤϡޥե/٥ȥե饰/åԤ
֤ϽŤʤ뤳Ȥʤ(㤨Х٥ȥե饰ȥޥեȤƱԤĤ
Ϥʤ)


1.2.5 ͥ

  ͥ٤ϡ¹ԤˤɤΥ˼¹Ԥ뤫
  ͤǤ롣⤷Ʊͥ٤Υä硢ͥ٤Υ
  ꥹȤƬˤ륿˼¹Ԥ롣ꥹȤˤĤƤϡ
  ι¤򻲾ȤΤȡ

1.2.6 ۥơ֥

  ȤɬפȤ벾ۥΥޥåԥ󥰾
  ͥ⡼ɤǤϡ٤Ʊޥåԥ󥰤桼⡼(ץꥱ
ץ)ΰϡޥåԥ󥰾󤬥Ȥ˰ۤʤäƤ롣
  ۥơ֥ξܺ٤ˤĤƤϡۥ굡ǽιܤ򻲾Ȥ
  ȡ

1.2.7 ͥ륹å

  Ȥˤĥåΰ衣
  礭ϥ˻ꤵ롣 ITRON ǤϥХ
  ñ̤ǥꤹ뤬 ITRON Ǥϡڡڤ夲
  롣ϡåΰ򥪡СեȤΤ뤿ˡ
  åΰΥڡ̤ޥå׾֤ˤ뤿Ǥ롣åΰ
  ϤƥˤɤΤ褦ʽ򤹤뤫ϡ㳰ϥ
  ȤƳƥȤ˻ꤹ뤳ȤǤ롣

1.2.8 IPC (Inter process communication) Ѥξ

   ITRON Ǥϡ̿ȤƼεǽ򥵥ݡȤƤ롣

  1) ޥե
  2) å
  3) ٥ȥե饰

  ̿ǽɬפʾϡȤƳƥտ路Ƥ롣

1.2.9 㳰ϥɥơ֥

  㳰ȯ˼¹ԤϥɥؤΥɥ쥹ơ֥롣
  㳰ˤϡμब롣

  1) ե
  2) ȥå (ƥॳ)
  3) ư㳰

  ⤷㳰ȯ˥ȼν򤹤ɬפʤСƥǷ
  줿Ԥξ硢ϥɥ饢ɥ쥹Ȥƥɥ쥹 0 (NULL
  ݥ)򥻥åȤƤȡ
  㳰ξܺ٤ˤĤƤϡ㳰ǽιܤ򻲾ȤΤȡ


1.3 ڤؤν

  1) ޤȤơƥȼΥåäƤ롣
     ϡؿƤӽФʤɤ˻ȤΤϤڤ
     ؤˤϡξ(ƥ)¸ȤƤȤ
     롣

  2) ڤؤԤؿ
     ڤؤϡswitch_task() ȤؿԤ
     switch_task() ϡθƤӽФ:

     switch_task(taskid)
     taskid:	ڤؤ륿IDϡΥǥ
		ȤʤäƤ롣


2. Ʊ̿(IPC)

2.1  ITRON ǥݡȤƤƱ̿ǽ

   ITRON Ǥϡޥե٥ȥե饰ᥤܥå
åХåեǥ֤ʤɤѤǤ롣εǽ򤹤
Ƥ򥵥ݡȤ뤳ȤϡB-Free OS ưˤɬפʤȻפ
Τǡ ITRON Ǥϡޥե٥ȥե饰åݡ
ȤƤʤ
   IPC ǽϡӤŪȤƥݡȤ

  1) ޥե
     ֤ƱȤ롣֤ǶͭƤ򥢥
     ʤɤ˻Ѥ롣

  2) ٥ȥե饰
     ֤Ԥ֤ꤹȤʤɤ˻Ѥ롣
     ɥ饤ХȤΥбɥ饤гߥϥɥȤ
     ǡΤȤ򤹤Ȥ˻Ѥ롣εǽϡޥեǤ
     ѤǤΤǡɥ饤ФˤäƤϻѤʤ⤢ꤨ롣

  3) å
     桼ץȳƥХץȤ̿˻Ѥ롣
     ƥХץϡƥǷ줿å ID ġ
     Υå ID Ѥƥ桼ץϡХץФ
     ׵å뤳ȤǤ롣
     桼ץϼˤ IPC ǽѤ

  ޥITRON 3.0 Ǥϡ¾ˤ IPC ǽȤƼεǽ
롣 ITRON Ǥϡʾ IPC ǽɬפʤȹͤݡ
ȤƤʤ IPC 򥵥ݡȤʤͳˤĤƤյ롣

  ᥤܥåǽ	åǽѤǤ뤿ᡣޤᥤ
			åǽǤϡŪ˥ɥ쥹֤ƥ
			Ȥ˶ͭɬפ롣ɥ쥹֤Ū
			ʬΥƤ B-Free OS Ǥϡä˥桼ץ
			ȤˤΤǤϤʤȹͤݡȤ
			ʤȤˤ			

  ǥֵǽ	åǽѤǤ뤿
			֤ϡǥ֤ƤӽФƤӽФ
			ֻäƤޤԤĤȤˤ
			äƤ롣ȥå
			¾νԤȤǤʤʤ롣
			B-Free OS ǤϡФ¾ΥФƤӽФ
			礬ꡢ˥ǥ֤Ѥȡ
			Ǥʤ뤯ʤ뤿ᡢΨʤ
			פ줿(ˤäƥǥ֤ȥå
			櫓ȤΤͤ뤬ȡ
			ʣˤʤ)

   IPC ǽˤĤƤϡ桼ץˤäƤϡɬפȤʤ
⤢뤬äˤϡ桼ץ༫ȤǤεǽ
ߥ졼Ȥɬפ롣


2.1 ޥե

  ޥ ITRON 3.0 ǤϡޥեȤƷ׿ޥե򥵥ݡȤƤ롣
  ܹǤϡޥեǽˤĤ롣

2.1.1 ޥեΤδؿ

  ޥե뤿δؿΰ򼨤

  cre_sem:	ޥե
  del_sem:	ޥե
  sig_sem:	ޥեβ(V )
  wai_sem:	ޥեγ(P )
  preq_sem:	ޥեγ(P ); ݡ󥰵ǽդ 
  twai_sem:	ޥեγ(P ); ॢȵǽդ
  ref_sem:	ޥեֻ  

  ξܺ٤ˤĤƤϡ롣

2.1.2 ޥե

  ޥեϡcre_sem() ˤäƹԤ

2.1.3 ޥեκ

  ޥեκϡdel_sem() ˤäƹԤ
  ꤷ ID ĥޥեδ򥯥ꥢ롣

2.1.4 ޥեβ

  ޥե硢sig_sem() Ѥ롣ޥեβ
ϡޥեκƱεǽǤϤʤޥեκξ硢¾˥
եγԤäƤϡޥե뤳ȤǤ顼
֤롣ޥեˤϡޥեγԤäƤ
ץϡ˥ޥե뤳ȤǤ롣
  εǽϡ륻ޥե V б롣

2.1.4 ޥեγ

  ޥեγˤϡ°εǽѤ뤫ʤˤä3Ĥδؿ
롣 

  wai_sem():	ޥե롣Ǥ¾Υޥե
		Ƥ硢δؿ¹Ԥϥޥե
		ޤǡԤ (TTS_WAI) 롣

  preq_sem():	Polling ǽդǥޥե롣Ǥ¾Υ
		ޥեƤ硢顼(E_TMOUT)֤
		δؿ¹ԤϡԤ֤ˤʤ

  twai_sem():	ॢȵǽդǥޥե롣Ǥ¾Υ
		ޥեƤˤϡꤷॢ
		Ȼ֤ԤॢȻ֤᤮Ƥ⥻ޥե
		Ǥʤäˤϡ顼(E_TMOUT)֤

  ޥեγǽϡ륻ޥե P б롣

2.1.5 ޥե֤λ

  ޥեɤ֤ˤ뤫ϡref_sem() ˤäƻȤǤ롣
  ref_sem() ϡޥե֤Ȥơξ֤

	Ԥ̵ͭ
	ޥե

2.1.5  Implementation

  ITRON Ǵ륻ޥե¤Τˤϡξ󤬴ޤޤƤ롣  

  ID:		ޥե ID
  Counter:	ߤΥޥե
  next:		ΥޥեؤΥݥ()
  before:	ΥޥեؤΥݥ()


2.2 ٥ȥե饰

  ٥ȥե饰Ȥϡ֤ƱȤ뤿εǤ롣
  ٥ȥե饰Ԥ¹Ԥȡ٥ȥե饰ꤷͤˤʤ
 wait ֤ˤʤ뤳ȤǤ롣
  ơ¾Υ٥ȥե饰ꤷͤꤷ 
wakeup 롣

2.2.1 ٥ȥե饰Τδؿ

  ٥ȥե饰ؿȤơʲδؿѤǤ롣

  cre_flg	٥ȥե饰
  del_flg	٥ȥե饰
  set_flg	٥ȥե饰Υå
  clr_flg	٥ȥե饰Υꥢ
  wai_flg	٥ȥե饰Ԥ
  pol_flg	٥ȥե饰Ԥ(ݡ󥰵ǽդ)
  twai_flg	٥ȥե饰Ԥ(ॢȵǽդ)
  ref_flg	٥ȥե饰ֻ

2.2.2 ٥ȥե饰

  ٥ȥե饰Ѥ硢ޤcre_flg ˤäƥ٥ȥե饰
ʤФʤʤ
  cre_flg ϰǻꤵ줿 ID ĥ٥ȥե饰򿷵롣
⤷ꤷ ID ĥ٥ȥե饰ǤƤ顢顼
(E_ID) Ȥʤ롣

2.2.3 ٥ȥե饰

  Ȥä٥ȥե饰ϡdel_flg ˤäƺǤ롣
  ⤷ꤷ٥ȥե饰ԤäƤ륿äˤ⥤٥
ȥե饰˺Ǥ롣ξ硢٥ȥե饰ԤäƤ
ϡ顼(E_DLT)Ȥʤ롣

2.2.4 ٥ȥե饰Υå

  ꤷ ID ĥ٥ȥե饰򥻥åȤ롣
  ⤷٥ȥե饰ԤäƤä硢Υ 
wakeup 롣
  ٥ȥե饰ԤĥʣƤ褤

2.2.5 ٥ȥե饰Υꥢ

  ꤷ ID ĥ٥ȥե饰򥯥ꥢ롣
  ꥢͤϰǻǤ롣

2.2.6 ٥ȥե饰Ԥ

  ꤷ ID ĥ٥ȥե饰ԤĤΤϡ°ǽˤä3
δؿˤ櫓뤳ȤǤ롣

  wai_flg	ñʥ٥ȥե饰Ԥؿ
		ꤷ ID ĥ٥ȥե饰ͤΥӥåȥѥ
		ˤʤޤǡδؿ¹Ԥϡwait 
		Ȥʤ롣ơset_flg ˤۤäƥ٥ȥե饰ͤ
		ꤷӥåȥѥˤʤȡԤ֤ˤäϡ
		wakeup 롣

  pol_flg	٥ȥե饰ξ֤Ĵ١⤷٥ȥե饰ͤ
		ꤷӥåȥѥȹפƤСｪλ롣
		ӥåȥե饰ͤꤷӥåȥѥȰפ
		ʤˤ⥿Ԥ֤Ȥʤ餺ƤӽФ¦
		롣顼(E_TMOUT)֤  

  twai_flg	wai_flg ˥ॢȵǽɲäΡ
		٥ȥե饰ͤꤷӥåȥѥȰפƤ
		ʤСԤ֤Ȥʤ롣ơꤷ֤᤮
		⥤٥ȥե饰åȤʤСδؿθƤӽ
		¦إ顼(E_TMOUT) ֤

2.2.9 ٥ȥե饰ֻ

  ꤷ٥ȥե饰ξ֤򻲾Ȥ롣
  ٥ȥե饰ξ֤ϡ˼¤Τη֤롣

  typedef struct t_rflg
  {
    VP		exinf;		/* ĥ				*/
    BOOL_ID	wtsk;		/* Ԥ̵ͭ			*/
    UINT	flgptn;		/* ٥ȥե饰Υӥåȥѥ	*/
  }


2.3 å

  åǽϡB-Free OS  IPC ǽǺǤѤΤǤ
롣BTRON ȤƤΥƥॳϡ٤ƥåȤƥ
ץȤƤꡢեɤưҤȤĤȤäƤå
ˤäƹԤ롣λ٤ߤơåǽˤĤƤϡ
ץȤɬפ롣åˤǡž®٤٤
硢ϥƥॳ®㲼ȤƸ롣

2.3.1 åΤδؿ

  åΤδؿΰ򼡤˼

  cre_mbf:	åХåե롣
  del_mbf:	åХåե롣
  snd_mbf:	åХåե롣
  psnd_mbf:	åХåե(ݡ󥰵ǽդ)
  tsnd_mbf:	åХåե(ॢȵǽդ)
  rcv_mbuf:	åХåե롣
  prcv_mbf:	åХåե(ݡ󥰵ǽդ)
  trcv_mbf:	åХåե(ॢȵǽդ)
  ref_mbf:	åХåեξ֤򻲾Ȥ롣

  ˤĤơʲ롣

2.3.2 åХåե

  åХåեϡcre_mbf() ˤäƹԤ
  åϡνΤ ITRON ˰ХåեɬפȤ롢
cre_mbf() ˤäơΤΥХåե롣
  Ū˥åХåեΥʾΥå뤳ȤϤǤ
ϡ ITRON ǤΥåȤơ1ĥå2İ
ΥåȤ뤳ȤǤʤȤȤ뤿Ǥ(
Ĥȡåڤܤ̤ǤʤʤäƤޤå
ǽ餬狼ʤʤ)

2.3.3 åХåեκ

  åХåեκˤäơꤷ ID ĥåξ
򤹤٤ƺ롣
  ѤߤΥåǡޤƤʤΤˤĤƤϤǤ
ξԤ֤ˤ륿ФƤϡ顼(E_DLT)֤
롣

2.3.4 åХåեؤ

  ꤷ ID ĥåХåեؤˤϡץǽ
Ѥ뤫ʤˤäơۤʤä3Ĥδؿ롣

  snd_mbf:	åХåեإǡ롣
		⤷åХåե˶ΰ褬¸ߤʤˤ
		ΰ褬ǤޤԤġ

  psnd_mbf:	Polling ǽդǥåХåեإǡ롣
		⤷åХåե˶ΰ褬¸ߤʤˤ
		顼(E_TMOUT) ֤¨¤˸ƤӽФ¦롣

  tsnd_mbf:	ॢȵǽդǥåХåեإǡ
		롣
		⤷åХåե˶ΰ褬¸ߤʤˤ
		ꤷ֤Ԥġ⤷ꤷ֤᤮Ƥ
		ΰ褬Ǥʤˤϡ顼(E_TMOUT) ֤ƤӽФ
		¦롣

2.3.5 åХåեμ

  ꤷ ID ĥåХåեؤμξƱ褦
ץǽѤ뤫ʤˤäơۤʤä3Ĥδؿ롣

  rcv_mbf:	åХåեǡ롣
		⤷åХåե˥ǡޤƤʤ
		ˤϡԤ֤Ȥʤ롣

  prcv_mbf:	Polling ǽդǥåХåեǡ
		롣 
		⤷åХåեǡ¸ߤʤ
		ϥ顼(E_TMOUT) ֤¨¤˸ƤӽФ¦롣

  trcv_mbf:	ॢȵǽդǥåХåեǡ
		롣
		⤷åХåեǡ¸ߤʤ
		ϻꤷ֤Ԥġ⤷ꤷ֤᤮Ƥ
		Ƥʤˤϡ顼(E_TMOUT) ֤
		ӽФ¦롣

2.3.6 åХåե֤λ

  ꤷå ID ĥåХåեɤ֤ˤ
ϡref_mbf() ˤäƻȤ뤳ȤǤ롣
  ref_mbf() ϡåХåե֤ȤƼξ֤

  Ԥ̵ͭ
  Ԥ̵ͭ
  ˼åΥ
  ХåեΥ


3. ߴǽ

  ߴǽǤϡߥϥɥδ(Ͽ//ƤӽФ)
եȥ/ϡɥߤδʤɤԤ

3.1 ߴؿ

  ߴǻѤǤؿʲ˼

  def_int	ߥϥɥ
  ret_int	ߥϥɥ餫
  ret_wup	ߥϥɥȥ(wakeup)
  loc_cpu	ߤȥǥѥåζػ
  unl_cpu	ߤȥǥѥåε
  dis_int	߶ػ
  ena_int	ߵ
  chg_iXX	ߥޥ(٥롢ͥ)ѹ
  rel_iXX	ߥޥ(٥롢ͥ)


3.2 ߥϥɥ

  ITRON ͤˤȳߥϥɥϡǤդ뤳ȤǤ롣
桼ץबǤդ˳ߥϥɥꤷƤޤȡ
ƥ̤꤬ȯǽ⤢롣
  Τᡢεǽϥͥ⡼ɤˤץफ餷ѤǤ
褦¤

  ߥϥɥϡdef_int ˤä뤳ȤǤ롣

  def_int ϡȤƼξ餦

  1) ֹ
  2) ߥϥɥ
     (1) ߥϥɥ° ( ITRON ǤϻѤʤ)
     (2) ߥϥɥ饢ɥ쥹

  ߥϥɥϡΩƤ롣Τᡢߥϥɥ
ǤϼʬΥ򻲾Ȥ褦ȤƤϤʤ


3.3 ߥϥɥ餫

  ߥϥɥ餫εǽϡߥϥɥ餫Ѥ롣
  ߥϥɥ餬ߤαĹǤνλȡ ret_int 
ƤӽФ
  ret_int ϡ߽θԤν³Ԥ롣

  ref_int ϡŪ˼νԤ

  1) ѺѤߤγߥå
  2) ν iret ̿롣

  ΥƥॳϡƤӽФȸƤӽФˤϡʤ


3.4 ߥϥɥȥ(wakeup)

  ret_wup ϡret_int (ߥϥɥ餫) ȡǤդΥ
Ȥ2ĤνƱ˹Ԥ
  ⤷ꤷԤ֤ˤʤȤˤϡwakeup ׵ϥ塼
󥰤롣


3.5 ߤȥǥѥåζػ

  ߤȥǥѥåػߤ롣


3.6 ߤȥǥѥåε

  ⤷ߤȥǥѥåػ߾֤ˤС롣
  ⤷ߤȥǥѥåػ߾֤ˤʤв⤷ʤ


3.7 ߶ػ

  ǻꤷߤػߤ롣
  ߤλ 80386  IDT ơ֥ΥǥåǹԤ


3.8 ߵ

  dis_intǻꤷ߶ػߤ롣


3.9 ߥޥ(٥롢ͥ)ѹ

  ꤷ٥뤪ͥ٤γߤΥޥѹ롣
  ϡchg_iXX (XX ʬϳߥ٥)ǹԤ
  ߥޥѹȡޥ줿ߤ϶ػ(ޤϳ߶ػ
)롣


3.10 ߥޥ(٥롢ͥ)

  chg_iXX ꤷߤΥޥ֤򻲾Ȥ롣


4. 㳰ǽ

   ITRON Ǥϡ㳰ǽȤưʲεǽ򥵥ݡȤ롣

  ƥॳϥɥ
  㳰ȯν

  㳰ϥɥϥȤ˻Ǥ롣⤷㳰򥷥ƥ
ǥեȤνǤޤ褦ȤˤϡϥɥΥɥ쥹Ȥ 0
(NULL ݥ)ꤹɬפ()

4.1 ƥॳϥɥ

  ITRON ƥˤʤƥॳꤹ뵡ǽϡdef_svc Ԥ

4.2 㳰ؿ

  㳰ǤϡδؿѰդ롣

  def_exc	㳰ϥɥ
  

5. סǽ

  סǽǤϡƥΤʪδԤ
  B-Free OS ǤϡITRON ޤƤ٤ƤΥϲ۶֤˥ޥ
ԥ󥰤ʤлѤǤʤΤᡢסǽȤäƳ
ʪϡΤޤޤǤϥǤʤ
  षΥסǽȤäƳʪϡŪ
ʥ꥽ȹͤ褤

  ޥ ITRON 3.0 ǤϥסǽȤơꥵΥ
֥åȲĹΥ֥å2Ĥμब롣
   ITRON ǤϡĹǥ֥å뵡ǽΤߥݡ
Ȥ뤳Ȥˤ
  ITRON ǤϥȤưʲΤ褦ˤĤΥ٥
ġ

  1) ǲ̥٥ (ڡñ̤Υ)
  2) ITRON ǻѤ (Хñ̤Υ)
  3) ITRON ƥॳ٥Υ


5.1 ǲ̥٥Υ

  ǲ̥٥ΥǤϡڡñ̤ΥꥢȤԤ

  init_memory	--- ν
  palloc	--- ꤷڡ򥢥Ȥ
  pfree		--- ꤷڡե꡼


5.2 ITRON ǻѤ

  ITRON Ǥϡڡñ̤Υ¾˥Хñ̤Ǥ
Ԥ

  init_malloc	--- ڡñ̤Υꥢν
  kalloc	--- ꤷХȿʬ򥢥
  kfree		--- kalloc ǳݤե꡼


5.3 ITRON ƥॳ٥Υ

  ITRON ƥॳȤƼΤΤ󶡤롣

  cre_mpl		ס
  del_mpl		Ĺסκ
  get_blk		Ĺ֥å
  pget_blk		Ĺ֥å(ݡ)
  tget_blk		Ĺ֥å(ॢͭ)
  rel_blk		Ĺ֥åֵ
  ref_mpl		Ĺסֻ


6. ִǽ

  ִǽǤϡƥ९åδ䥿μŪ¹Ԥʤɤλ
֤˴طԤ


7. ƥǽ

  ƥǽǤϡITRON ĶԤ
  ޤ濴ˤΥСֹ롣
  

8. ۥǽ

  ۥǽˤĤƤϡƥ¸ˤʬ礭Ȥ⤢
ꡢޥ ITRON 3.0 ǤϡƤƤʤ
  ΤᡢۥǽˤĤƤϥץȰ¸Υƥॳ
Ȥƺǽ v ΤĤ̾Ȥ롣

  ۥϡ˹ԤޤˤϡƤΥ
βۥ򤽤ΤޤްѤΤᡢľˤϡ
ƱʪȤ2ĤǤ뤳Ȥˤʤ(UNIXΤ褦ʥ
Ȱ㤤˿ʪѰդ褦ʤȤϤʤ)
ΤᡢBTRON ФBTRON ץȤˡ桼֤
ѡ۶֤ꤵ줿ץɤ롣


8.1 ۥǽϢΥƥॳ

  ۥǽǥݡȤ륷ƥॳΰ򼨤

  vcre_vme:	create virtual memory entry.
  vdel_vme:	delete virtual memory entry.
  vget_atr:	ۥ°롣
  vset_atr:	ۥ°ꤹ롣
  vset_vmh:	ڡեȻΥϥɥ롣


8.2 ۥޥå

  B-Free OS ǤΡۥΥޥåפ򼨤

  0x00000000	: 桼⡼ΰ
	.
	.
	.
  0x7FFFFFFF
  0x80000000	: 
	.
	.
	.
  0x800FFFFF
  0x80010000	: ITRON ͥ
	.
	.
	.
  0x801FFFFF
  


ճ
======

  BTRON طΥƥॳ롣
  ճˤϤĤ ITRON ˤäƹ¤ϡBTRON ƥ
ϡåηǤΥץ褦ˤʤäƤ롣
ηˤΤϡ饤֥ǹԤΤǡץꥱΤϡ
ΥƥॳʤΤ϶̤ɬפϤʤ

  Υϡ桼Ȥ BTRON Υƥॳν
ɬפʾƤ(եΥץơ֥ʤ)
  ۥǽǤϡƥȤ˲ۥΥơ֥
ڡ󥰤򤹤ˤϡΥơ֥ơǥΤɤʪ
Υǡ򤪤᤿褤롣
  ϡɥ˶ᤤۥδϡITRONԤ

  * ճˡ֥פϡʬȤΥեʤɤϹԤʤ᥿
    ȤƤ(ץǤϤʤ)

ǥХɥ饤Х ()
===========================

  ǥХɥ饤С
  B-Free OS ǤϡǥХɥ饤Ф򥿥ȤƥץȤ뤳
ˤΤ褦ʥץȤǤϡǤϤʤɥ饤Фʤɤ
ơʲӷ롣

  
  	Ȥư뤿Ἣʬξݻ뤳ȤǤ롣
	ޤήȤ ׵ -> ׵ν ->  Ȥ
	򷫤꤫ФᡢȤ褤
	ȤƥǥХɥ饤Фʤ硢׵ݻΤ׵
	Ԥ̤˺ɬפ礬롣	

  
  	Ȥƴ뤿ΥǡɬפȤʤ롣

  ǥХɥ饤Фϡǽμ¹Ի˥ǥХɥ饤дơ֥Ͽ
ʤФʤʤ


1 ǥХɥ饤Фι¤

  Ū˥ǥХɥ饤ФϡΤ褦ʽήġ

device_driver ()
{
  <ǥХɥ饤ФϿ>
  <ǥХɥ饤мȤν>

  while (1)	/* ̵¥롼 */
    {
      ׵å
      ׵ν
      å
    }
}

  ׵νԤǤϡ̤ΥƤΥ˽ޤ
ΥǥХɥ饤ХϡΥåȤäƤ褤


2 åη

  ǥХɥ饤ФåηϡǥХɥ饤Хå
ȤƷƤ롣


2.1 åμ

  ǥХɥ饤Хåμʲ˼

  ǥХ׵
  ǥХΥץ׵
  ǥХΥ׵
  ǡɤ߽Ф
  ǡ񤭹
  ǥХ֤μФ
  ǥХ̾Ф
  ߥå(ǥХɥ饤Фγ߽ȯ)

  ΤߥåʳϤ٤ƥ桼ץ(뤤ϥ
з)ȯԤ롣


2.2 ǥХ׵

  ǥХ롣


  å

  åֹ		4Х(0x00000001 )
  ֿåХåե ID	4Х


  ֿå:

  åֹ		4Х(0x00000001 )
  ΥåХåե ID	4Х
  ֵ			2Х


2.3 ǥХΥץ׵

  ǥХ򥪡ץ󤹤롣ץ󤷤硢ץ׵ä
ǥХ򥯥ޤǤΥǥХץǤʤʤ(å
뤫)ɤϡƥǥХν˰¸롣

  å

  åֹ		4Х(0x00000002 )
  ֿåХåե ID	4Х
  ץ⡼		4Х


  ֿå:

  åֹ		4Х(0x00000002 )
  ΥåХåե ID	4Х
  ֵ			2Х


2.4 ǥХΥ׵

  å

  åֹ		4Х(0x00000003 )
  ֿåХåե ID	4Х
  ץ⡼		4Х


  ֿå:

  åֹ		4Х(0x00000003 )
  ΥåХåե ID	4Х
  ֵ			2Х


2.5 ǡɤ߹

  ǥХǡɤ߹ࡣ
  ɤ߹ǡϡåΥȥ ǡХåեΥɥ
ؤȽ񤭹ޤ롣ǥХɥ饤Фϡͥ-ɤư桼
ץΥɥ쥹֤ؤϼͳ˥Ǥ롣ΤᡢǡХ
եϡä˶֤ͭꤹɬפϤʤ

  å

  åֹ		4Х(0x00000004 )
  ֿåХåե ID	4Х
  ɤ߹߳ϥեå	4Х
  ɤ߹ߥ		4Х
  ʬΥ ID		2Х
  ǡХåեΥɥ쥹	4Х

  ֿå:

  åֹ		4Х(0x00000004 )
  ΥåХåե ID	4Х
  ֵ			2Х
  ɤ߹ǡΥ	4Х


2.6 ǡ񤭹

  ǥХǡɤ߹ࡣ
  񤭹ǡϡåΥȥ ǡХåեΥɥ쥹
ɤ߹ޤ롣ǥХɥ饤Фϡͥ-ɤư桼
Υɥ쥹֤ؤϼͳ˥Ǥ롣ΤᡢǡХå
ϡä˶֤ͭꤹɬפϤʤ

  å

  åֹ		4Х(0x00000005 )
  ֿåХåե ID	4Х
  񤭹߳ϥեå	4Х
  񤭹ߥ		4Х
  ʬΥ ID		2Х
  ǡХåեΥɥ쥹	4Х

  ֿå:

  åֹ		4Х(0x00000005 )
  ΥåХåե ID	4Х
  ֵ			2Х
  񤭹ǡΥ	4Х


2.7 ǥХ֤μФ

  å

  åֹ		4Х(0x00000006 )
  ֿåХåե ID	4Х
  ץ⡼		4Х


  ֿå:

  åֹ		4Х(0x00000006 )
  ΥåХåե ID	4Х
  ֵ			2Х
  ǥХ			16 Х

  ǥХ֤ϰʲ˼¤ΤǤ롣

  typedef DEV_STATE
  {
    UW	attr;		ǥХ°
    UW	mode;		ߤΥ⡼
    W	blksz;		ʪ֥å
    W	wprt;		0:ߵġ1:߶ػ
  }


2.8 ǥХ̾Ф

  å

  åֹ		4Х(0x00000007 )
  ֿåХåե ID	4Х


  ֿå:

  åֹ		4Х(0x00000007 )
  ΥåХåե ID	4Х
  ֵ			2Х
  ǥХ̾			16Х


2.9 ߥå

  ΥåϡǥХɥ饤Фγ߽ʬ(Ω)
졢桼ץफʤ
  桼ץफܥå硢顼Ȥʤ롣

  å

  åֹ		4Х(0x00000008 )
  ֿåХåե ID	4Х
   ID			2Х

  < ܥåˤĤƤϤʤ >


  

ޥ͡
==========

  B-Free OS ǤϼΥޥ͡򥵥ݡȤ롣

   ǥץ쥤ޥ͡
   ɥޥ͡
   ˥塼ޥ͡
   ѡĥޥ͡
   ѥͥޥ͡
   ȥ졼ޥ͡
   ǡޥ͡
   եȥޥ͡
   ƥϥץߥƥ֥ޥ͡
   ¿/ȥޥ͡
   ޥ͡
   סޥ͡
   [ͥåȥޥ͡]

  Υޥ͡Τͥåȥޥ͡ˤĤƤϸǤϥ
ʤͥåȥǽˤĤƤϡǸƤ뤳Ȥˤ롣

  BTRON1 ͤǤϡޥ͡ؤ׵ϥȥåפѤƥॳ
ȤƤ롣B-Free OSǤϡޥ͡ؤ׵ϥ
𤷤ƹԤȤȤ


1. ǥץ쥤ޥ͡

  ǥץ쥤ޥ͡ϡǥץ쥤ؤɽץߥƥֲ
ɽʤɤԤ
  ǥץ쥤ޥ͡ؤ׵ϥå ID 00000002 ˤäƹԤ


2. ɥޥ͡

  ɥޥ͡ϡɥ/ɽ䥦ɥδ
ʤɤԤ


3. ˥塼ޥ͡

  ˥塼ޥ͡ϡץꥱɽ˥塼ˤĤƴ
롣


4. ѡĥޥ͡

  ѡĥޥ͡ϡɥɽѡĤˤĤɽӥ
٥ȴԤ


5. ѥͥޥ͡

  ѥͥϡץꥱ󤬥桼Υ쥹ݥ󥹤ɬפʾɽ
륦ɥǤ롣
  ѥͥޥ͡Ǥϡץꥱ󤬥ѥͥ뵡ǽñ˻ѤǤ
褦ˡѥͥǽ󶡤롣


6. ȥ졼ޥ͡

  ץꥱ֤ǥǡΤȤԤˡȤƥȥ졼
Ѥ뤳ȤǤ롣
  ȥ졼ޥ͡Ǥϡƥˤȥ졼δԤ
  (B-Free OS Ǥϡ桼Фƥȥ졼Ƥɽ/뵡ǽ
롣ϡȥ졼ޥ͡ǤϤʤѤΥץꥱ
Ԥ)


7. ǡޥ͡

  ǡ롣  


8. եȥޥ͡

  եȾδԤ


9. ƥϥץߥƥ֥ޥ͡

  ƥϥץߥƥ֥ޥ͡ϡܡɤϥ٥Ȥ
ꡢɬפ˱ƤʴѴԤǽ桼ץ󶡤롣
  B-Free OS ǤϡʴѴФȤ Canna Ѥ롣


10. ¿/ȥޥ͡

  ¿/ȾˤĤơץꥱ󤬰䤹褦ʵǽ
롣


11. ޥ͡

  ץ󥿤μˤ餺ץꥱ󤫤Ūʰˡ󶡤
롣


12. סޥ͡

  ץȥȤˡ׵򥹥ס󥰤롣



桼ץ
================

  桼ץϡ2ļब롣

	o 32ӥåȥ⡼ɥ桼ץ
	o 16ӥåȥ⡼ɥ桼ץ(80286 mode)

  16ӥåȥ⡼ɤϡ1B/Note ɽ PMC ΰϢ BTRON ѥ
ưƤץ(ץꥱ)ư¸ߤ롣


1. 32ӥåȥ⡼ɥ桼ץ

  32 ӥåȥ⡼ɥ桼ץϡGCC (GNU CC) μ¹ԷȤƥ
ѥ뤷ΤˤƤ롣

  Τᡢ¹ԥץΥإåʬ GNU CC  a.out ηƱ
ΤΤȤʤäƤ롣BTRON1 λͤȤϰۤʤäƤΤդ뤳ȡ


2. 16ӥåȥ⡼ɥ桼ץ(80286 mode)

  16 ӥåȥ⡼ɥ桼ץ(80286 mode) ϡBTRON/1 Ǻ줿
ץꥱˤĤƸߴݤĤꤵ줿
  ǽΥСǤϥݡȤʤ


$Log: architecture.txt,v $
Revision 1.1  2011/12/27 17:13:36  liu1
Initial Version.

Revision 1.3  1994-08-20 15:07:58  night
եʸɤ EUC ѹ

