AiRPOS(RT) OS for embedded system
   AiRPOS(RT) OS for embedded system

For the advanced technology   

 AiRPAGE >> PROJECT >> OS PAGE ¸ÞÀÎ >> µ¹¾Æ°¡±â


°³³ä 


 ¿À·¡Àü µ¿¾Æ¸® Study ¼¼¹Ì³ª ÁøÇàÀ» À§ÇØ °³ÀÎÀûÀ¸·Î ¸¸µé¾ú´ø °£´ÜÇÑ OS Ä¿³ÎÀ»
 °ø°³ÇÕ´Ï´Ù.
 ¿ø·¡ÀÇ À̸§Àº(Lestat) ¿´À¸³ª ÃÖ±Ù AiRPOS(RT)·Î ¹Ù²Ù¾ú½À´Ï´Ù.
ÀÌ´Â PC¿ë(AiRPOS(PC))À¸·Îµµ Æ÷ÆÃÀ» ¿Ï·á ÇßÀ¸¸ç,
ÀÌ·±Àú·± µå¶óÀ̹ö¸¦ Ãß°¡ÀûÀ¸·Î ±¸ÇöÇϰí, ³¢¿ö ³Ö¾î º¸´À¶ó °ø°³¿¡ ½Ã°£ÀÌ °É¸®°í ÀÖ½À´Ï´Ù.
(°ð ÇÑ´Ù´ø°Ô 1³âÀÌ Áö³µ½À´Ï´Ù. T^T)
AiRPOS(RT)¸¦ µ¹·Á º¼¸¸ÇÑ Evaluation Board°¡ ¾ø¾î ³»¹ö·Á µÎ´øÂ÷¿¡ ¾ó¸¶Àü
ARM Simulator - Skyeye ¸¦ Á¢Çß°í,
±× Simulator ¿¡¼­ Áö¿øÇÏ´Â s3c4510b based Target ¿ëÀ¸·Î Æ÷ÆÃÀ» ÇØ º¸¾Ò½À´Ï´Ù.


Áغñ¹°  
 


Windows ¿ë Skyeye ¿¡¼­ µ¹·Áº¸±â À§ÇØ °³¹ß Åø üÀÎÀ»
Windows ¿ëÀ¸·Î ¸ðµÎ °®Ãß¾ú¾ú½À´Ï´Ù.

AiRPOS(RT) ¼Ò½º - (AiRPOS(RT) Embedded version.)
À̱ÛÀº Windows ȯ°æ¿¡¼­ ¸ðµç °ÍÀ» µ¹·Áº¸±â À§ÇÑ ³»¿ëÀÔ´Ï´Ù.
(ÀÚ½ÅÀÇ °³¹ßȯ°æ¿¡ ¸ÂÃß¾î GNU Æú´õ¿¡ ÀÖ´Â Äڵ带 »ç¿ëÇϼ¼¿ä.)

skyeye simulator - (Windows¿¡¼­ ¼³Ä¡, ±¸µ¿ ¹æ¹ý)
ADS ÄÄÆÄÀÏ·¯ - http://www.arm.com/,
ȤÀº GNU ARM µî - GNUARM


³»¿ë  
 


 AiRPOS(RT) ´Â ADS ȯ°æ°ú GNUARM Toolchain µÎ°¡Áö ¿ëÀ¸·Î ±¸Çö µÇ¾î ÀÖ½À´Ï´Ù.
±×Áß Windows ȯ°æ¿¡¼­ GNUARM ȯ°æÀ» ±¸¼ºÇϰí Skyeye Simulator ¿¡¼­ ±¸µ¿½ÃÄÑ
º¸¾Ò½À´Ï´Ù. ¾Æ·¡´Â ¿¹Á¦·Î ¸¸µé¾îÁø ¸î °³ÀÇ Task °¡ µ¹¾Æ°¡´Â ¸ð½ÀÀÔ´Ï´Ù.



¾Æ·¡´Â Task ¼±¾ðºÎÀÇ ÄÚµåÀÔ´Ï´Ù.

start.c ÄÚµå

/*****************************************

	kernel.c for AiRPOS(RT)
	Lee Gun-woo
	http://airpage.org/
	first: 2004-4
	
	- 2007-12-26
	- 2008-1-22 (task added)
	
******************************************/
#include "include.h"

