RTT startup.c 코드 학습
1991 단어 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을 초기화할 수 있습니다.그 기괴한 기호는 램의 끝 주소를 알 수 있도록 링크기 특유의 것이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[RTT 루틴 연습] 3.1 동적 메모리 관리 rtmalloc 및 rtfreert_malloc 및 rtfree는malloc free와 유사하며 무더기에 메모리를 분배하는 데 사용되며 RT-Thread에서는 작은 메모리법으로 이루어진다.다음 프로그램은 끊임없이 메모리를 분배하고 방출하며 분배된...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.