RT-Thread 模拟器simulator支持自动初始化机制

本文介绍了如何让RT-Thread的模拟器支持自动初始化机制。通过分析代码和研究,发现需要在VS2019中利用特定的section操作,并修改rtdef.h和components.c文件。在应用层增加自动初始化例程并进行功能验证,最终成功实现了模拟器上的自动初始化功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

  • RT-Thread的自动初始化机制,挺好用的,但是,bsp中模拟器simulator,不支持。
  • 研究了一下自动初始化机制,发现,可以让pc的模拟器,也可以实现自动初始化

 

研究过程

  • 运行bsp的模拟器,使用vs2019。
  • 发现:INIT_BOARD_EXPORT INIT_COMPONENT_EXPORT,没有效果
  • 分析代码发现默认不支持PC端的模拟器:
/* initialization export */
#ifdef RT_USING_COMPONENTS_INIT
typedef int (*init_fn_t)(void);
#ifdef _MSC_VER /* we do not support MS VC++ compiler */
    #define INIT_EXPORT(fn, level)
#else
  • 经过一番的搜索、验证分析,发现,自动初始化机制如下:
  1. 需要使用section(段、节),让编译器把函数指针,放在里面
  2. __attribute__((section(x))) 在VS2019上不支持(_MSC_VER)
  3. 找到基于VS2019 _MSC_VER的section操作,即可实现自动初始化
  4. MSH_CMD_EXPORT,支持模拟器的section的操作,用于导出MSH CMD函数

 

基于VS201

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zhangsz_sh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值