brew教程

上传人:小** 文档编号:89122582 上传时间:2019-05-18 格式:DOC 页数:214 大小:1.21MB
返回 下载 相关 举报
brew教程_第1页
第1页 / 共214页
brew教程_第2页
第2页 / 共214页
brew教程_第3页
第3页 / 共214页
brew教程_第4页
第4页 / 共214页
brew教程_第5页
第5页 / 共214页
点击查看更多>>
资源描述

《brew教程》由会员分享,可在线阅读,更多相关《brew教程(214页珍藏版)》请在金锄头文库上搜索。

1、第一篇 勿在浮沙筑高塔 对于现在从事软件开发很多人来说,都是直接接触的Windows操作系统,一开始学习的东西就是在Windows下的图形编程,尤其是可以快速开发的诸如VB、Delphi和C+ Builder等语言。它们的程序开发方式就像是作画一样,通过将控件放到对应的窗体上,然后设置属性,完成事件处理过程就可以生成一个像模像样的Windows程序了。虽然使用这种语言可以很容易的开发出应用程序来,但是却缺乏了对系统的深入了解,只知道怎么做,却不知道为什么这么做以及它是怎么实现的。归根结底,就是缺乏对底层实现原理的知识。正如本章的标题“勿在浮沙筑高塔”一样,缺乏根基总还是底气不足!不过别担心,在

2、这部分里,我将讲述我们所需要的一些“根基”。当然如果您已经对这些知识有所了解,并且只想看看BREW是个什么样子,那么可以跳过这一部分,而直接进入到第二部分。同时,在我看来,不了解硬件结构的程序员不会成为一个最优秀的程序员。因为整个软件和硬件组成了一个系统,如果我们不了解硬件知识,那么我们也不会了解整个软件的来龙去脉,也就不能从整体上把握程序的特点,要写出优秀的程序是很困难的。像VB、Delphi和C+ Builder等PME(Property Method Event-Driven )语言虽然也给了程序员一定的开发空间,但是缺乏基础的大厦毕竟筑不高!所以我希望每个程序员都能具备一定的硬件知识,

3、这样才能站得高看得远。如果您觉得PC太复杂了,那么您可以研究相对简单的嵌入式系统。当然并不是所有的嵌入式系统都简单,比如手机就是一个要比PC系统更为复杂的系统,因为它其中包含了无线通信部分的内容,只不过我们现在不管这些内容而只是摘取计算机系统相关的内容而已。这一篇的主要内容介绍如下:第一章是硬件基础,任何软件平台都离不开硬件平台的支持,而一些设备的原理却成为了我们学习的障碍。在这一章里,我们将获得一部分硬件的基础知识,虽然它并不全面,但是我想为了阅读本书是足够了。第二章是软件基础,在这里主要讲述了C语言的相关知识。这部分属主要是用我个人的描述方式来讲解C语言的细节,希望对我们后续的理解能够有所

4、帮助。第三章是编译器基础,从中我们可以了解到各种不同类型的编译器以及它们的区别。更为重要的是它介绍了编译器对程序中代码和数据的处理方式,同时使用了一个最小的ARM系统的例子,以此来展示C语言更加本质的东西。 第四章是工程管理(Make File)基础,在这一章里将主要讲述关于Make File的知识,同时给出了一个可以用于大型系统的Make File框架。设置这一章的主要考虑是到现在除了比较专业的领域外,大多数人都已经接触不到它了,然而实际上它却很有用。第一章 硬件基础 硬件是软件的运行平台,没有硬件的支撑软件也将不复存在。您能想象没有显示器软件将如何显示图形,没有CPU软件将如何运行吗?反正

5、我想象不到!但是如果把问题反过来问就问到本质了,软件运行需要哪些硬件支持呢?看图1.1:CPURAMROM输出设备输入设备存储设备图1.1 系统结构框图 我们抛开硬件的什么电器特性等等,去芜存菁,就是上面的这个图了。如果程序要运行没有CPU是不行的,CPU要快速的交换数据,没有RAM也是不行的。因此无论任何系统,CPU和RAM都是必不可少的。您一定会提醒我ROM不也是不变的吗?这种说法不完全对,因为在PC系统和嵌入式系统之间ROM的作用是不一样的。在PC系统中ROM就是那个BIOS芯片,是用来提供系统的启动代码和基本的输入输出功能的;而在嵌入式系统中,ROM存储了全部的代码,它已经将PC中的B

