基于采用分而治之的方法设计嵌入式系统
发布时间:2008/5/27 0:00:00 访问次数:328
主控制器和从控制器
最基本的原理就是:用主控制器进行集中决策,再交由从控制器分别执行。在最为复杂的系统中,这种方法必不可少,并能够自动执行。比如,手机中的主处理器用于决定屏幕的显示内容以及外设(如lcd显示控制器或无线电收发器)需要完成的工作,而不会直接控制显示的各个像素或是无线电的编/解码。主控制器将告知显示器需要显示什么信息,并由显示器来决定如何显示;同样,主控制器向收发器提供需要编码的音频信号,而收发器则提供解码后的信号。
在其他嵌入式系统中,任务的划分或许不那么明显,但基本思想都是相同的。如果一个中央主控制器能够与远程从设备以及本地设备进行通信,那么整个系统中就可以有统一的控制。另外,为了使一个分布式系统获得成功,需要对接口作明确的定义。
虽然微控制器有许多标准的通信方法,但在主/从嵌入式系统中,最常用的是rs23 2串行接口、spi和i2c。采用这些通信接口的从设备包括较低级的adc、dac、串行eeprom、各类数字i/o,以及较高级的电压排序和监控器件以及闭环风扇控制器等。
将任务分而治之
在目前嵌入式市场的从器件以及可被用作主控制器或定制从控制器的微控制器中,比较流行的通信方法是i2c。这主要是由于i2c价格较低,只需双线/引脚和两个上拉电阻器即可构成,并且简单易用。就分布式嵌入系统而言,i2c(400khz)往往是最佳选择。
将任务分而治之的关键在于:简单的问题要比复杂的问题更加容易解决。此外,将器件彼此分开可以减少它们之间的耦合,并提高系统的可靠性。如果能够正确地分配功能、定义接口,就可以避免普遍存在的一些故障。最后,如果能够很好地利用自己的经验,则在划分任务的过程中就将能产生许多可重用的设计,从而使得工程师在设计下一个项目时不用从头开始。
实现任务的分而治之需要依靠一根通信总线,在有些情况下,总线会影响到某些主控制器/从控制器的特性。在本文中使用i2c作为总线,是因为支持该总线的器件比较普遍,而且测试和调试i2c所需的外部工具价格较低或比较容易创建。
这种主控制器/从控制器的原理在任何嵌入式设计中都是以相同的方法来处理的。首先,确定需要集中做出那些决策,并将它们分配给主控制器;然后把具体操作分配给从控制器去执行。关键在于如何进行任务的划分。一种高效的策略是:不要让主控制器因为任何事情而去等待某个从控制器;如果从控制器需要主控制器提供某些信息,它必须先呼叫主控制器。在有些情况下,这种方法还需要一根中断线,以使从控制器能够呼叫主控制器。
采用i2c i/o扩展器件的面板控制器
本文在一个控制设备面板的系统中采用了该方法,面板由按钮、开关和led组成。在该面板系统中,主控制器是负责管理该系统的主处理器,如嵌入式的windows或linux计算机;从控制器为i2c总线连接i/o扩展器。
通过让主处理器在上电时对i/o扩展器进行配置,按钮/开关检测输入和led状态输出将被传至主处理器。任何一个具有i2c总线的处理器都可以是主控制器,它对设备进行软件配置,并可以方便地改变按钮和led的配置。
而且,由于所有的控制功能都由主控制器完成,因此系统中的硬件部分很简单,而且易于改变。但这种简单的方法也有缺点,当希望增加一个用于调节led亮度的环境光传感器时,增加的工作负担将全部由主控制器来承担,它要保证所有的从控制器能够适应设计变化,并正常工作。但其实主控器只需要知道按钮的状态,并控制led的接通和关断。
设计定制的i2c从控制器件
设计定制器件时应采用定义了稳定协议和接口且经过验证的i2c从控制器实现方案,最常用的协议是目前大多数i2c从控制器件所采用的、基于寄存器的协议。相关概要信息如下:
对于i2c,所有的事务处理均由主控制器启动;
每个从器件都具有一个i2c 7位地址(最低有效位表明事务处理是“读”还是“写”);
每个从器件都具有一个内部地址寄存器,用于存储一个指向包含了数据、命令或状态信息的内部表指针;
每个从器件均定义了其寄存器的地址及其功能,指明它们是只读型的还是读/写型的;
一个写处理事务由一个具有i2c器件7位地址和写操作位的字节以及一个位于其后的、用于设定内部地址寄存器的字节组成,如果在处理事务中有更多的字节,则它们将被写入以新设定的内部地址为起点的从器件;
一个读处理事务由一个具有i2c器件7位地址和读操作位的字节以及一个位于其后的主控制器组成,该主控制器用
主控制器和从控制器
最基本的原理就是:用主控制器进行集中决策,再交由从控制器分别执行。在最为复杂的系统中,这种方法必不可少,并能够自动执行。比如,手机中的主处理器用于决定屏幕的显示内容以及外设(如lcd显示控制器或无线电收发器)需要完成的工作,而不会直接控制显示的各个像素或是无线电的编/解码。主控制器将告知显示器需要显示什么信息,并由显示器来决定如何显示;同样,主控制器向收发器提供需要编码的音频信号,而收发器则提供解码后的信号。
在其他嵌入式系统中,任务的划分或许不那么明显,但基本思想都是相同的。如果一个中央主控制器能够与远程从设备以及本地设备进行通信,那么整个系统中就可以有统一的控制。另外,为了使一个分布式系统获得成功,需要对接口作明确的定义。
虽然微控制器有许多标准的通信方法,但在主/从嵌入式系统中,最常用的是rs23 2串行接口、spi和i2c。采用这些通信接口的从设备包括较低级的adc、dac、串行eeprom、各类数字i/o,以及较高级的电压排序和监控器件以及闭环风扇控制器等。
将任务分而治之
在目前嵌入式市场的从器件以及可被用作主控制器或定制从控制器的微控制器中,比较流行的通信方法是i2c。这主要是由于i2c价格较低,只需双线/引脚和两个上拉电阻器即可构成,并且简单易用。就分布式嵌入系统而言,i2c(400khz)往往是最佳选择。
将任务分而治之的关键在于:简单的问题要比复杂的问题更加容易解决。此外,将器件彼此分开可以减少它们之间的耦合,并提高系统的可靠性。如果能够正确地分配功能、定义接口,就可以避免普遍存在的一些故障。最后,如果能够很好地利用自己的经验,则在划分任务的过程中就将能产生许多可重用的设计,从而使得工程师在设计下一个项目时不用从头开始。
实现任务的分而治之需要依靠一根通信总线,在有些情况下,总线会影响到某些主控制器/从控制器的特性。在本文中使用i2c作为总线,是因为支持该总线的器件比较普遍,而且测试和调试i2c所需的外部工具价格较低或比较容易创建。
这种主控制器/从控制器的原理在任何嵌入式设计中都是以相同的方法来处理的。首先,确定需要集中做出那些决策,并将它们分配给主控制器;然后把具体操作分配给从控制器去执行。关键在于如何进行任务的划分。一种高效的策略是:不要让主控制器因为任何事情而去等待某个从控制器;如果从控制器需要主控制器提供某些信息,它必须先呼叫主控制器。在有些情况下,这种方法还需要一根中断线,以使从控制器能够呼叫主控制器。
采用i2c i/o扩展器件的面板控制器
本文在一个控制设备面板的系统中采用了该方法,面板由按钮、开关和led组成。在该面板系统中,主控制器是负责管理该系统的主处理器,如嵌入式的windows或linux计算机;从控制器为i2c总线连接i/o扩展器。
通过让主处理器在上电时对i/o扩展器进行配置,按钮/开关检测输入和led状态输出将被传至主处理器。任何一个具有i2c总线的处理器都可以是主控制器,它对设备进行软件配置,并可以方便地改变按钮和led的配置。
而且,由于所有的控制功能都由主控制器完成,因此系统中的硬件部分很简单,而且易于改变。但这种简单的方法也有缺点,当希望增加一个用于调节led亮度的环境光传感器时,增加的工作负担将全部由主控制器来承担,它要保证所有的从控制器能够适应设计变化,并正常工作。但其实主控器只需要知道按钮的状态,并控制led的接通和关断。
设计定制的i2c从控制器件
设计定制器件时应采用定义了稳定协议和接口且经过验证的i2c从控制器实现方案,最常用的协议是目前大多数i2c从控制器件所采用的、基于寄存器的协议。相关概要信息如下:
对于i2c,所有的事务处理均由主控制器启动;
每个从器件都具有一个i2c 7位地址(最低有效位表明事务处理是“读”还是“写”);
每个从器件都具有一个内部地址寄存器,用于存储一个指向包含了数据、命令或状态信息的内部表指针;
每个从器件均定义了其寄存器的地址及其功能,指明它们是只读型的还是读/写型的;
一个写处理事务由一个具有i2c器件7位地址和写操作位的字节以及一个位于其后的、用于设定内部地址寄存器的字节组成,如果在处理事务中有更多的字节,则它们将被写入以新设定的内部地址为起点的从器件;
一个读处理事务由一个具有i2c器件7位地址和读操作位的字节以及一个位于其后的主控制器组成,该主控制器用