/* TCB */
static TCB *pTCB_IDLE1 = NULL;
static TCB *pTCB_IDLE2 = NULL;

/* stack for Task */	
char idle_stack1[128];
char idle_stack2[128];
/* stack for Task */	
char tcbstack1[1024];
char tcbstack2[1024];
char tcbstack3[1024];

/* task */
void idle_task1(void);
void idle_task2(void);


/* task */
void simple_task1(void);
void simple_task2(void);
void simple_task3(void);

/* TCB */
static TCB *pTCB1 = NULL;
static TCB *pTCB2 = NULL;
static TCB *pTCB3 = NULL;




/* main entry */	
int main_start(void)
{	

	
	/* tcb list init. */	
	TCB_init();	
	tickInit();
	tickStart();

	pTCB_IDLE1 = TCB_get(idle_task1, (int *)&idle_stack1[127]);	
	pTCB_IDLE2 = TCB_get(idle_task2, (int *)&idle_stack2[127]);		
			
	pTCB1 = TCB_get(simple_task1, (int *)&tcbstack1[1023]);	
	pTCB2 = TCB_get(simple_task2, (int *)&tcbstack2[1023]);
	pTCB3 = TCB_get(simple_task3, (int *)&tcbstack3[1023]);
	
	uart0_print("**********************\n");
	uart0_print("http://airpage.org    \n");
	uart0_print("Lee Gun-woo           \n");
	uart0_print("**********************\n\n");	
	uart0_print("AiRPOS start...\n");
	
	Task_sched();			
	while(1);			
			
	return 0;
}


/* static value */
static int t = 0;

extern int p_current_task_context;
/* task */
void simple_task1(void)
{			
	char temp[3];

	temp[1] = '\n';
	temp[2] = NULL;

		
				
	while(1)
	{	

		temp[0] = '0' + (char) t;
		
		INT_TESTPRINT((unsigned int) "test simple_task1\n");
		INT_WAITSIG(10);		
		//INT_TESTPRINT((unsigned int) temp);	
		
	}	
}

int sum(int a, int b)
{

	a = a + b;

	return a;
}


int k = 0;

/* task */	
void simple_task2(void)
{		

	while(1)
	{					
	
		INT_TESTPRINT((unsigned int) "test simple_task2\n");
		INT_WAITSIG(5);	
		//uart0_print("test simple_task2\n");
		sum(k, 5);		
	}		
}


:
:


INT_TESTPRINT ¿Í INT_WAITSIG ´Â ¼ÒÇÁÆ®¿þ¾î ÀÎÅÍ·´Æ®¸¦ »ç¿ëÇÏ¿© ±¸ÇöÇÏ¿´½À´Ï´Ù. INT_TESTPRINT ´Â UART ·Î ½ºÆ®¸µÀ» Ãâ·ÂÇϸç, INT_WAITSIG ´Â ÁöÁ¤µÈ Tick µ¿¾È Delay µÇ°Å³ª ¹«ÇÑÁ¤ Wait µË´Ï´Ù. task id (handle) ·Î Signal ÀÌ ¿À¸é, ÇØÁ¦ µË´Ï´Ù. *. ADS ÄÄÆÄÀÏ·¯´Â C±¸¹®¿¡¼­ swi Ű¿öµå°¡ »ç¿ë°¡´ÉÇϳª GNU - C, CPP ¿¡¼± Áö¿øµÇÁö ¾Ê½À´Ï´Ù. ±×·¡¼­ inline assembler¸¦ »ç¿ëÇß½À´Ï´Ù. include.h ¿Í swi.c

/* for GNUARM 2007.12.26 */
#define swi_call(x)	asm volatile("swi\t"#x ::: "r0", "r1", "r2", "r3")
:
:

/* for GNUARM 2007.12.26 */
int callService(unsigned int svc, int param)
{				
		
	swi_call(0x80);
				
	return svc;
}

void callSync(int no)
{					
		swi_call(0x37);	
}
	
