پاسخ : راه اندازی rtx kernel در کیل
...ادامه....
در منوی Options for Target سیستم عامل رو به RTX Kernel تغییر بده.
در قسمت output حتما Browse information و Create hex file رو تیک بزن.
یک سورسی مثل main.c برای خودت بساز.
محتویات:
هدر های مورد استفاده:
و هر هدر دیگه ای مثل string و stdio و LPC23xx.h
اگه قراره تسکی داشته باشی که یک stack با اندازه غیر پیش فرض مثلا 2 کیلو بایت استفاده کنه اینجوری تعریفش کن:
unsigned long long my_stack_for_task_1[2000/8];
این کار به ازای هر تسک از این نوع بایستی تکرار بشه.
برای خواناتر بودن پیشتاز هر تابعی رو که قراره به عنوان یک تسک مستقل اجرا بشه اینجا قید کن. مثلا:
راستی یادم رفت. یک تسک میتونه حداکثر یک آرگومان داشته باشه. اگه قرار باشه آرگومانهای زیادی برای یک تسک ارسال بشه بایستی این اطلاعات در جایی ذخیره بشه و آدرس اون برای تسک ارسال بشه.
این قضیه init_task اینجا چیه؟ همیشه یک تسک اولیه داریم که rtx از اونجا شروع به اجرا میکنه. این همون تسکه.
حالا متن توابع:
int main(void){ os_init_task(init_task); }
از اینجا به بعد متن توابع تسک ها رو مینویسیم با این شرط که کلیه عملیات آماده سازی سخت افزار در init_task انجام میشه و تمامی task های دیگه هم ایجاد میشه و در انتها این task رو پاک میکنیم:
__task void init_taskk(void)
{
...
os_tsk_create( LED1_task, 0);
os_tsk_create( LED2_task, 0);
os_tsk_create(LED3_task, 0);
}
.....
...ادامه....
در منوی Options for Target سیستم عامل رو به RTX Kernel تغییر بده.
در قسمت output حتما Browse information و Create hex file رو تیک بزن.
یک سورسی مثل main.c برای خودت بساز.
محتویات:
هدر های مورد استفاده:
کد:
RTL.h
اگه قراره تسکی داشته باشی که یک stack با اندازه غیر پیش فرض مثلا 2 کیلو بایت استفاده کنه اینجوری تعریفش کن:
unsigned long long my_stack_for_task_1[2000/8];
این کار به ازای هر تسک از این نوع بایستی تکرار بشه.
برای خواناتر بودن پیشتاز هر تابعی رو که قراره به عنوان یک تسک مستقل اجرا بشه اینجا قید کن. مثلا:
کد:
__task void LED1_task(void); __task void LED2_task(void); __task void LED3_task(void); __task void init_task(void);
این قضیه init_task اینجا چیه؟ همیشه یک تسک اولیه داریم که rtx از اونجا شروع به اجرا میکنه. این همون تسکه.
حالا متن توابع:
int main(void){ os_init_task(init_task); }
از اینجا به بعد متن توابع تسک ها رو مینویسیم با این شرط که کلیه عملیات آماده سازی سخت افزار در init_task انجام میشه و تمامی task های دیگه هم ایجاد میشه و در انتها این task رو پاک میکنیم:
__task void init_taskk(void)
{
...
os_tsk_create( LED1_task, 0);
os_tsk_create( LED2_task, 0);
os_tsk_create(LED3_task, 0);
}
.....
دیدگاه