Round Robin Scheduling Hakkında

Başlatan yamak, 22 Ağustos 2013, 16:53:25

yamak

Micrium'da round robin i kullanmaya çalışıyorum ama bir türlü beceremedim.Hatam nerde acaba? Yazdığım program aşağıda amacım bir ledi 1 saniyede 1 diğer ledi 5 saniyede bir söndürmek
#include "lpc17xx.h"
#include  <app_cfg.h>
#include  <bsp.h>
#include  <os.h>
#include  <os_csp.h>
#include  <csp.h>
#include  <cpu.h>
#include  <lib_def.h>


static OS_TCB  vLEDTask1TCB, vLEDTask2TCB;
static CPU_STK vLEDTask1Stk[APP_CFG_TASK_START_STK_SIZE];
static CPU_STK vLEDTask2Stk[APP_CFG_TASK_START_STK_SIZE];

extern void OS_CSP_TickInit(void);
static void vLEDTask2(void *p_arg)
{
	OS_ERR err; 
	while (1) {
			LPC_GPIO2->FIOPIN=LPC_GPIO2->FIOPIN^(1<<5);
		OSTimeDlyHMSM(0u, 0u, 1u, 0u, OS_OPT_TIME_HMSM_STRICT, &err);
	
	}
}
static void vLedTask1(void *p_arg)
{
	  OS_ERR os_err;
		OS_CSP_TickInit();
		OSTaskCreate(   (OS_TCB      *) &vLEDTask2TCB,
					(CPU_CHAR    *) "vLEDTask2",
					(OS_TASK_PTR) vLEDTask2,
					(void        *) 0,
					(OS_PRIO) APP_CFG_TASK_START_PRIO,
					(CPU_STK     *) vLEDTask2Stk,
					(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE_LIMIT,
					(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE,
					(OS_MSG_QTY) 0u,
					(OS_TICK) 0u,
					(void        *) 0,
					(OS_OPT) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
					(OS_ERR      *) &os_err);
	while(1)
	{
		LPC_GPIO2->FIOPIN=LPC_GPIO2->FIOPIN^(1<<1);
		 OSTimeDlyHMSM(0u, 0u, 5u, 0u, OS_OPT_TIME_HMSM_STRICT, &os_err);
	}
}

int main(void)
{
	 OS_ERR   os_err,os_err2;
	  BSP_PreInit();
		CPU_Init();
		LPC_GPIO2->FIODIR=0xFF;
		LPC_GPIO2->FIOCLR=0xFF;
	OSInit(&os_err);
	
	OSSchedRoundRobinCfg ((CPU_BOOLEAN)DEF_TRUE,
                              (OS_TICK)10,
                            OS_ERR_NONE);
	OSTaskCreate(   (OS_TCB      *) &vLEDTask1TCB,
					(CPU_CHAR    *) "vLEDTask1",
					(OS_TASK_PTR) vLedTask1,
					(void        *) 0,
					(OS_PRIO) APP_CFG_TASK_START_PRIO,
					(CPU_STK     *) vLEDTask1Stk,
					(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE_LIMIT,
					(CPU_STK_SIZE) APP_CFG_TASK_START_STK_SIZE,
					(OS_MSG_QTY) 0u,
					(OS_TICK) 0u,
					(void        *) 0,
					(OS_OPT) (OS_OPT_TASK_STK_CHK | OS_OPT_TASK_STK_CLR),
					(OS_ERR      *) &os_err);

	OSStart(&os_err);
	return 0;
	   
}

yamak


kurumahmut

micrium II kullanmadım Ama RTOS'u çalıştırabildiğine emin misin? Kullandığının mimariye düzgün port edebildin mi? OS tick timerlarını düzgün ayarlayabildin mi? Task creating işlemlerinin başarılı olup olmadığını sorguladın mı? Kullandığın pinleri output olarak ayarladın mı?

Yukardaki soruların cevabını aramalısın. Kolay Gelsin...

(Türk insanının eğitim hayatında dahi RTOS uğraşması ne kadar güzel bir ilerleme)

muhittin_kaplan

ledtask1 in içerisinde mi oluşturuyorsun task2 yi

yamak

Alıntı yapılan: kurumahmut - 23 Ağustos 2013, 08:13:29
micrium II kullanmadım Ama RTOS'u çalıştırabildiğine emin misin? Kullandığının mimariye düzgün port edebildin mi? OS tick timerlarını düzgün ayarlayabildin mi? Task creating işlemlerinin başarılı olup olmadığını sorguladın mı? Kullandığın pinleri output olarak ayarladın mı?

Yukardaki soruların cevabını aramalısın. Kolay Gelsin...

(Türk insanının eğitim hayatında dahi RTOS uğraşması ne kadar güzel bir ilerleme)
Hocam Söyledikleriniz hepsi düzgün çalışıyor.Çünkü preemtive mod da yapmak istediğim şeyi yaptım.
Alıntı yapılan: muhittin_kaplan - 23 Ağustos 2013, 09:12:11
ledtask1 in içerisinde mi oluşturuyorsun task2 yi
Evet hocam.

muhittin_kaplan

Yamak  örneklerini incelemek gerek ama neden öyle yaptın ?
her task1 e girdiğinde task2 yeniden yaratılacak. yanlış bence

sen task2 nin oluşturulma satırlarını main in içerisine task1 in ardına yerleştirerek denesene.

kurumahmut

#6
Task1 oluşturulurken Tas2 bir kere oluşturulur ve task1 while içerisinde kalır. OS Delay ile 5 sn de bir pini 1 ile exorlamış yani toogle eder. Diğer task 1sn de bir başka bir pini toogle eder.

Oncelikle kernel hiç çalışamıyor gibi. O nedenle taskların çalışamıyor. Kod "OSStart(&os_err);" hiç gelemez diye düşünüyorum...

yamak

Alıntı yapılan: muhittin_kaplan - 23 Ağustos 2013, 13:55:18
Yamak  örneklerini incelemek gerek ama neden öyle yaptın ?
her task1 e girdiğinde task2 yeniden yaratılacak. yanlış bence

sen task2 nin oluşturulma satırlarını main in içerisine task1 in ardına yerleştirerek denesene.
Hocam arkadaşın da dediği gibi task1 sürekli while döngüsü içinde kalacağı için böyle bir durum oluşmaz.
Alıntı yapılan: kurumahmut - 23 Ağustos 2013, 14:17:38
Task1 oluşturulurken Tas2 bir kere oluşturulur ve task1 while içerisinde kalır. OS Delay ile 5 sn de bir pini 1 ile exorlamış yani toogle eder. Diğer task 1sn de bir başka bir pini toogle eder.

Oncelikle kernel hiç çalışamıyor gibi. O nedenle taskların çalışamıyor. Kod "OSStart(&os_err);" hiç gelemez diye düşünüyorum...

Hocam
OSSchedRoundRobinCfg ((CPU_BOOLEAN)DEF_TRUE,
                              (OS_TICK)10,
                            OS_ERR_NONE);

satırlarını kaldırdığımda program çalışıyor.

mufitsozen

#8
sayin @yamak,

hata olarak dusundugunuz seyin ne oldugnu yazmamissiniz.

yani round-robin yapinca ne oluyor?

- led1 saniyede bir yanip sonuyor, led2 hic yanmiyormu/sonmuyormu?

yada nedir?

birde ucos-III icin program yazdiginizi varsayiyoruz değilmi?



mesaj birleştirme:: 23 Ağustos 2013, 15:48:15

Alıntı YapOSSchedRoundRobinCfg ((CPU_BOOLEAN)DEF_TRUE,
                              (OS_TICK)10,
                            OS_ERR_NONE);

yazmissiniz, ama bu fonksiyon soyle tanimlanmis

void OSSchedRoundRobinCfg (CPU_BOOLEAN en,
                                                OS_TICK dflt_time_quanta,
                                                OS_ERR *p_err)
bu satir gercekten compile ediyormu? nasil bir mesaj veriyor? OS_ERR_NONE sanki bir defined constant gibi?
kullandiginiz compiler nedir? bu satira hic degilse bir warning vs vermiyormu?


OSSchedRoundRobinCfg ((CPU_BOOLEAN)DEF_TRUE,
                              (OS_TICK)10,
                            &os_err);

yazip denermisiniz?
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

yamak

Hocam haklısınız o kısma dikkat etmemişim.OS_ERR_NONE os.h içinde aşağıdaki gibi tanımlanmış
typedef  enum  os_err {
    OS_ERR_NONE                      =     0u,

    OS_ERR_A                         = 10000u,
    OS_ERR_ACCEPT_ISR                = 10001u,

    OS_ERR_B                         = 11000u,

    OS_ERR_C                         = 12000u,
    OS_ERR_CREATE_ISR                = 12001u,

    OS_ERR_D                         = 13000u,
    OS_ERR_DEL_ISR                   = 13001u,

    OS_ERR_E                         = 14000u,

    OS_ERR_F                         = 15000u,
    OS_ERR_FATAL_RETURN              = 15001u,

    OS_ERR_FLAG_GRP_DEPLETED         = 15101u,
    OS_ERR_FLAG_NOT_RDY              = 15102u,
    OS_ERR_FLAG_PEND_OPT             = 15103u,
    OS_ERR_FLUSH_ISR                 = 15104u,

    OS_ERR_G                         = 16000u,

    OS_ERR_H                         = 17000u,

    OS_ERR_I                         = 18000u,
    OS_ERR_ILLEGAL_CREATE_RUN_TIME   = 18001u,
    OS_ERR_INT_Q                     = 18002u,
    OS_ERR_INT_Q_FULL                = 18003u,
    OS_ERR_INT_Q_SIZE                = 18004u,

    OS_ERR_J                         = 19000u,

    OS_ERR_K                         = 20000u,

    OS_ERR_L                         = 21000u,
    OS_ERR_LOCK_NESTING_OVF          = 21001u,

    OS_ERR_M                         = 22000u,

    OS_ERR_MEM_CREATE_ISR            = 22201u,
    OS_ERR_MEM_FULL                  = 22202u,
    OS_ERR_MEM_INVALID_P_ADDR        = 22203u,
    OS_ERR_MEM_INVALID_BLKS          = 22204u,
    OS_ERR_MEM_INVALID_PART          = 22205u,
    OS_ERR_MEM_INVALID_P_BLK         = 22206u,
    OS_ERR_MEM_INVALID_P_MEM         = 22207u,
    OS_ERR_MEM_INVALID_P_DATA        = 22208u,
    OS_ERR_MEM_INVALID_SIZE          = 22209u,
    OS_ERR_MEM_NO_FREE_BLKS          = 22210u,

    OS_ERR_MSG_POOL_EMPTY            = 22301u,
    OS_ERR_MSG_POOL_NULL_PTR         = 22302u,

    OS_ERR_MUTEX_NOT_OWNER           = 22401u,
    OS_ERR_MUTEX_OWNER               = 22402u,
    OS_ERR_MUTEX_NESTING             = 22403u,

    OS_ERR_N                         = 23000u,
    OS_ERR_NAME                      = 23001u,

    OS_ERR_O                         = 24000u,
    OS_ERR_OBJ_CREATED               = 24001u,
    OS_ERR_OBJ_DEL                   = 24002u,
    OS_ERR_OBJ_PTR_NULL              = 24003u,
    OS_ERR_OBJ_TYPE                  = 24004u,

    OS_ERR_OPT_INVALID               = 24101u,

    OS_ERR_OS_NOT_RUNNING            = 24201u,
    OS_ERR_OS_RUNNING                = 24202u,

    OS_ERR_P                         = 25000u,
    OS_ERR_PEND_ABORT                = 25001u,
    OS_ERR_PEND_ABORT_ISR            = 25002u,
    OS_ERR_PEND_ABORT_NONE           = 25003u,
    OS_ERR_PEND_ABORT_SELF           = 25004u,
    OS_ERR_PEND_DEL                  = 25005u,
    OS_ERR_PEND_ISR                  = 25006u,
    OS_ERR_PEND_LOCKED               = 25007u,
    OS_ERR_PEND_WOULD_BLOCK          = 25008u,

    OS_ERR_POST_NULL_PTR             = 25101u,
    OS_ERR_POST_ISR                  = 25102u,

    OS_ERR_PRIO_EXIST                = 25201u,
    OS_ERR_PRIO                      = 25202u,
    OS_ERR_PRIO_INVALID              = 25203u,

    OS_ERR_PTR_INVALID               = 25301u,

    OS_ERR_Q                         = 26000u,
    OS_ERR_Q_FULL                    = 26001u,
    OS_ERR_Q_EMPTY                   = 26002u,
    OS_ERR_Q_MAX                     = 26003u,
    OS_ERR_Q_SIZE                    = 26004u,

    OS_ERR_R                         = 27000u,
    OS_ERR_REG_ID_INVALID            = 27001u,
    OS_ERR_ROUND_ROBIN_1             = 27002u,
    OS_ERR_ROUND_ROBIN_DISABLED      = 27003u,

    OS_ERR_S                         = 28000u,
    OS_ERR_SCHED_INVALID_TIME_SLICE  = 28001u,
    OS_ERR_SCHED_LOCK_ISR            = 28002u,
    OS_ERR_SCHED_LOCKED              = 28003u,
    OS_ERR_SCHED_NOT_LOCKED          = 28004u,
    OS_ERR_SCHED_UNLOCK_ISR          = 28005u,

    OS_ERR_SEM_OVF                   = 28101u,
    OS_ERR_SET_ISR                   = 28102u,

    OS_ERR_STAT_RESET_ISR            = 28201u,
    OS_ERR_STATE_INVALID             = 28202u,
    OS_ERR_STATUS_INVALID            = 28203u,
    OS_ERR_STK_INVALID               = 28204u,
    OS_ERR_STK_SIZE_INVALID          = 28205u,
    OS_ERR_STK_LIMIT_INVALID         = 28206u,

    OS_ERR_T                         = 29000u,
    OS_ERR_TASK_CHANGE_PRIO_ISR      = 29001u,
    OS_ERR_TASK_CREATE_ISR           = 29002u,
    OS_ERR_TASK_DEL                  = 29003u,
    OS_ERR_TASK_DEL_IDLE             = 29004u,
    OS_ERR_TASK_DEL_INVALID          = 29005u,
    OS_ERR_TASK_DEL_ISR              = 29006u,
    OS_ERR_TASK_INVALID              = 29007u,
    OS_ERR_TASK_NO_MORE_TCB          = 29008u,
    OS_ERR_TASK_NOT_DLY              = 29009u,
    OS_ERR_TASK_NOT_EXIST            = 29010u,
    OS_ERR_TASK_NOT_SUSPENDED        = 29011u,
    OS_ERR_TASK_OPT                  = 29012u,
    OS_ERR_TASK_RESUME_ISR           = 29013u,
    OS_ERR_TASK_RESUME_PRIO          = 29014u,
    OS_ERR_TASK_RESUME_SELF          = 29015u,
    OS_ERR_TASK_STK_CHK_ISR          = 29016u,
    OS_ERR_TASK_SUSPENDED            = 29017u,
    OS_ERR_TASK_SUSPEND_IDLE         = 29018u,
    OS_ERR_TASK_SUSPEND_INT_HANDLER  = 29019u,
    OS_ERR_TASK_SUSPEND_ISR          = 29020u,
    OS_ERR_TASK_SUSPEND_PRIO         = 29021u,
    OS_ERR_TASK_WAITING              = 29022u,

    OS_ERR_TCB_INVALID               = 29101u,

    OS_ERR_TICK_WHEEL_SIZE           = 29201u,

    OS_ERR_TIME_DLY_ISR              = 29301u,
    OS_ERR_TIME_DLY_RESUME_ISR       = 29302u,
    OS_ERR_TIME_GET_ISR              = 29303u,
    OS_ERR_TIME_INVALID_HOURS        = 29304u,
    OS_ERR_TIME_INVALID_MINUTES      = 29305u,
    OS_ERR_TIME_INVALID_SECONDS      = 29306u,
    OS_ERR_TIME_INVALID_MILLISECONDS = 29307u,
    OS_ERR_TIME_NOT_DLY              = 29308u,
    OS_ERR_TIME_SET_ISR              = 29309u,
    OS_ERR_TIME_ZERO_DLY             = 29310u,

    OS_ERR_TIMEOUT                   = 29401u,

    OS_ERR_TMR_INACTIVE              = 29501u,
    OS_ERR_TMR_INVALID_DEST          = 29502u,
    OS_ERR_TMR_INVALID_DLY           = 29503u,
    OS_ERR_TMR_INVALID_PERIOD        = 29504u,
    OS_ERR_TMR_INVALID_STATE         = 29505u,
    OS_ERR_TMR_INVALID               = 29506u,
    OS_ERR_TMR_ISR                   = 29507u,
    OS_ERR_TMR_NO_CALLBACK           = 29508u,
    OS_ERR_TMR_NON_AVAIL             = 29509u,
    OS_ERR_TMR_STK_INVALID           = 29510u,
    OS_ERR_TMR_STOPPED               = 29511u,

    OS_ERR_U                         = 30000u,

    OS_ERR_V                         = 31000u,

    OS_ERR_W                         = 32000u,

    OS_ERR_X                         = 33000u,

    OS_ERR_Y                         = 34000u,
    OS_ERR_YIELD_ISR                 = 34001u,

    OS_ERR_Z                         = 35000u
} OS_ERR;

Yani bu durumda OS_ERR_NONE ancak hata kontrolü yaparken kullanılabilir. Teşekkür ederim &os_err yapınca düzdi.Ama şunu da belirteyim derleyici uyarı vermedi aslında tüm suç keil'de  :P

mufitsozen

#10
Alıntı YapAma şunu da belirteyim derleyici uyarı vermedi aslında tüm suç keil'de  :P
tabi, tabi   :D

sayin @yamak en azindan bu satirda `implicit type conversion` yada benzeri bir warning vermesi lazim(sonrada run-time'da hafizadaki 0 adresine gidip fonksiyondan gelen error degerini yazmasi!!! aslinda bu daha tehlikeli, bu tip hatalara wild write diyoruz.)

Aslinda bana sorarsaniz bu satiri hic compile etmeyip error verse daha iyi. KEILin warning/error seviyeleri ayarlarinda bir hataniz var gibi. Bu yuzden farkina varmadiginiz baska yanlislarda yapabilirsiniz.

Benim nacizane tavsiyem C diline tam olarak hakim olana kadar butun warning/error seviyelerini aciniz. Her mesajida ne anlama geldigini anlayarak duzeltiniz.

Alıntı YapTeşekkür ederim &os_err yapınca düzdi
Nereyi kim duzdi! yazmamissiniz  :) Lutfen Turkce ifadelerinizede birak buraz birez (napayım ben bır muhendısım!  :P) azicik ihtimam gosteriniz. Dilimizi koruyunuz, ona iyi davraniniz.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

muhittin_kaplan

#11
Alıntı Yapbirak ihtimam
Hocam Bu Da Güzeldi.

mesaj birleştirme:: 23 Ağustos 2013, 17:44:14

Müfit Hocam Hepsi Bir Yana,
Bilen Birilerinden TALEP ediyoruz Yani Bilen Birilerinin Talebesi olmak istiyoruz RTOS hakkında.
Genelden Özele bir Çalışma Planıyla Bilen Birinin Bu Cahil Cüheda (Kendi Nazarımda Yazıyorum) lara Öğretsin.
Bilen Birini Tanıyor musunuz ?

yamak

Alıntı yapılan: mufitsozen - 23 Ağustos 2013, 17:38:17
tabi, tabi   :D

sayin @yamak en azindan bu satirda `implicit type conversion` yada benzeri bir warning vermesi lazim(sonrada run-time'da hafizadaki 0 adresine gidip fonksiyondan gelen error degerini yazmasi!!! aslinda bu daha tehlikeli, bu tip hatalara wild write diyoruz.)

Aslinda bana sorarsaniz bu satiri hic compile etmeyip error verse daha iyi. KEILin warning/error seviyeleri ayarlarinda bir hataniz var gibi. Bu yuzden farkina varmadiginiz baska yanlislarda yapabilirsiniz.

Benim nacizane tavsiyem C diline tam olarak hakim olana kadar butun warning/error seviyelerini aciniz. Her mesajida ne anlama geldigini anlayarak duzeltiniz.
Nereyi kim duzdi! yazmamissiniz  :) Lutfen Turkce ifadelerinizede birak ihtimam gosteriniz. Dilimizi koruyunuz, ona iyi davraniniz.
Hocam Estağfurullah kimsenin kimseyi düzdiği yok. :)
Hocam optimizasyon seviyesi 3'teyken de 0'dayken de hiçbir uyarı vermedi.

Hocam size bir sorum daha olacak bu soruyu daha öncede sormuştum ama görmemiş olabilirsiniz. Bu taskların stackte kaplayacağı alan dinamik olarak ayarlanabiliyodu.

Bu nasıl oluyo yani task'ların stackte kaplayacağı alan dinamik olarak nasıl ayarlanıyo.

mufitsozen

#13
Alıntı YapBu nasıl oluyo yani task'ların stackte kaplayacağı alan dinamik olarak nasıl ayarlanıyo.

Sayin @yamak, bu sorunuza bir kucuk fikra ile cevap vereyim.

Bir gun caminin imami vakitsiz bir zamanda camiye gelmis, birde iceri girmiski, icerden garip sesler, kikirdasmalar, gulusmeler geliyor.

Birde ne gorsun, muezzin bir kadin getirmis camiye, ikiside ciplak, curm-u meshut halindeler.

Baslamis, bagirmaya, acmis agzini, yummus gozunu. Ey bre zindik, ey bire kafir, ey bire munafik, ey bire seytanin cocugu, ey bire dinsiz, ey bre imansiz!

Muezzin, mahcup bir yandan giyinmeye calisirken, bir yandanda cevap vermis, Yok be hoca, dinsizlikten imansizliktan degil, yersizlikten yersizlikten!


Simdi, sizinde sordugunuz sorular daha detaylaninca, vede compilerin isleyisine, Real-time kavramlarina, RTOS markasina, MCU tipine filan gore olmaya baslayinca, bildigim bir cevabi bile duzgun bir sekilde cevap olarak yazmak bayagi zahmetli oluyor. Sadece soru/cevap picproje icinde yapilabilecek bir sey degil bu.

Keske, bu cilali tas devri ortamini niyazi bey, moodle filan gibi daha moderene bir ortama tasisa, virtual clasroom, interactive sessions filan yapsak,... dermisim :-[.

Gordugunuz gibi cevabi neden yazmadigimi soylemek bile bir suru zaman ve yer tuttu!  :-[

Fakat aramizda kalsin, @gerbay hem benden daha genc/enerjik, hemde daha damardan bilir bu isleri. Onu taciz etsek benim icin daha kolay olurdu!  ;)

mesaj birleştirme:: 23 Ağustos 2013, 18:16:09

Alıntı yapılan: muhittin_kaplan - 23 Ağustos 2013, 17:42:00
Hocam Bu Da Güzeldi.

mesaj birleştirme:: 23 Ağustos 2013, 17:44:14
mesajin o kismini duzelttim.
Alıntı YapTurkce ifadelerinizede birak buraz birez (napayım ben bır muhendısım!  :P) azicik ihtimam

Alıntı Yap
Müfit Hocam Hepsi Bir Yana,
Bilen Birilerinden TALEP ediyoruz Yani Bilen Birilerinin Talebesi olmak istiyoruz RTOS hakkında.
Genelden Özele bir Çalışma Planıyla Bilen Birinin Bu Cahil Cüheda (Kendi Nazarımda Yazıyorum) lara Öğretsin.
Bilen Birini Tanıyor musunuz ?

bu arada cuheda cuhela olmasin sakin? (yav, iyi be, Turk olunce bi tek Turkceye dikkat edemiyoruz, bir de arapca veya farscaya da dikkat etmek lazim geliyor iyimi?)


mesaj birleştirme:: 23 Ağustos 2013, 18:25:32

Alıntı YapMüfit Hocam Hepsi Bir Yana,
Bilen Birilerinden TALEP ediyoruz Yani Bilen Birilerinin Talebesi olmak istiyoruz RTOS hakkında.
Genelden Özele bir Çalışma Planıyla Bilen Birinin Bu Cahil Cüheda (Kendi Nazarımda Yazıyorum) lara Öğretsin.
Bilen Birini Tanıyor musunuz ?

sayin @muhittin hoca, aslinda bende yari emekli oldugumdan, bir bu konularda kitapmi yazsam diyorum, yada soyle 3-4 haftalik, bir embedded programing kursu mu hazirlasam diyorum. ama tek basima yapamiyorum.

Picproje dahil bircok kaynaktan bir cirak aradim  (cok parada veremiyorum, emekli olmam hasebiyle, hem yardimci olur hemde ogrenir diye dusunmustum) Ama kiminle konussam, ya ben ostimde gunde 40 lira yevmiye alirim diyor yada ne projesi yapacaz. gpsmi gsm mi filan diyor. Kimsenin meslegini ogrenip hakkiyla yapmaya vakti/istegi yok. Ama daha cok para nasil kazanirim diye devamli bir ugras icindeler


Siz zannederim izmirdesiniz. Bir ara bir sirket kurup izmire yerleseyim (URLA daha dogrusu) diye bir planim vardi, oda maalesef olmadi. Yakinda olsaydim yardim etmek isterdim ama, zaman ve kaynak problemi. Malum, bilgiye/tecrubeye sahip olmak ciddi bir ugras, o bilgi ve tecrubeyi baskasina aktaracak ortami, materyali, sistematigi olusturmak cok daha zor bir ugras.

Sorunuza cevap olmadi ama, soz bu hafta sonu sizin icin bir seyler dusunecegim.
Aptalca bir soru yoktur ve hiç kimse soru sormayı bırakana kadar aptal olmaz.

muhittin_kaplan

Hocam ben işi Bilmediğimden Bilen Birinin kim olduğunu bilemem, Boyut Farkından Dolayı.
Böyle bir konuya ihtiyacımız var, TALEP EDİYORUM.

o OS bu OS fark etmez. Belli bir periyotta verilebilir gibi düşünüyorum.

(Ayrıca Gençlik Yaş Almayla Alakalı Değildir.  ;) )