S3C4510b ´Â ARM7TDMI Core ¸¦ »ç¿ëÇÏ´Â »ï¼º¿¡¼­ ³ª¿Â Microcontroller ÀÔ´Ï´Ù. ¾î¶² °è±â·Î ÀÎÇØ 50100 º¸µå¸¦ ¼Õ´î ±âȸ°¡ ÀÖ¾ú´Âµ¥, ±×¶§ÀÇ ½ºÆå°ú À¯»çÇϰí Ä£±ÙÇØ¼­ S3C4510b¸¦ ¼±ÅÃÇß½À´Ï´Ù.^^' À§¿¡¼­ Ãâ·ÂµÇ´Â ³»¿ëµéÀº UART·Î Ãâ·Â½Ã º¸¿©Áö´Â °ÍµéÀÔ´Ï´Ù. S3C4510b¿¡ ´ëÇÑ Á¤º¸´Â ¾Æ·¡ Âü°íÀÚ·áÀÇ S3C4510b µ¥ÀÌÅÍ ½ÃÆ® ¸µÅ©¸¦ Âü°í Çϼ¼¿ä. Áö±Ý ºÎÅÍ´Â Windows ¿¡¼­ AiRPOS¸¦ ÄÄÆÄÀÏ Çϰí, ±¸µ¿ÇÏ´Â ¿©·¯ ¹æ¹ýÁß Çϳª¸¦ ¼³¸íµå¸®°Ú½À´Ï´Ù. ¸ÕÀú, WINARMÀ» ´Ù¿î·Îµå ¹Þ½À´Ï´Ù. Windows NT/2K/XP »ç¿ëÀÚ´Â WinARM À» C:\WinARM ¿¡ ¼³Ä¡ÇÏ¿´À» °æ¿ì, ³»ÄÄÇ»ÅÍ->¼Ó¼º->°í±Þ ÅÇ->ȯ°æº¯¼ö ¿¡ ÁøÀÔ ÇÑ ÈÄ, Path °æ·Î¿¡ ¾Æ·¡ ±×¸²Ã³·³ C:\WinARM\bin;C:\WinARM\utils\bin ¹®ÀåÀ» ³Ö½À´Ï´Ù. Vista »ç¿ëÀÚ´Â ¾Æ·¡ ó·³ ÀÔ·ÂÇ϶ó´Â ±º¿ä.^^ C:\WinARM\libexec\gcc\arm-elf\4.1.1;C:\WinARM\bin;C:\WinARM\arm-elf\bin;C:\WinARM\utils\bin ÀÌÈÄ, ÄܼÖâÀ» ¿­¾î(½ÃÀÛ->½ÇÇà->cmd ¿£ÅÍ) ¾Æ·¡¿Í °°ÀÌ WinARM ÀÇ °æ·Î°¡ ¸Â´ÂÁö È®ÀÎÇÕ´Ï´Ù. AiRPOS(RT) ÀÇ ¼Ò½º Æ®¸®¿¡¼­ GNU Æú´õ¿¡ µé¾î°¡ ¾Æ·¡¿Í °°ÀÌ make ¸¦ ÀÔ·ÂÇÏ¿© ºôµå ÇÕ´Ï´Ù. À̷νá, AiRPOS(RT) ÀÇ ºôµå´Â ¿Ï·áµÇ¾ú½À´Ï´Ù. ÀÌÁ¦, µ¿ÀÛ ¸ð½ÀÀ» È®ÀÎÇϱâ À§ÇØ skyeye ¸¦ ½ÇÇàÇØ¾ß ÇÕ´Ï´Ù. ÀÌ¿¡ ¾Õ¼­ skyeye ´Â cyg-win ȤÀº mingw ȯ°æÀ» ÇÊ¿ä·Î ÇÕ´Ï´Ù.(¹°·Ð Windows¿¡¼­¿ä...^^) Mingw ȤÀº cyg-win À» ¼³Ä¡ÇÕ´Ï´Ù. (¿©±â¼­´Â ¾ð±ÞÇÏÁö ¾Ê½À´Ï´Ù.^^) http://gro.clinux.org/frs/?group_id=327&release_id=808ÀÇ °æ·Î¿¡¼­ skyeye on Windows Ç׸ñ¿¡ ÀÖ´Â Windows ¹öÀüÀÇ skyeye ¸¦ ³»·Á¹Þ¾Æ ÀûÀýÇÑ °æ·Î¿¡ ¾ÐÃàÀ» DZ´Ï´Ù. ±×¸®°í, Mingw ȤÀº cyg-win ȯ°æÀ» ¼öÇàÇÑ ÈÄ, skyeye °¡ ÀÖ´Â °æ·Î·Î ÁøÀÔÇÕ´Ï´Ù. skyeye °æ·Î¿¡ µé¾î°¡ skyeye.sh ¸¦ ½ÇÇàÇÕ´Ï´Ù. ±×·¯¸é, skyeye.sh ´Â ¾Æ·¡ ±×¸²Ã³·³ ¼öÇàÇÒ ELF À̹ÌÁö°¡ ÀÖ´Â °æ·Î¸¦ ¹¯½À´Ï´Ù. ¾Æ·¡ ±×¸²Ã³·³ airpos ÆÄÀÏÀ» ¼±ÅÃÇÕ´Ï´Ù. skyeye ´Â ¼±ÅÃµÈ À̹ÌÁö°¡ ÀÖ´Â °æ·Î¿¡¼­ MPUÀÇ Á¾·ù¿Í ȯ°æÀ» ¼³¸íÇØÁÙ skyeye.conf ÆÄÀÏÀ» ÀÚµ¿À¸·Î ã¾Æ ȯ°æÀ» ¼³Á¤ÇÕ´Ï´Ù. S3C4510b based target À» À§ÇÑ skyeye.conf ³»¿ëÀº ¾Æ·¡¿Í °°½À´Ï´Ù.

