当你做关于硬件的驱动开发时,你一定会用到很多操作硬件的接口函数,如通过对端口的操作可以对硬盘进行读写操作;系统提供的中断也可以在显示设备上显示出一些字符和图形...等等
作为软件工程师,我们都知道,高级语言编写的程序最后编译后的binary都是0,1,1,0等组成的二进制文件。那么软件编译后的“软件”概念的0,1如何最后控制硬件呢?比如,我们写一个0,最后如何让硬件知道它的某一个引脚应该设为低电平呢?我们编程一般都有硬件操作的抽象接口,如HAL硬件抽象层,将我们软件与硬件的概念进行了隔离...我一直在想一个问题“软件”和“硬件”到底是水火的关系,它们最终是通过什么能沟通的,一个“无形”的软件到底怎么跟“有形”的硬件通信呢?
好,先看软件的概念:
软件(英文:Software)是一系列按照特定顺序组织的计算机数据和指令的集合。软件是指令和数据的集合,它们保存在内存或磁盘等存储设备中,如果这么想了,所谓软件,并不是“无形”的东西,它必定是以一种有形的形式存储在磁盘或内存中,也可以理解为根本没有所谓的软件,软件只是一种抽象概念,我们通过显示器看到的软件中的0,1,其背后却有CPU通过读“软件”中的指令和数据,然后通过一系列过程驱动显示器,呈现给我们的无形的“0,1”。
软件,只在意念之间....