Chinaunix首页 | 论坛 | 博客
  • 博客访问: 74902
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 50
  • 用 户 组: 普通用户
  • 注册时间: 2017-07-16 15:57
文章分类

全部博文(29)

文章存档

2017年(29)

我的朋友

分类: 嵌入式

2017-07-24 13:46:02

boot loader能全部用C程序编写吗

 

我们说boot loader通常采用汇编和C语言相结合来编写的,那能不能全部用C语言来进行编写呢?为什么?

对于这一问题的答案是:不能。

C程序中所有的代码都是以函数的形式出现的。可能有人要说在C中也可以嵌入汇编代码,能不能用这种方式来实现整个boot loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。C程序中函数调用要一个什么样的环境呢?堆栈!我们写C程序时在函数名的后面,就是用花括号将代码括起来的,

开始的花括号其实可以理解为有一段汇编代码,进行入栈等操作,保存当前函数的执行环境。结束的花括号也可以理解为有一段汇编代码,进行出栈操作,以便函数返回。

那堆栈从哪来呢?显然,堆栈是一块内存区,也就是说在执行我们用C程序写的main函数之前,必须保证内存已经初始化好了,所以之前必须有一段代码来完成内存的初始化工作,这便是汇编语言的所要完成,SDRAM内存芯片的初始化是boot loader中很重要的一步。也就是说,我们必须保证初始化好了SDRAM内存芯片后,才能进行C函数调用。因此,完全用C语言来实现boot loader是不可行的。

 原文地址:http://yunli.blog.51cto.com/831344/182373

 

阅读(1598) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~