学习RT-thread(RT-thread启动流程、自动初始化函数、RT-thread串口终端)
1.串口终端
串口终端:主要用于调试系统功能或查看系统信息,方便用户进行可视化调试。
RT-Thread本身系统自带一些系统命令行,可以通过这些命令行查看系统信息,比如:线程信息, 信号量信息等。
用户也可以自定义自己的命令行。
1.1 自定义命令行
概念:是指在原有的系统命令行中增加用户自己的命令,自定义命令只需要在函数定义处通过宏定 义的方式进行申明,就可以通过在串口终端输入相应命令。
宏定义:MSH_CMD_EXPORT(comand, desc),参数1:命令(函数名),参数2:命令描述
比如任意一个源文件中调用宏定义申明命令:
int foo(){rt_kprintf("Rice\r\n");return 0;}MSH_CMD_EXPORT(foo, test add cmd);打开串口中断输入help可以看到自己自定义的命令行

2. RT-thread启动流程
在了解RT-Thread启动流程之前,我们需要先了解一下:$Sub$$func() 和 $Super$$func() $Sub$$func() 和 $Super$$func()概念:是一种特殊模式,用于有一个已经存在的且你能被改变的 函数的情况,使用这两个模式可以帮原函数打补丁。
创建一个函数foo()
int foo()
{printf("RiceChen");
}在main函数中调用它,串口终端显示

再创建一个函数$sub$$foo()
int $Sub$$foo()
{printf("Sub");extern void $Super$$foo();$Super$$foo();
}串口终端显示

RT-Thread的启动流程跟其他的RTOS启动不太一样,它在执行main函数之前,会先将硬件,时 钟,系统调度器初始化完之后,在进入main函数。

2.1 什么是自动初始化函数
概念:是指初始化函数不需要被显式调用,只需要在函数定义处通过宏定义的方式进行申明,就会 在系统启动过程中被执行。。
比如任意一个源文件中调用宏定义告知系统初始化需要调用的函数:
int foo(){return 0;}INIT_APP_EXPORT(foo);不用在main函数中调用会自动调用
RT-Thread提供了6个等级的自动初始化宏定义:


