Raspberry Pi第0课:
介绍这一部分没有实际写代码的部分,只是解释一些基础的概念:关于什么是os,什么是汇编,还有其它的一些重要的基本概念。如果你想直接上来就写代码,学习代码,你应该跳过这一部分。
内容
1 操作系统
2 汇编语言
1 操作系统
操作系统也是程序,只不过是一个非常复杂的程序。他的工作是管理电脑上的其它程序,,包括共享cpu的时间,memory,hardware和其它的资源。一些大的桌面操作系统,你了解的有GNU/linux Mac OS X,还有windows。其它一些设备也需要os,如手机(android),ios,winphone等。
由于操作系统要与硬件沟通,交流,所以要有对特定硬件的一些知识。为了操作系统能够使用这些硬件,驱动的概念被发明出来了。驱动是一小部分代码,这些代码可以added and removed 从你的os,当os要用这个hardware时,就add进去。如果不需要用这个硬件,或是没有这个硬件,这个驱动就remove就行,等你买了这个硬件,只需要add进去,你的电脑就可以用这个硬件了。所以驱动这个东东,使硬件的识别更加灵活了,驱动这个概念也是相对os来说的。这门课里,我们不谈论创建可以remove的驱动,而是针对raspberry pi做一些有针对性的硬件驱动。
对于os有各种各样的设计,这门课只是抓住了操作系统的一个表面。我们主要集中于让os与各种各样的硬件交流。通常这也是最神秘的一部分。
2 汇编代码
一个cpu每秒钟可以处理百万条指令,但是他们必须是非常简单的。这门课大部分的代码都是用汇编来写的。汇编代码是与机器的思考方法非常接近的一种语言。电脑是如何工作的呢?有一个小的device,称为cpu,就是处理器。处理器可以做简单的工作,如对数字做加法。有大量的空间用来存放这些数字,这样的空间叫ram.当电脑上电后,Cpu开始工作,通过执行一系列的指令。这些指令就是程序员写的,这些程序会改变ram中的数据,这些程序可以与连接在cpu上的硬件进行交流。汇编代码就是人类与机器沟通过的工具。
当正常的编写程序时,程序员用编程语言写code,如c++,java,c#,basic,等。然后有一种特殊的程序,称为编译器,把程序员写的code翻译成汇编语言,然后进一步翻译成二进制的机器码。二进制的机器码是机器能够理解的,但是对人类来说是不可读的(不可理解的)。汇编代码要好多了,但是有时也会感觉到代码太少了。记住,你写的每一条汇编代码 都是cpu可以直接理解的,所以汇编代码理解起来相当简单,每条汇编代码都是实际电路可以直接处理的。
编译的过程
C语言编译成汇编,汇编由汇编器变成机器码
如同一般的编程语言,汇编语言也有好多种,不同的汇编语言存在的原因是有很多不同的cpu存在。每一种cpu的设计架构不一样,他们能理解的机器码就不一样。因此一个用汇编写的程序是针对一个特定的cpu的,对其它的架构的cpu是不起作用的。经常,要重新针对不同的cpu写代码,这是一个灾难,但是如果有操作系统,就不会有这样的问题了。大多数的操作系统是用c或是c++写的,所以他们可以很容易的移植,只有确实要用汇编语言写的那部分,才需要重写。
你现在准备开始第1课OK01了。
注意:对于操作系统和编译器,如果你想深入了解一下,可以wiki一下。