rtt相关问题总结

1、总结RT-Thread的启动流程。(启动文件部分跳过)

/* 关中断 */
	rt_hw_interrupt_disable();

    /* 板级初始化:需在该函数内部进行系统堆的初始化 */
    rt_hw_board_init();

    /* 打印 RT-Thread 版本信息 */
    rt_show_version();

    /* 定时器初始化 */
    rt_system_timer_init();

    /* 调度器初始化 */
    rt_system_scheduler_init();

#ifdef RT_USING_SIGNALS
    /* 信号初始化 */
    rt_system_signal_init();
#endif

    /* 由此创建一个用户 main() 线程 */
    rt_application_init();

    /* 定时器线程初始化 */
    rt_system_timer_thread_init();

    /* 空闲线程初始化 */
    rt_thread_idle_init();

    /* 启动调度器 */
    rt_system_scheduler_start();

2、非运行时与运行时的image文件分别是什么样的,请画下来。

3、MDK环境下各种数据段存储的什么数据?

有data 段 ZI段 RO RW
		1)Code:代码段,存放程序的代码部分;

		2)RO-data:只读数据段,存放程序中定义的常量;

		3)RW-data:读写数据段,存放初始化为非 0 值的全局变量;

		4)ZI-data:0 数据段,存放未初始化的全局变量及初始化为 0 的变量;

4、在RT-Thread启动时,关了中断,那么在什么时候开启的中断?

       在启动调度器后进行任务调度的时候会先禁止中断,然后再开启中断

5、总结自动初始化原理。

RT-Thread 的自动初始化机制使用了自定义 RTI 符号段,将需要在启动时进行初始化的函数指针放到了该段中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。

初始化顺序参考rttread启动流程。

6.总结bsp制作

bsp制作总结(以stm32f103ze为例)rt-thread\bsp\stm32\stm32f103-atk-nano\board
1.进入rtthread官网下载rtthread源码
2.进入rt-thread\bsp\stm32\libraries\templates拷贝stm32f10x文件
  到rt-thread\bsp\stm32\文件夹下
3.重命名stm32f10x为my_bsp
4.进入my_bsp\board\CubeMX_Config\倒开CubeMX工程进行配置,生成工程
5.拷贝my_bsp\board\CubeMX_Config\src\main.c中的SystemClock_Config();函数
  到my_bsp\board\borad.c 中替换borad.c 中的SystemClock_Config()函数。
6.根据芯片的flash和ram修改borad.h linker_scripts文件夹。
7.修改Kconfig文件
8.使用env 配置生成工程
9.修改工程,修改错误,更改led灯引脚,下载到硬件。
10.使用scons --dist 生成发布工程。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值