嵌入式系统:rt-thread
开发板:STM32F429
上了嵌入式操作系统的程序结构复杂,所以串口初始化的过程也不如裸机程序直观明了,在需要根据实际情况修改串口时,就会存在找不到相关程序位置的现象,所以接下来,对rt-thread中的串口初始化过程进行一下梳理。
1.首先在rt-thread的内核Kernel的components.c文件中,有一个rtthread_startup()函数,该函数被$Sub$$main(),__low_level_init(),entry()三个函数中均有调用,而这三个函数中,具体执行哪个,取决于宏定义,而三个函数前对应的宏定义__CC_ARM,__CLANG_ARM,__ICCARM__,__GNUC__是MDK中使用的编译器来选择的。这里推测应该是使用的$Sub$$main()函数。而该函数中$Sub$$的作用就是在main函数执行前,先执行以下这个函数中的代码,即rtthread_startup()函数。
2.rtthread_startup()函数中,主要是rt-thread进行板级的一些初始化,如打印rt-thread的logo信息,系统时钟的初始化,系统调度初始化,空闲进程的初始化等。其中rt_hw_board_init()函数中,就是对一些板级硬件的初始化,该函数的定义位于drv_common.c文件中。