6、IOS和硬盘的与代码相关的功能混合在一起了。设备PC系统典型硬件设备嵌入式系统典型硬件设备CPU任何CPU任何CPURAM任何RAM任何RAMROMBIOS芯片Flash芯片存储设备硬盘Flash芯片输入设备键盘键盘输出设备显示卡+显示器LCD显示屏 PC的ROM BIOS芯片可以采用Flash芯片,在这里之所以不写成Flash芯片是因为BIOS的作用和嵌入式系统的Flash作用不大一样,使用BIOS以示区分。1.1 CPU和RAM从软件观点来讲,任何CPU和RAM都可以应用于各种系统中,不存在明显的区别,只要CPU可以执行指令控制设备就可以了。但是考虑到耗电以及体积(嵌入式设备通常要求耗电低

7、、体积小)等问题,嵌入式系统就发展出了专用的CPU芯片。当前应用最广泛的是ARM CPU。ARM CPU是由英国的ARM公司设计的,由于其执行效率高,体积小,耗电少等特点被广泛应用于嵌入式系统。由于嵌入式系统要求高集成度,通常不会存在单独的CPU芯片,而是将CPU和很多的外围电路集成到一起,做成一块芯片,因此ARM采用授权的方式提供内核芯片设计,以便于使用者进行芯片的集成。CPU按照次执行指令的数据带宽可以分为16位、32位、64位等。32位CPU一次只能处理32位,也就是4个字节的数据;而64位CPU一次就能处理64位即8个字节的数据。如果我们将总长128位的指令分别按照16位、32位、64

8、位为单位进行编辑的话:旧的16位CPU(如Intel 80286 CPU)需要8个指令,32位的CPU需要4个指令,而64位CPU则只要两个指令。显然,在工作频率相同的情况下,64位CPU的处理速度比16位、32位的更快。除了运算能力之外,与32位CPU相比,64位CPU的优势还体现在系统对内存的控制上。由于地址使用的是特殊的整数,而64位CPU的一个ALU(算术逻辑运算器)和寄存器可以处理更大的整数,也就是更大的地址。传统32位CPU的寻址空间最大为4GB,使得很多需要大容量内存的大规模的数据处理程序在这时都会显得捉襟见肘,形成了运行效率的瓶颈。而64位的处理器在理论上则可以达到1800万个

9、TB(1TB=1024GB),将能够彻底解决32位计算系统所遇到的瓶颈现象。当然64位寻址空间也有一定的缺点:内存地址值随着位数的增加而变为原来的两倍,这样内存地址将在缓存中占用更多的空间,其他有用的数据就无法载入缓存,从而引起了整体性能一定程度的下降。在进行系统设计时,会根据不同寻址能力的CPU来进行寻址空间的分配。由于CPU都是通过设备的寄存器(这个寄存器可以理解为设备本身带的RAM)来控制设备的,因此地址空间的划分就显得十分重要。例如,一个具有32位寻址能力的CPU不可能讲全部的地址空间都分配给RAM,好比PC系统需要为BIOS分配存储空间等。也就是说只要是需要CPU直接控制的外部设备都

10、需要为其分配CPU地址空间。RAM就是可以随机访问,快速读写的存储器。CPU可以直接从RAM中取得数据(CPU可以从所有分配了地址空间的设备寄存器中取得数据)或代码指令,因此RAM的访问速度将直接影响系统的性能。1.2 ROM存储芯片 ROM是每个计算机系统必不可少的,但是其实现的方式却不尽相同。在我们熟悉的PC系统中,ROM是一个称作BIOS(Base Input & Output System)的芯片。CPU上电时会从ROM中读取指令,因此没有ROM的系统是不能够运行的,因为如果没有ROM,CPU将无法获得起始的执行指令。在PC系统中BIOS的作用除了提供起始指令以外,还会扫描硬件设备并初

