当前位置: 首页 > news >正文

连云港网站建设公司百度推广运营公司

连云港网站建设公司,百度推广运营公司,b2b专门做机械的网站,购物优惠券网站怎么做Keil的两个符号$Sub$ $与 $Super$ $是其做的打“补丁”功能 具体调用方法就是程序中包含有main函数,和 $Sub$ $main 、 $Super$ $main 两个符号 源码先放出来 /* re-define main function */ int $Sub$$main(void) {rtthread_startup();return 0; }/*** brief Thi…

Keil的两个符号$Sub$ $与 $Super$ $是其做的打“补丁”功能
具体调用方法就是程序中包含有main函数,和 $Sub$ $main 、 $Super$ $main 两个符号
源码先放出来

/* re-define main function */
int $Sub$$main(void)
{rtthread_startup();return 0;
}
/*** @brief  This function will create and start the main thread, but this thread*         will not run until the scheduler starts.*/
void rt_application_init(void)
{rt_thread_t tid;#ifdef RT_USING_HEAPtid = rt_thread_create("main", main_thread_entry, RT_NULL,RT_MAIN_THREAD_STACK_SIZE, RT_MAIN_THREAD_PRIORITY, 20);RT_ASSERT(tid != RT_NULL);
#elsert_err_t result;tid = &main_thread;result = rt_thread_init(tid, "main", main_thread_entry, RT_NULL,main_thread_stack, sizeof(main_thread_stack), RT_MAIN_THREAD_PRIORITY, 20);RT_ASSERT(result == RT_EOK);/* if not define RT_USING_HEAP, using to eliminate the warning */(void)result;
#endif /* RT_USING_HEAP */rt_thread_startup(tid);
}
/*** @brief  This function will call all levels of initialization functions to complete*         the initialization of the system, and finally start the scheduler.** @return Normally never returns. If 0 is returned, the scheduler failed.*/
int rtthread_startup(void)
{rt_hw_interrupt_disable();/* board level initialization* NOTE: please initialize heap inside board initialization.*/rt_hw_board_init();/* show RT-Thread version */rt_show_version();/* timer system initialization */rt_system_timer_init();/* scheduler system initialization */rt_system_scheduler_init();#ifdef RT_USING_SIGNALS/* signal system initialization */rt_system_signal_init();
#endif /* RT_USING_SIGNALS *//* create init_thread */rt_application_init();/* timer thread initialization */rt_system_timer_thread_init();/* idle thread initialization */rt_thread_idle_init();#ifdef RT_USING_SMPrt_hw_spin_lock(&_cpus_lock);
#endif /* RT_USING_SMP *//* start scheduler */rt_system_scheduler_start();/* never reach here */return 0;
}
#endif /* RT_USING_USER_MAIN */
void main_thread_entry(void *parameter)
{extern int main(void);*/
#ifdef __ARMCC_VERSION{extern int $Super$$main(void);$Super$$main(); /* for ARMCC. */}
#elif defined(__ICCARM__) || defined(__GNUC__) || defined(__TASKING__) || defined(__TI_COMPILER_VERSION__)main();
#endif
}

理下顺序
我们驱动文件在跳转main函数时由于定义有int $Sub$\$main(void) 所以先执行这个函数,在这个函数中主要是进行系统、板级初始化,在这里面穿件了一个主线程main_thread_entry,而主线程里面调用了 $Super$\$main()就回到main函数执行;所以我们就把main放在一个线程里面,而其他RTOS是在执行main后才进行相关的RTOS初始化,板级初始化等。
可能会引起迷惑的地方
1.为什么要调用 $Super$\$main()而不调用main我觉得按照上面描述的逻辑如果调用main就会又去跳转到int $Sub$\$main(void) 这里无限循环调用下去,所以不会说在这里要调用main进行跳转;
2.为什么还要调用 $Super$\$main()而不是结束了int $Sub$\$main(void)直接返回main去执行,这个我觉得主要是让人们知道最终main的去向,在BX __main 之后都不知道main去哪了,具体细节可以在Keil手册查看相关细节。

http://www.ds6.com.cn/news/72640.html

相关文章:

  • 网站开发建设seo综合查询国产
  • 水果套餐网站深圳关键词优化怎么样
  • 2022腾讯云网站建设方案书搜索引擎营销特点是什么
  • 杭州哪家公司做网站好百度关键词排名突然消失了
  • 网站开发 制作阶段的说课稿营销型网站是什么意思
  • 在国外怎么做网站免费推广公司
  • 网站seo百度百科手机网站智能建站
  • 南阳网站建设赛科优化大师网页版
  • 织梦cms手机网站杭州百度竞价推广公司
  • 玉泉营网站建设公司中山百度推广公司
  • 免费网站建设系统东莞网络公司代理
  • 网站系统jsp模板竞价排名规则
  • 网站备案通讯地址活动策划公司
  • html网站支付链接怎么做的广东疫情最新通报
  • 太原论坛网站开发公司免费网络推广公司
  • 当前互联网发展现状百度seo价格查询
  • 网络链接推广影响seo排名的因素有哪些
  • 网络广告营销方案网站优化的方式有哪些
  • 西安便宜做网站最近发生的热点新闻事件
  • 做网站常用的软件培训seo
  • 北京网站制作的公司营销方式方案案例
  • 大渡口网站建设哪家好女生做sem专员的工作难吗
  • 电视台网站建设方案百度账号登录入口
  • 做市场浏览什么网站营销手机系统安装
  • 视频解析网站建设seo关键词分类
  • 广州市建设工程交易服务中心网站友情链接地址
  • 网站建设中页面网站排名优化软件联系方式
  • web前端怎么制作网站360关键词排名推广
  • 虚拟币交易网站源码给你一个网站seo如何做
  • 建设网站ppt济南seo的排名优化