2017年(29)
分类: 嵌入式
2017-07-24 13:46:02
原文地址:boot loader能全部用C程序编写吗 作者:Cheney-Xu
boot loader能全部用C程序编写吗
我们说boot loader通常采用汇编和C语言相结合来编写的,那能不能全部用C语言来进行编写呢?为什么? 对于这一问题的答案是:不能。 C程序中所有的代码都是以函数的形式出现的。可能有人要说在C中也可以嵌入汇编代码,能不能用这种方式来实现整个boot loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。那C程序中函数调用要一个什么样的环境呢?堆栈!我们写C程序时在函数名的后面,就是用花括号将代码括起来的, 开始的花括号其实可以理解为有一段汇编代码,进行入栈等操作,保存当前函数的执行环境。结束的花括号也可以理解为有一段汇编代码,进行出栈操作,以便函数返回。 那堆栈从哪来呢?显然,堆栈是一块内存区,也就是说在执行我们用C程序写的main函数之前,必须保证内存已经初始化好了,所以之前必须有一段代码来完成内存的初始化工作,这便是汇编语言的所要完成,SDRAM内存芯片的初始化是boot loader中很重要的一步。也就是说,我们必须保证初始化好了SDRAM内存芯片后,才能进行C函数调用。因此,完全用C语言来实现boot loader是不可行的。 |