11、始化主板(Main Board)上的硬件接口。由于PC上的接口都遵循着一组通用的协议,因此BIOS就可以实现所有硬件接口的驱动(如USB接口、显示卡、键盘和鼠标等)和硬件的数据输入输出功能,这也是BIOS(基本输入输出系统)名称的由来了。在BIOS控制的硬件接口中也包含了硬盘的控制接口,在BIOS初始化完成后就会到硬盘主分区上查找启动文件(注3),后面的事情就交给PC的操作系统了。这个过程请看图1.2。 通常,在硬盘内有一个主引导记录区,在安装操作系统的时候由操作系统写入Boot程序,BIOS就是取出这段程序然后执行。由于Boot程序是由操作系统写入的,因此从这个Boot程序开始,系统的运行权

12、限就交由操作系统来控制了。以Windows2000操作系统为例,这段代码区域执行时会搜索名叫“NTLDR”的系统文件。之所以分成Boot程序和NTLDR文件的原因是硬盘的Boot Sector很小(只有466Bytes),不可能容纳全部的启动程序。 图1.2只是一个启动的示意图,在这里我并没有详细的列出每一个必须的步骤,因为我的目的只是让我们能够了解BIOS硬件芯片在系统中的作用。 对比PC的BIOS,嵌入式系统由于软件规模小,因此将引导代码和操作系统代码全部放到了系统的Flash芯片中了。正如我们所知道的,PC机上大部分的操作系统代码全部放在硬盘上,然后从硬盘上将程序载入内存执行。而嵌入式系

13、统中目前大多数采用直接寻址的方式从Nor Flash芯片中读取代码并执行。因此,实际上嵌入式系统简化了PC系统的设计,将PC系统中的BIOS和硬盘代码全部集中到了一个Flash芯片上。因此BIOS虽然也可以使用Flash芯片,但是相对于嵌入式系统来说,他们的含义和作用却不同。BIOS自检显卡BIOS检测CPU型号检测、内存测试读取硬盘启动扇区获取操作系统启动文件图1.2 PC开机流程Flash芯片对于我们来说并不陌生,那些可以更新BIOS程序的BIOS芯片也是使用Flash芯片实现的,还有MP3用的SD卡等等也是Flash芯片。Flash芯片是一种可以多次擦写的存储芯片,广泛的应用于嵌入式系统

14、。Flash的特点是耗电低,容量大(相对于嵌入式系统而言),写入之前需要先擦除(因为Flash芯片的存储单元只允许从1变到0)。当前流行的分为NOR Flash和NAND Flash。NAND与NOR Flash的区别主要有:1、NAND Flash的空间比Nor Flash大2、NAND Flash的访问速度比Nor Flash快3、NAND Flash只有Page访问模式,Nor Flash可以进行Page和直接地址访问(直接地址访问也就是CPU可以直接寻址,或者叫做随机访问)4、NAND Flash允许有坏块,但是Nor Flash不能有坏块5、NAND Flash比NOR Flash更

15、加便宜在嵌入式系统中,NOR 和NAND都可以做为代码区和文件系统区来使用。通常情况下NOR和NAND做为嵌入式文件系统区的时候都使用Page模式。Page模式允许一次读取多个字节,就像硬盘的最小读写单位是扇区一样,只不过Flash的最小读写单位叫做Page。Page模式下可以加快Flash的读访问;二是增加一个类似硬盘的引导区(通常是第一个Page),系统启动的时候使用引导区的代码将全写速度。由于NAND Flash只支持Page读写模式,因此使用NAND Flash做为代码区的时候需要外加控制电路。当前使用NAND做为代码区正在成为一种流行的趋势(因为NAND Flash成本更低),主要的实现方式有两种:一是添加仿真电路使得NAND Flash可以支持随机部NAND中的代码复制到RAM中执行。当然,可以设想随着将来嵌入式操作系统的发展,动态载入内存的形式也许就会出现了,但是目前嵌入式系统仍然没有发展到这个地步。更进一步,当前应用于嵌入式系统的微型硬盘也已经出现了,或许更为复杂的操作系统也可以应用在嵌入式系统上了。在这里我们主要介绍的ROM存储芯片是Flash,严格意义上说Flash并不能称作ROM,因为ROM是只读存储器(Read Only Memory),而Flash是一种可读可写的芯片。但是由于ROM“一次成型、终生不变”的特点,不便于升级换代,现

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 商业/管理/HR > 管理学资料

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号