驱动程序在控制CPU内置芯片与外部设备时有什么不同呢?我觉得主要有两个最主要的不同:
1:CPU内部的设备效能通常比较好,而且绝对不会有硬件线路设计的错误问题,所以软件工程师直接写驱动程序即可。至于外部设备则可能发生大大小小的设计疏失、驱动程序编写往往还肩负帮忙硬件除错的任务。
2:CPU内部的设备是用缓存器(memory mapping register)控制,而外部装置则只能CPU的PIN引脚与其相连接,所以必须通过控制这些PIN引脚来控制外部装置。
我再仔细想了一下,虽然外部装置是通过CPU的PIN引脚来控制,但程序要设定CPU PIN引脚的状态,从CPU PIN引脚产生中断等还是得通过CPU缓存器。我们写的程序是让CPU执行的,所有的控制命令都是以CPU为起点,所有外部的状况也都是集中到CPU。CPU像是大脑,它的PIN引脚就像是神经线,连接到各个受控制的器官。所以驱动程序要做的事情就是通过CPU规定的方法来控制各个PIN引脚,所谓CPU规定的方法通常就是操作缓存器,至于要用到哪种类型的PIN引脚(如GPIO A/D port等)与外部设备连接,要用到什么方式控制(从最简单的设定PIN引脚的high/low状态 、使用中断、或者以较复杂的通信协议,)则每一个装置都不一样,好好详读该装置的date sheet与sample code是必要的。 |