zoukankan      html  css  js  c++  java
  • RTT startup.c 代码学习

    RTT的学习集中在应用层,底层的代码会在必要的时候涉及一下。

    startup是RTT的启动代码,类似于ucos。

    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 ;
    }
    
    


     

    看了一下,rt_hw_board_init(); 和 rt_application_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作为起始一直到结束。堆的话主要是动态线程的创建,内存分配要用。静态线程什么的其栈已知,故初始化RAM有。那个奇奇怪怪的符号是链接器特有的,用来获知已用RAM的结尾地址。

  • 相关阅读:
    UWP Xaml设计器中输入特殊字符
    UWP DEP0700: 应用程序注册失败。[0x80073CF9] Install failed. Please contact your software vendor. (Exception from HRESULT: 0x80073CF9)
    UWP 使用Windows.Media.FaceAnalysis.FaceDetector检测人脸
    .Net Core和.Net Standard直观理解
    双屏互动h5
    前端发展趋势与开发技巧
    git学习总结
    前端路由
    【react开发】使用swiper插件,loop:true时产生的问题解决方案
    【纪念】我的大学同学名单
  • 原文地址:https://www.cnblogs.com/lyyyuna/p/4123955.html
Copyright © 2011-2022 走看看