RTT startup.c 코드 학습

1991 단어 rtt
RTT의 학습은 응용층에 집중되고 밑바닥의 코드는 필요할 때 관련된다.
 
startup은 ucos와 유사한 RTT의 시작 코드입니다.
 
void rtthread_startup(void)
{
    /* init board */
    rt_hw_board_init();

    /* show version */
    rt_show_version();

    /* init tick */
    rt_system_tick_init();

    /* init kernel object */
    rt_system_object_init();

    /* init timer system */
    rt_system_timer_init();

    /* init scheduler system */
    rt_system_scheduler_init();

    /* init all device */
    rt_device_init_all();

    /* init application */
    rt_application_init();

    /* init idle thread */
    rt_thread_idle_init();

    /* start scheduler */
    rt_system_scheduler_start();

    /* never reach here */
    return ;
}


 
봤어, rthw_board_init(); 및 rtapplication_init(); 내가 주목해야 할 코드야.
첫 번째는 판급의 초기화이고, 두 번째는 각 라인의 초기화이다.
 -----------------------------------------------------------------------------------------------------------------------------------
#ifdef RT_USING_HEAP
#if STM32_EXT_SRAM
    rt_system_heap_init((void*)STM32_EXT_SRAM_BEGIN, (void*)STM32_EXT_SRAM_END);
#else
#ifdef __CC_ARM
    rt_system_heap_init((void*)&Image$$RW_IRAM1$$ZI$$Limit, (void*)STM32_SRAM_END);
#elif __ICCARM__
    rt_system_heap_init(__segment_end("HEAP"), (void*)STM32_SRAM_END);
#else
    /* init memory system */
    rt_system_heap_init((void*)&__bss_end, (void*)STM32_SRAM_END);
#endif
#endif
#endif

 
이 코드는 실행 중인 무더기의 초기화입니다.외부 RAM, MDK, IAR, GCC에 각각 해당합니다.그 MDK의 기괴한 작법은 다른 블로그에서 서술되었는데, 간단하게 말하면 초기화되지 않은 램을 시작으로 끝까지 하는 것이다.쌓으면 주로 동적 루트의 생성이고 메모리 분배가 필요합니다.정적 스레드 따위의 창고가 알려져 있기 때문에 RAM을 초기화할 수 있습니다.그 기괴한 기호는 램의 끝 주소를 알 수 있도록 링크기 특유의 것이다.

좋은 웹페이지 즐겨찾기