Linux中有很多编程思想可以学习,很多大佬把这些思想、机制运用到单片机的编程上。
下文,在STM32上模拟Linux kernel自动初始化流程。
通常我们写程序都是按照这个套路,一个函数一个函数按照顺序逻辑一个一个的执行下去。
如果逻辑非常复杂,涉及的模块比较多,那么这种顺序执行的代码就会比较臃肿,各模块耦合非常紧密。Linux kernel 中,有各种外设驱动,想按照一个顺序逻辑执行下去,几乎是不可能的。
而kenrel 代码能有这么大的代码量,大而不乱,把各层次,各模块有效的分离,而大量的代码又有逻辑的组织在一起,和这个initcall 有至关重要的作用。
通过模仿这种方式,最后把图片中main函数代码清空,分离这种逻辑,又实现同样的功能。
如何能实现这样的功能了,需要一些背景知识:
1,程序代码的组织
2,链接脚本相关的知识。
3,函数指针的应用。
代码的组织,如图片需要知