boot loader能全部用C程序编写吗
在《什么是boot loader》一文中我抛出了一个问题,这个问题如下:
对于这一问题的答案是:不能。C程序中所有的代码都是以函数的形式出现的。可能有人要说在C中也可以嵌入汇编代码,能不能用这种方式来实现整个boot loader呢?再看看题目,这里只考虑所有的代码只能是以函数的形式出现。那C程序中函数调用要一个什么样的环境呢?堆栈!我们写C程序时在函数名的后面,就是用花括号将代码括起来的,开始的花括号其实可以理解为有一段汇编代码(具体细节以后会有文章进行解释)对堆栈进行操作。那堆栈从哪来呢?显然,堆栈是一块内存区,也就是说我们用C程序写代码之前,必须保证内存已经初始化好了、可以用了。回忆一下,我们在《什么是boot loader》一文中提到,SDRAM内存芯片的初始化是boot loader中很重要的一步。也就是说,我们必须保证初始化好了SDRAM内存芯片后,才能进行C函数调用。因此,完全用C语言来实现boot loader是不可行的。
boot loader能全部用C程序编写吗相关推荐
- 什么是Boot Loader
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://yunli.blog.51cto.com/831344/181630 在嵌入式系统 ...
- Boot Loader的启动流程和开发经验总结
Windows CE最大程度继承了桌面版Windows的丰富功能,但是Windows CE并不是一个通用的安装版操作系统.在形形色色的嵌入式设备世界里,一款CE系统通常只会针对某一种硬件平台生成. ...
- Linux学习-Boot Loader: Grub2
boot loader 的两个 stage 在 BIOS 读完信息后,接下来就是会到第一个开机装置 的 MBR 去读取 boot loader 了.这个 boot loader 可以具有选单功能.直接 ...
- Usb Boot Loader(1)
此前一直参考<一个操作系统的实现>这本书,遗憾的是书里面是以FAT12文件系统为例讲解的,于是打算用我FAT32格式的U盘实现一个Boot Loader. 这样就造成了一个问题,不能进行单 ...
- boot loader:Grub
boot loader是载入内核的重要工具,没有boot loader的话,kernel根本没办法被内核加载的 MBR是整个硬盘的第一个sector内的一个块,大小只有446bytes.但loader ...
- 嵌入式系统 Boot Loader 技术内幕-目前看到介绍Boot loader最通俗明了的文章
1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行.一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序.包括固化在固件(firmware) ...
- 嵌入式系统 Boot Loader 技术内幕
转载:http://www.ibm.com/developerworks/cn/linux/l-btloader/index.html 1. 引言 在专用的嵌入式板子运行 GNU/Linux 系统已经 ...
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
未经许可谢绝以任何形式对本文内容进行转载! 一.环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu.另注,本文章中贴 ...
- standalone应用_具有Spring Boot的Spring Integration Standalone应用程序
standalone应用 我之前在博客中写过一种编写独立的Spring Integration应用程序的方法. Spring Boot使创建此独立应用程序变得更加简单. 简单的流程是轮询USGS服务, ...
最新文章
- 正确生成浮点型的方法,解决sqlachemy Float浮点型的坑,生成float类型时,长度和精度均为0,导致查询不到结果!...
- PCIE 硬件接口那点屁事
- 澳大利亚悉尼大学徐畅教授招收深度学习方向全奖博士生
- linux系统管理工具sar(一)
- CF 1098 C. Construct a tree
- Python gevent学习笔记 1
- throws java_基于Java中throw和throws的区别(详解)
- pythonlambda菜鸟教程-Python reduce() 函数
- 维基媒体宣布采用 Vue.js 进行前端开发
- OSI七层模型:TCP/IP HTTP WebSocket MQTT
- ncbi下载数据sra和转换fastq流程
- 乐高大颗粒作品23:磁悬浮列车
- TYPE g_date_tbl_typ IS TABLE OF DATE INDEX BY VARCHAR2(1000);
- 【深度学习】Yolo记录
- 传奇私服服务端制作详细教程
- (翻译)社会认同模式(Social proof)
- 深入解析Javascript异步编程
- Android moudle库使用aar的方法
- 苹果手机怎么备份所有数据_ORICO手机备份宝,数据备份更轻松
- Unity3D 开关按钮Toggle (可以做单选按钮)