一种嵌入式芯片及其程序空间扩展的方法

文档序号:6554147阅读:144来源:国知局
专利名称:一种嵌入式芯片及其程序空间扩展的方法
技术领域
本发明涉及嵌入式系统领域,尤其涉及一种嵌入式芯片及其程序空间扩展的方法。
背景技术
在嵌入式系统领域,8位/16位单片机得到了广泛的应用,由于地址总线位数的限制,其程序区的大小有限,如8位机的程序空间大小最大为64Kbytes,如果系统的程序量大于64K bytes,就需要扩展系统的程序空间。通常情况下是采用通用IO端口(GPIO,General Purpose Input/Output)扩展地址线的方式,使地址总线的宽度增加,则对应的程序空间自然得到扩展。但是,此方法需要占用单片机有限的GPIO资源,扩展的空间越大,占用的IO资源越多;同时,扩展地址空间需要采用更大容量的对应的存储器件,结果将增加系统的成本,造成IO资源紧张。
为能够充分利用8位/16位单片机有限的程序空间,实现程序区的扩展,针对应用NAND FLASH芯片的嵌入式系统,本方法提出了一种程序空间复用的概念系统软件设计时按任务划分,把在系统中不需要同时运行的任务放在相同的程序空间;从NAND FLASH中运行应用程序。在满足系统功能的前提下,实现固件的升级,有效地降低系统成本。

发明内容
本发明所要解决的技术问题在于提供一种嵌入式芯片及其程序空间扩展的方法,用以充分利用8位/16位单片机有限的程序空间,实现程序区的扩展。
本发明提供一种嵌入式系统芯片,包括只读存储器与随机存储器,通过地址总线与数据总线,和CPU相连,还包括非易失型存储器接口,通过地址总线与数据总线,和CPU相连,用于与非易失型存储器通讯连接;所述只读存储器中存储有启动程序,所述随机存储器包括第一存储区与第二存储区;所述存储于只读存储器中的启动程序在系统上电时执行,通过所述非易失型存储器接口,将存储于非易失型存储器中的操作系统内核程序复制到所述第一存储区,同时切换第一存储区为程序区,然后跳转到所述第一存储区执行系统内核程序;所述操作系统内核程序执行后,根据任务调度优先级,将存储于非易失型存储器中的系统任务程序,通过所述非易失型存储器接口,复制到所述第二存储区中等待执行。
所述复制到第一存储区中的操作系统内核程序执行后,将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
所述存储于只读存储器中的启动程序,在将系统内核程序复制到所述第一存储区后,再将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
所述复制到第一存储区中的操作系统内核程序在控制任务切换时,如果需要运行的高优先级任务不在所述第一与第二存储区中,则通过所述非易失型存储器接口,将存储于非易失型存储器中的高优先级任务复制到所述第二存储区中等待执行。
所述非易失型存储器为NAND FLASH存储器。
所述随机存储器还包括系统专用数据区,用于存储系统数据。
所述的芯片,进一步包括直接存储访问控制器,通过地址总线与数据总线,与CPU和非易失型存储器接口相连,用于控制从非易失型存储器向所述第一存储区与第二存储区复制程序。
本发明还提供一种对嵌入式系统的程序空间进行扩展的方法,包括如下步骤
(1)在嵌入式系统芯片中设置非易失型存储器接口,并通过地址总线与数据总线,和芯片内部集成的CPU、只读存储器与随机存储器相连;(2)将随机存储器的存储空间划分为第一存储区与第二存储区;(3)将非易失型存储器通过所述非易失型存储器接口与所述嵌入式系统芯片相连;(4)将启动程序存储于所述只读存储器中,将操作系统内核程序与系统任务程序存储于所述非易失型存储器中的不同区间;(5)所述存储于只读存储器中的启动程序在系统上电时执行,通过所述非易失型存储器接口,将存储于非易失型存储器中的操作系统内核程序复制到所述第一存储区,同时切换所述第一存储区为程序区,然后跳转到所述第一存储区执行系统内核程序;(6)所述操作系统内核程序执行后,根据任务调度优先级,将存储于非易失型存储器中的系统任务程序,通过所述非易失型存储器接口,复制到所述第二存储区中等待执行。
其中所述步骤(4),进一步将系统通用任务程序也存储于所述非易失型存储器的特定区间;所述步骤(6),复制到第一存储区中的操作系统内核程序执行后,将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
所述步骤(4),进一步将系统通用任务程序也存储于所述非易失型存储器的特定区间;所述步骤(5),存储于只读存储器中的启动程序,在将操作系统内核程序复制到所述第一存储区后,再将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;在步骤(6)中,由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
所述的方法,进一步包括步骤(7)所述复制到第一存储区中的操作系统内核程序在控制任务切换时,如果需要运行的高优先级任务不在所述第一与第二存储区中,则通过所述非易失型存储器接口,将存储于非易失型存储器中的高优先级任务复制到所述第二存储区中等待执行。
所述非易失型存储器为NAND FLASH存储器。
所述步骤(2),进一步将随机存储器的存储空间划分出系统专用数据区,用于存储系统数据。
所述步骤(5)与步骤(6)中的程序复制过程,是在芯片内部集成的直接存储访问控制器的控制下进行的。
所述步骤(4),存储于非易失型存储器中的程序,在编译时,对需要在芯片内部的相同存储区运行的程序,其对应编译地址相同。
所述步骤(7),操作系统内核程序在控制任务切换时,保留优先级在一定范围之内的任务在第二存储区中运行,通过任务的优先级作为任务程序是否需要在第二存储区中运行的标志;在任务切换过程中,利用任务程序的优先级判断待运行的任务的运行空间是否应该在第二存储区中;如果否,则直接完成任务切换,运行更高优先级任务;如果应该在第二存储区中运行,则从非易失型存储器中复制高优先级任务程序到第二存储区中,然后运行第二存储区中的该任务程序。
本发明针对使用NAND FLASH的嵌入式系统,充分利用芯片内部的有限的程序空间,以及芯片内部程序区、数据区复用的特点,实现了程序从NAND FLASH中运行,既扩充了系统的程序空间,又降低了系统的成本,而且本发明所述方法需要占用系统GPIO资源,毋须更大容量空间的程序存储器。