#skyeye config file sample
cpu: arm7tdmi
mach: s3c4510b 

mem_bank: map=M, type=RW, addr=0x00000000, size=0x00800000
mem_bank: map=M, type=RW, addr=0x04000000, size=0x00800000
mem_bank: map=M, type=R,  addr=0x01000000, size=0x00200000
mem_bank: map=I, type=RW, addr=0x03ff0000, size=0x00010000
#net: type=s3c4510b, hostip=10.0.0.2, ethmod=tuntap
#dbct:state=on
	
airpos À̹ÌÁö°¡ ¼±ÅõǸé ÄܼÖÈ­¸é¿¡¼­ ¼öÇàÀ» ±â´Ù¸®´Â ÇÁ·ÒÇÁÆ®°¡ ³ªÅ¸³³´Ï´Ù. "run" À» ÀÔ·ÂÇÏ¸é ¾Æ·¡¿Í °°ÀÌ AiRPOS(RT) ÀÇ ±âº» TASK µéÀÌ µµ´Â ¸ð½ÀÀ» È®ÀÎ ÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.

ETC 


	±âŸ Áú¹®/´äº¯ : [ PROJECT -> Áú¹®/´äº¯ °Ô½ÃÆÇ ]
	Âü°í ÀÚ·á : 
	- S3C4510b datasheet
	- VC¿¡¼­ ¿î¿µÃ¼Á¦ ¸¸µé±â °¡À̵å
	- VC¿¡¼­ ¿î¿µÃ¼Á¦ ¸¸µé±â °¡À̵å - II (AiRPOS PC)	
	- µð½ºÅ© ºÎÆÃ À̹ÌÁö ¸¸µé±â °¡À̵å
	- PC º¸È£¸ðµå·Î Æ÷ÆÃµÈ uCOS-II ¿¡ ÀÎÅÍ·´Æ® Ãß°¡ ¿¹Á¦

	Âü°í »çÀÌÆ® :
	- ±âŸ °ü·Ã»çÀÌÆ®´Â PROJECT -> OS PAGE¿¡ ¿¬°áµÈ ¸µÅ©¸¦ ÂüÁ¶ÇϽñ⠹ٶø´Ï´Ù.
	

 


±¸Çö 
 

        
	Study ȸ¿øµéÀÇ ±³À° ¸ñÀûÀ¸·Î Á¤¸»~ °£´ÜÇÏ°Ô ¸¸µé¾îÁø ÄÚµåÀÔ´Ï´Ù.
Ãß°¡/°³¼±ÇÒ °÷µµ ¸¹À¸¸ç, ¹ö±×°¡ ÀÖÀ»Áöµµ ¸ð¸¨´Ï´Ù.
¹ß°ßÇϽŠºÐµéÀº Áú¹®/´äº¯ °Ô½ÃÆÇ¿¡ ¸¹Àº ½Å°í ºÎʵ右´Ï´Ù.^^
±×¸®°í °°ÀÌ °³¼±ÇϰíÀÚ ÇϽô ºÐµéÀÇ ±Ûµµ ±â´Ù¸®°Ú½À´Ï´Ù.
	
	2008/01/26,13:35:36
	À̰ǿì