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文件分别是什么样的,请画下来。

rtt相关问题总结_第1张图片

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 符号段,将需要在启动时进行初始化的函数指针放到了该段中,形成一张初始化函数表,在系统启动过程中会遍历该表,并调用表中的函数,达到自动初始化的目的。

rtt相关问题总结_第2张图片

初始化顺序参考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 生成发布工程。
 

你可能感兴趣的:(rtthread)