图1是本发明实施例的一种嵌入式芯片程序空间扩展的系统框图;
图2是本发明实施例的缓存1、缓存2通用配置模式的存储区间分配图;图3是本发明实施例的缓存1、缓存2影子配置模式下缓存1为程序区配置的存储区间分配图;图4是本发明实施例的缓存1、缓存2影子配置模式下缓存1、2都为程序区配置的存储区间分配图;图5是本发明实施例的固件的组成框图;图6是本发明实施例的固件运行流程图;图7是本发明实施例的缓存1、缓存2以及NAND FLASH的设置示意图,用以支持扩展系统程序空间;图8是本发明实施例的扩展程序空间方法的流程图。
具体实施例方式
通常8位/16位单片机采用将程序存储器、数据存储器分开寻址的哈佛结构,而本方法针对8位/16位单片机的特点,通过修改8位/16位单片机的读、写控制方式,进行了软、硬件的特殊设计,使得系统既可以利用随机存储器作为系统的程序存储器,又可以作为系统的数据存储器,做到了程序存储器、数据存储器的复用;存储器要作为系统的程序区使用,必须能够进行字节的读操作,而NAND FLASH不能够进行字节的读写操作,只能够以页(页面大小为512字节或者2k字节)作为操作的基本单位,其特点决定了NAND FLASH不适合作为系统的程序存储区,本方法通过对系统任务切换相关内核代码的独特设计,使系统可以实现在任务切换时从NAND FLASH中实时拷贝程序代码功能。
本发明的核心在于缓存的设计与使用方法对系统的RAM区进行了特殊设计,使其既可以作为数据区使用,又可以作为程序区使用;在作为程序区使用时,通过系统软件的特殊设计可以使不同的程序(任务)运行在本区间内(比如本区间大小为4k bytes,10个任务可在此空间运行,则相当于程序空间扩展了36k bytes)。
如图1所示,为一种嵌入式芯片在支持8位/16位单片机程序空间扩展时的系统框图,在芯片内部集成有8位/16位CPU内核,BOOT ROM,DMAController,RAM;同时支持NAND FLASH Interface、GPIO等接口。
其中BOOT ROM为启动代码区,在系统上电复位后首先运行BOOT ROM区间的程序,启动代码的功能包括(1)拷贝功能从NAND FLASH中拷贝操作系统内核和部分应用程序到缓存工作;(2)切换缓存1区为程序区,所谓“切换”是通过硬件的控制信号的切换完成的;(3)跳转到RAM区间开始执行应用程序。
DMA Controller无需CPU的参与,实现从NAND FLASH拷贝数据到RAM区。通过DMA Controller可以提高数据拷贝的速度,从而提高系统的任务切换速度;NAND FLASH Interface提供与NAND FLASH通讯的硬件接口;RAM系统的数据区;SFR单片机的特殊功能寄存器;缓存1、缓存2随机存储器,既可以作为程序区使用,又可以作为数据区使用;特别地,缓存就是特殊的RAM,与RAM的区别只是逻辑上的划分。在物理上,它们可以是同一个RAM(造成整个RAM既可以作为数据区使用,又可以作为程序区使用),或不同的RAM。缓存1和缓存2的工作模式可以通过软件进行配置,配置模式包括通用配置模式和影子配置模式。
在通用配置模式下,固件在BOOT ROM中运行,缓存1和缓存2作为系统的数据区使用,可以从NAND FLASH中拷贝程序代码到缓存1、缓存2;存储区间划分,如图2所示,为通用模式存储区间分配图。
在影子配置模式下,分两种情况(a)缓存1作为系统程序区使用,缓存2作为系统数据区使用,存储区分配如图3所示;(b)缓存1、缓存2同时作为系统的程序区使用,存储区分配如图4所示。
此三种情况,是在说明了软件的实现过程,实现方式对缓存进行了分区,一部分区间下载操作系统的内核(操作系统的内核本升级使用),另一部分作为不同任务的运行空间存在。
在本发明所述的嵌入式芯片系统中,其中的固件组成如图5所示,固件主要包括Boot Loader为系统的启动代码模块,保存在BOOT ROM区。在系统上电复位时,从NAND FLASH中拷贝Os Kernel、Universal Task到缓存1;切换缓存1为系统程序区;跳转到缓存1区,执行系统应用程序;OS Kernel操作系统内核代码模块,实现系统的任务调度,扩展程序空间的功能;Universal Task通用任务,只在上电复位时由Boot loader从NANDFLASH中拷贝到缓存1,不需要重复拷贝;主要为系统中使用频繁的任务或函数;Special Task特殊任务,即可以在相同的程序空间缓存2中运行的任务,系统中可以包含多个特殊任务以扩展程序空间;从而实现系统程序空间的扩展。
如图6所示,为固件支持系统运行的主要流程图,包括步骤601,设置缓存1为数据区;步骤602,从NAND FLASH中拷贝代码到缓存1;步骤603,切换缓存1为程序区;步骤604,开始多任务运行。
固件运行对系统进行初始化后,为了可以在芯片内部有限的程序空间运行更大程序(大于芯片内部的最大程序空间),利用芯片内部的缓存2空间,所有任务在微观上是串行运行的特点把缓存2空间作为程序扩展的复用空间,即多个任务都可以在缓存2中运行,需要扩展程序空间,如图7所示,用于扩展系统程序空间的缓存1、缓存2以及NAND FLASH的设置方式图。其中,所有的Special Task任务代码保存在NAND FLASH的不同区间,所有Special Task代码的运行空间都指向缓存2数据区,即对应的Special Task任务运行位置都是缓存2。
针对UCOSII操作系统内核公开的特性,修改内核的任务切换机制,保留优先级在一定范围内的任务在缓存2空间运行,通过任务的优先级作为判断任务代码是否需要在缓存2中运行的标志。如图8所示,为扩展程序空间方法的流程图,开始执行任务后(步骤801),判断是否一个任务结束需要进行任务切换(步骤802),如果不需要,则返回步骤801,继续执行当前任务;如果需要,则要进行任务切换,首先利用任务的优先级来判断待运行的任务的运行空间是否在缓存2中,即判断高优先级任务是否运行在缓存2中(步骤803);如果待运行高优先级任务的运行空间不在缓存2中,则直接切换执行高优先级任务(步骤807);如果待运行高优先级任务的运行空间在缓存2中,则切换缓存2为数据区(步骤804);然后,从NAND FLASH中拷贝待运行的高优先级任务代码到缓存2中(步骤805);之后,再切换缓存2为程序区(步骤806);在缓存2中,执行任务代码(步骤807)。
由于任务扩展的特殊方式,所有Special Task运行在相同的程序空间缓存2,因此需要对编译进行相关的设置①分次编译在缓存2中运行的任务对应编译地址相同;②程序保存根据任务的优先级的不同,把每一个在缓存2中运行的任务的代码分别保存到NAND FLASH的不同区间;③缓存中运行函数特征要求对应的函数代码支持再入属性。
通用的8位/16位单片机扩展程序空间的方法是利用通用输入/输出端口(GPIO,General Purpose Input/Output)作为系统的地址线,实现可访问程序空间的扩展,需要系统的GPIO资源,而且程序存储器的容量也必须扩展;本方法在不需要占用系统GPIO资源,毋须更大容量空间的程序存储器,使程序从NAND FLASH中运行,实现了程序空间的扩展。
利用本发明可以实现下述特殊功能1、所有的应用程序可以在芯片内部缓存中运行;2、系统的应用程序在执行过程中自动进行代码检测是否需要拷贝,动态从NAND FLASH中拷贝代码到芯片内部缓存1、缓存2中运行;3、利用有限的RAM空间,充分扩展系统的程序空间;4、实现系统固件的升级功能。
权利要求
1.一种嵌入式系统芯片,包括只读存储器与随机存储器,通过地址总线与数据总线,和CPU相连,其特征在于,还包括非易失型存储器接口,通过地址总线与数据总线,和CPU相连,用于与非易失型存储器通讯连接;所述只读存储器中存储有启动程序,所述随机存储器包括第一存储区与第二存储区;所述存储于只读存储器中的启动程序在系统上电时执行,通过所述非易失型存储器接口,将存储于非易失型存储器中的操作系统内核程序复制到所述第一存储区,同时切换第一存储区为程序区,然后跳转到所述第一存储区执行系统内核程序;所述操作系统内核程序执行后,根据任务调度优先级,将存储于非易失型存储器中的系统任务程序,通过所述非易失型存储器接口,复制到所述第二存储区中等待执行。
2.如权利要求1所述的芯片,其特征在于,所述复制到第一存储区中的操作系统内核程序执行后,将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
3.如权利要求1所述的芯片,其特征在于,所述存储于只读存储器中的启动程序,在将系统内核程序复制到所述第一存储区后,再将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
4.如权利要求1所述的芯片,其特征在于,所述复制到第一存储区中的操作系统内核程序在控制任务切换时,如果需要运行的高优先级任务不在所述第一与第二存储区中,则通过所述非易失型存储器接口,将存储于非易失型存储器中的高优先级任务复制到所述第二存储区中等待执行。
5.如权利要求1所述的芯片,其特征在于,所述非易失型存储器为NAND FLASH存储器。
6.如权利要求1所述的芯片,其特征在于,所述随机存储器还包括系统专用数据区,用于存储系统数据。
7.如权利要求1所述的芯片,其特征在于,进一步包括直接存储访问控制器,通过地址总线与数据总线,与CPU和非易失型存储器接口相连,用于控制从非易失型存储器向所述第一存储区与第二存储区复制程序。
8.一种对嵌入式系统的程序空间进行扩展的方法,其特征在于,包括如下步骤(1)在嵌入式系统芯片中设置非易失型存储器接口,并通过地址总线与数据总线,和芯片内部集成的CPU、只读存储器与随机存储器相连;(2)将随机存储器的存储空间划分为第一存储区与第二存储区;(3)将非易失型存储器通过所述非易失型存储器接口与所述嵌入式系统芯片相连;(4)将启动程序存储于所述只读存储器中,将操作系统内核程序与系统任务程序存储于所述非易失型存储器中的不同区间;(5)所述存储于只读存储器中的启动程序在系统上电时执行,通过所述非易失型存储器接口,将存储于非易失型存储器中的操作系统内核程序复制到所述第一存储区,同时切换所述第一存储区为程序区,然后跳转到所述第一存储区执行系统内核程序;(6)所述操作系统内核程序执行后,根据任务调度优先级,将存储于非易失型存储器中的系统任务程序,通过所述非易失型存储器接口,复制到所述第二存储区中等待执行。
9.如权利要求8所述的方法,其特征在于所述步骤(4),进一步将系统通用任务程序也存储于所述非易失型存储器的特定区间;所述步骤(6),复制到第一存储区中的操作系统内核程序执行后,将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
10.如权利要求8所述的方法,其特征在于所述步骤(4),进一步将系统通用任务程序也存储于所述非易失型存储器的特定区间;所述步骤(5),存储于只读存储器中的启动程序,在将操作系统内核程序复制到所述第一存储区后,再将存储于非易失型存储器中的系统通用任务程序,通过所述非易失型存储器接口,复制到所述第一存储区中等待执行;在步骤(6)中,由操作系统内核程序复制到第二存储区中等待执行的系统任务程序为特定任务程序。
11.如权利要求8所述的方法,其特征在于,进一步包括步骤(7)所述复制到第一存储区中的操作系统内核程序在控制任务切换时,如果需要运行的高优先级任务不在所述第一与第二存储区中,则通过所述非易失型存储器接口,将存储于非易失型存储器中的高优先级任务复制到所述第二存储区中等待执行。
12.如权利要求8所述的方法,其特征在于,所述非易失型存储器为NAND FLASH存储器。
13.如权利要求8所述的方法,其特征在于,所述步骤(2),进一步将随机存储器的存储空间划分出系统专用数据区,用于存储系统数据。
14.如权利要求8所述的方法,其特征在于,所述步骤(5)与步骤(6)中的程序复制过程,是在芯片内部集成的直接存储访问控制器的控制下进行的。
15.如权利要求8所述的方法,其特征在于,所述步骤(4),存储于非易失型存储器中的程序,在编译时,对需要在芯片内部的相同存储区运行的程序,其对应编译地址相同。
16.如权利要求11所述的方法,其特征在于,所述步骤(7),操作系统内核程序在控制任务切换时,保留优先级在一定范围之内的任务在第二存储区中运行,通过任务的优先级作为任务程序是否需要在第二存储区中运行的标志;在任务切换过程中,利用任务程序的优先级判断待运行的任务的运行空间是否应该在第二存储区中;如果否,则直接完成任务切换,运行更高优先级任务;如果应该在第二存储区中运行,则从非易失型存储器中复制高优先级任务程序到第二存储区中,然后运行第二存储区中的该任务程序。
全文摘要
本发明公开了一种嵌入式芯片及其程序空间扩展的方法,通过修改8位/16位单片机的读、写控制方式,进行了软、硬件的特殊设计,使得芯片系统既可以利用随机存储器作为系统的程序存储器,又可以作为系统的数据存储器,做到了程序存储器、数据存储器的复用;通过对系统任务切换机制的进行设置,使系统可以实现在任务切换时从NAND FLASH中实时拷贝程序代码功能,以扩展系统程序空间。本发明既扩展了系统的程序空间,又降低了系统的成本。
文档编号G06F9/46GK1801092SQ200610001348
公开日2006年7月12日 申请日期2006年1月19日 优先权日2006年1月19日
发明者牛同斌, 谢律 申请人:北京中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1