Skip to content

Instantly share code, notes, and snippets.

@hduffddybz
Created June 1, 2015 05:42
Show Gist options
  • Select an option

  • Save hduffddybz/b69b8b85097b63a75e6e to your computer and use it in GitHub Desktop.

Select an option

Save hduffddybz/b69b8b85097b63a75e6e to your computer and use it in GitHub Desktop.

Revisions

  1. hduffddybz created this gist Jun 1, 2015.
    222 changes: 222 additions & 0 deletions application
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,222 @@
    #include <rtthread.h>

    #define THREAD_STACK_SIZE 512
    #define THREAD_TIMESLICE 3
    #define PERIOD1 25
    #define PERIOD2 15
    #define PERIOD3 18
    #define PERIOD4 20
    #define PERIOD 20
    #define WCET1 4
    #define WCET2 4
    #define WCET3 4

    static rt_rms_t rms1 = RT_NULL, rms2 = RT_NULL, rms3 = RT_NULL, rms4 = RT_NULL, rms5 = RT_NULL, rms6 = RT_NULL ,rms7 =RT_NULL
    ,rms8 = RT_NULL, rms9 = RT_NULL, rms10 = RT_NULL, rms11 = RT_NULL, rms12 = RT_NULL;

    static void rms1_entry(void *parameter)
    {
    rt_uint32_t i = 0;
    while(1)
    {
    // rt_kprintf("rms1_entry works!, %d\n", rt_tick_get());
    rt_rms_end_cycle();
    for(i = 0; i < 1000000; i++)
    ;
    // rt_kprintf("rms1_end!, %d\n", rt_tick_get());
    }
    }

    static void rms2_entry(void *parameter)
    {
    rt_uint32_t i = 0;
    while(1)
    {
    // rt_kprintf("rms2_entry works!, %d\n", rt_tick_get());
    for(i = 0; i < 1000000; i++)
    ;
    // rt_kprintf("rms2_end!, %d\n", rt_tick_get());
    rt_rms_end_cycle();
    }
    }

    // static void rms3_entry(void *parameter)
    // {
    // rt_kprintf("rm3 aperiodic tasks\n");
    // }

    // static void rms4_entry(void *parameter)
    // {
    // rt_kprintf("rm4 aperiodic tasks\n");
    // }

    static void rms5_entry(void *parameter)
    {
    rt_uint32_t i = 0;
    while(1)
    {
    // rt_kprintf("rms5_entry works!, %d\n", rt_tick_get());
    for(i = 0; i < 1000000; i++)
    ;
    // rt_kprintf("rms5_end!, %d\n", rt_tick_get());
    rt_rms_end_cycle();
    }
    }

    static void rms6_entry(void *parameter)
    {
    rt_uint32_t i = 0;
    while(1)
    {
    // rt_kprintf("rms6_entry works!, %d\n", rt_tick_get());
    for(i = 0; i < 1000000; i++)
    ;
    // rt_kprintf("rms6_end!, %d\n", rt_tick_get());
    rt_rms_end_cycle();
    }
    }

    // static void rms7_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms7_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms7_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    // static void rms8_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms8_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms8_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    // static void rms9_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms9_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms9_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    // static void rms10_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms10_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms10_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    // static void rms11_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms11_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms11_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    // static void rms12_entry(void *parameter)
    // {
    // rt_uint32_t i = 0;
    // while(1)
    // {
    // rt_kprintf("rms12_entry works!, %d\n", rt_tick_get());
    // for(i = 0; i < 250000; i++)
    // ;
    // rt_kprintf("rms12_end!, %d\n", rt_tick_get());
    // rt_rms_end_cycle();
    // }
    // }

    int rt_application_init()
    {
    rms1 = rt_rms_create("rms1", rms1_entry, RT_NULL,
    THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD1, WCET1);
    if(rms1 != RT_NULL)
    rt_rms_startup(rms1);

    rms2 = rt_rms_create("rms2", rms2_entry, RT_NULL,
    THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD2, WCET2);
    if(rms2 != RT_NULL)
    rt_rms_startup(rms2);

    // rms3 = rt_rms_create("rms3", rms3_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, 15, 0);
    // if(rms3 != RT_NULL)
    // rt_rms_startup(rms3);
    //
    // rms4 = rt_rms_create("rms4", rms4_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, 15, 0);
    // if(rms4 != RT_NULL)
    // rt_rms_startup(rms4);

    rms5 = rt_rms_create("rms5", rms5_entry, RT_NULL,
    THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD3, WCET3);
    if(rms5 != RT_NULL)
    rt_rms_startup(rms5);

    rms6 = rt_rms_create("rms6", rms6_entry, RT_NULL,
    THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD4, WCET3);
    if(rms6 != RT_NULL)
    rt_rms_startup(rms6);
    //
    // rms7 = rt_rms_create("rms7", rms7_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 4, WCET);
    // if(rms7 != RT_NULL)
    // rt_rms_startup(rms7);
    //
    // rms8 = rt_rms_create("rms8", rms8_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 5, WCET);
    // if(rms8 != RT_NULL)
    // rt_rms_startup(rms8);
    // rms9 = rt_rms_create("rms9", rms9_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 6, WCET);
    // if(rms9 != RT_NULL)
    // rt_rms_startup(rms9);
    //
    // rms10 = rt_rms_create("rms10", rms10_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 7, WCET);
    // if(rms10 != RT_NULL)
    // rt_rms_startup(rms10);
    //
    // rms11 = rt_rms_create("rms11", rms11_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 8, WCET);
    // if(rms11 != RT_NULL)
    // rt_rms_startup(rms11);
    //
    // rms12 = rt_rms_create("rms12", rms12_entry, RT_NULL,
    // THREAD_STACK_SIZE, THREAD_TIMESLICE, PERIOD + 9, WCET);
    // if(rms12 != RT_NULL)
    // rt_rms_startup(rms12);
    //


    return 0;

    }