一般了解一份代码大多数从启动部分开始,同样这里也是采用这种方式,先寻找启动的源头。以MDK_ARM为例。
MDK_ARM的用户程序入口为main()函数,位于main.c文件中。系统启动后先从汇编代码startup_stm32f103xe.s开始运行,然后跳转到C代码,进行RT_Thread系统功能初始化,最后进入用户程序入口main()。
为了在进入main()之前完成RT_Thread系统功能初始化,我们使用了MDK扩展功能$sub$$和$super$$main
可以给main添加$sub$$
的前缀符号作为新功能函数$sub$$main
,这个$sub$$main
可以先调用一些需要补充在main之前的功能函数(这里添加RT_Thread系统初始化功能),在调用$super$$main
转到main()函数执行,这样可以让用户不用去管main()之前的初始化。
关于$sub$$和$super$$
扩展的使用,详见如下:RT-Thread编程高阶用法
下面我们来看看在这段代码:
/*$sub$$main 函数*/
int $sub$$main(void)