本發明涉及嵌入式系統技術領域,尤其涉及一種嵌入式系統及其控制方法。
背景技術:
微控制單元(Micro Control Unit,MCU),又稱單片微型計算機或者單片機,是指隨著大規模集成電路的出現及其發展,將計算機的中央處理器(Central Processing Unit,CPU)、隨機存取存儲器(Random Access Memory,RAM)、只讀存儲器(Read-Only Memory,ROM)、定時計數器和多種輸入/輸出接口等集成在一片芯片上,形成芯片級的計算機,為不同的應用場合做不同組合控制。閃存(Flash Memory,簡稱Flash)是一種非易失性存儲器,既能在掉電的情況下保存數據,又能夠進行多次擦除和編程,具有較高的靈活性,逐漸成為MCU中非常重要的程序、數據存儲器。
隨著MCU的發展,MCU中Flash的容量越來越大,Flash的讀取速度成為制約MCU發展的一個重要因素。為了提升Flash的讀取速度,大多采取將Flash中程序數據復制到與之相連的RAM中,RAM的讀取速度遠大于Flash的讀取速度,從而提高對這部分程序數據的讀取速度。
但是現有技術中,為了提升更多Flash的讀取速度,通過增加RAM單元來映射更多Flash單元,RAM單元和Flash單元一一對應設置,而一個RAM單元一般是由6個晶體管組成,比Flash單元需要更多的面積,因此現有技術存在成 本較高的缺陷。
技術實現要素:
有鑒于此,本發明實施例提供一種嵌入式系統及其控制方法,旨在使用較少的RAM,將盡可能多的Flash通過RAM提高讀取速度,節約成本。
第一方面,本發明實施例提供了一種嵌入式系統,包括:
總線、存儲器地址交換寄存器、存儲器地址交換控制模塊、第一閃存存儲器、第二閃存存儲器和隨機存取存儲器;
所述存儲器地址交換寄存器、所述存儲器地址交換控制模塊分別與所述總線連接;
所述存儲器地址交換控制模塊還分別與所述第一閃存存儲器、所述第二閃存存儲器和所述隨機存取存儲器連接,用于在所述存儲器地址交換寄存器為復位值時,控制所述第一閃存存儲器直接與所述總線相連,以及控制所述第二閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第二閃存存儲器的程序數據寫入到所述隨機存取存儲器;
所述存儲器地址交換控制模塊還用于在所述存儲器地址交換寄存器為置位值時,控制所述第二閃存存儲器直接與所述總線相連,以及控制所述第一閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第一閃存存儲器的程序數據寫入到所述隨機存取存儲器。
可選的,所述存儲器地址交換控制模塊還用于在接收到第一讀取請求時,從所述隨機存取存儲器讀取與所述第一讀取請求對應的程序數據。
可選的,所述存儲器地址交換控制模塊還用于在接收到第一寫入請求時,將所述程序數據寫入到所述隨機存取存儲器和所述第二閃存存儲器中。
可選的,所述存儲器地址交換控制模塊還用于在接收到第二讀取請求時,從所述隨機存取存儲器讀取與所述第二讀取請求對應的程序數據。
可選的,所述存儲器地址交換控制模塊還用于在接收到第二寫入請求時,將所述程序數據寫入到所述隨機存取存儲器和所述第一閃存存儲器中。
第二方面,本發明實施例還提供了一種嵌入式系統的控制方法,包括:
存儲器地址交換控制模塊獲取所述存儲器地址交換寄存器的寄存值;
若所述寄存值為復位值,控制所述第一閃存存儲器直接與所述總線相連,以及控制所述第二閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第二閃存存儲器的程序數據寫入到所述隨機存取存儲器;
若所述寄存值為置位值,控制所述第二閃存存儲器直接與所述總線相連,以及控制所述第一閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第一閃存存儲器的程序數據寫入到所述隨機存取存儲器。
可選的,接收到第一讀取請求時,從所述隨機存取存儲器讀取與所述第一讀取請求對應的程序數據;
接收到第一寫入請求時,將所述程序數據寫入到所述隨機存取存儲器和所述第二閃存存儲器中。
可選的,接收到第二讀取請求時,從所述隨機存取存儲器讀取與所述第二讀取請求對應的程序數據;
接收到第二寫入請求時,將所述程序數據寫入到所述隨機存取存儲器和所述第一閃存存儲器中。
本發明實施例提供一種嵌入式系統及其控制方法,其中,所述嵌入式系統包括:總線、存儲器地址交換寄存器、存儲器地址交換控制模塊、第一閃存存儲器、第二閃存存儲器和隨機存取存儲器,存儲器地址交換控制模塊獲取所述 存儲器地址交換寄存器的寄存值,若所述寄存值為復位值,控制所述第一閃存存儲器直接與所述總線相連,以及控制所述第二閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第二閃存存儲器的程序數據寫入到所述隨機存取存儲器;若所述寄存值為置位值時,控制第二閃存存儲器直接與總線相連,以及控制第一閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第一閃存存儲器的程序數據寫入到隨機存取存儲器。采用本發明實施例提供的嵌入式系統及其控制方法,旨在使用較少的隨機存取存儲器,將盡可能多的閃存存儲器中的程序數據通過隨機存取存儲器讀取,提高讀取速度,節約成本。
附圖說明
為了更加清楚地說明本發明示例性實施例的技術方案,下面對描述實施例中所需要用到的附圖做一簡單介紹。顯然,所介紹的附圖只是本發明所要描述的一部分實施例的附圖,而不是全部的附圖,對于本領域普通技術人員,在不付出創造性勞動的前提下,還可以根據這些附圖得到其他的附圖。
圖1是本發明實施例一提供的一種嵌入式系統的結構示意圖;
圖2是本發明實施例二提供的一種嵌入式系統的控制方法的流程示意圖。
具體實施方式
為使本發明的目的、技術方案和優點更加清楚,以下將結合本發明實施例中的附圖,通過具體實施方式,完整地描述本發明的技術方案。顯然,所描述的實施例是本發明的一部分實施例,而不是全部的實施例,基于本發明的實施例,本領域普通技術人員在沒有做出創造性勞動的前提下獲得的所有其他實施 例,均落入本發明的保護范圍之內。
實施例一
圖1是本發明實施例一提供的一種嵌入式系統的結構示意圖。如圖1所示,所述嵌入式系統包括:
總線101、存儲器地址交換寄存器102、存儲器地址交換控制模塊103、第一閃存存儲器104、第二閃存存儲器105和隨機存取存儲器106。
存儲器地址交換寄存器102、存儲器地址交換控制模塊103分別與總線101連接;
存儲器地址交換控制模塊103還分別與第一閃存存儲器104、第二閃存存儲器105和隨機存取存儲器106連接,用于在存儲器地址交換寄存器102為復位值時,控制第一閃存存儲器104直接與總線101相連,以及控制第二閃存存儲器105通過存儲器地址交換控制模塊103與總線101連接,且將第二閃存存儲器105的程序數據寫入到隨機存取存儲器106。
示例性的,如圖1所示,該嵌入式系統還包括A、B、C、D四個連接端口,在存儲器地址交換寄存器102為復位值時,通過A與B相連,控制第一閃存存儲器104直接與總線101相連,通過C與D相連,控制第二閃存存儲器105通過存儲器地址交換控制模塊103與總線101連接,并將第二閃存存儲器105的程序數據寫入到隨機存取存儲器106。
進一步的,本發明實施例提供的嵌入式系統,將第一地址空間映射為與隨機存取存儲器106相連的閃存存儲器的地址范圍,將第二地址空間映射為直接與總線101相連的閃存存儲器的地址范圍。當存儲器地址交換寄存器102為復位值時,將第二地址空間映射為第一閃存存儲器104的地址范圍,將第一地址 空間,即隨機存取存儲器106的地址范圍,映射為第二閃存存儲器105的地址范圍。
存儲器地址交換控制模塊103還用于在存儲器地址交換寄存器102為置位值時,控制第二閃存存儲器105直接與總線101相連,以及控制第一閃存存儲器104通過存儲器地址交換控制模塊103與總線101連接,且將第一閃存存儲器104的程序數據寫入到隨機存取存儲器106。
示例性的,如圖1所示,在存儲器地址交換寄存器102為置位值時,通過A與D相連,控制第二閃存存儲器105直接與總線101相連,通過C與B相連,控制第一閃存存儲器104通過存儲器地址交換控制模塊103與總線101連接,且將第一閃存存儲器104的程序數據寫入到隨機存取存儲器106。此時,將第二地址空間映射為第二閃存存儲器105的地址范圍,將第一地址空間,即隨機存取存儲器106的地址范圍,映射為第一閃存存儲器104的地址范圍。
可選的,存儲器地址交換控制模塊103還用于在接收到第一讀取請求時,從隨機存取存儲器106讀取與第一讀取請求對應的程序數據。
示例性的,所述第一讀取請求可以是存儲器地址交換寄存器102為復位值時,總線101對第一地址空間的讀取請求。當存儲器地址交換控制模塊103接收到第一讀取請求時,從隨機存取存儲器106讀取與第一讀取請求對應的程序數據,即從隨機存取存儲器106讀取與第二閃存存儲器105中程序數據相同的程序數據。
可選的,存儲器地址交換控制模塊103還用于在接收到第一寫入請求時,將程序數據寫入到隨機存取存儲器106和第二閃存存儲器105中。
示例性的,所述第一寫入請求可以是存儲器地址交換寄存器為復位值時,總線101對第一地址空間的寫入請求。當存儲器地址交換控制模塊103接收到 第一寫入請求時,將程序數據寫入到隨機存取存儲器106和第二閃存存儲器105中。
可選的,存儲器地址交換控制模塊103還用于在接收到第二讀取請求時,從隨機存取存儲器106讀取與第二讀取請求對應的程序數據。
示例性的,所述第二讀取請求可以是存儲器地址交換寄存器102為置位值時,總線101對第一地址空間的讀取請求。當存儲器地址交換控制模塊103接收到第二讀取請求時,從隨機存取存儲器106讀取與第二讀取請求對應的程序數據,即從隨機存取存儲器106讀取與第一閃存存儲器104中程序數據相同的程序數據。
可選的,存儲器地址交換控制模塊103還用于在接收到第二寫入請求時,將程序數據寫入到隨機存取存儲器106和第一閃存存儲器104中。
示例性的,所述第二寫入請求可以是存儲器地址交換寄存器為置位值時,總線101對第一地址空間的寫入請求。當存儲器地址交換控制模塊103接收到第二寫入請求時,將程序數據寫入到隨機存取存儲器106和第一閃存存儲器104中。
本發明實施例一提供的嵌入式系統,獲取存儲器地址交換寄存器的寄存值,若寄存值為復位值,控制第一閃存存儲器直接與總線相連,以及控制第二閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第二閃存存儲器的程序數據寫入到隨機存取存儲器,若寄存值為置位值,控制第二閃存存儲器直接與總線相連,以及控制第一閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第一閃存存儲器的程序數據寫入到隨機存取存儲器。采用本發明實施例提供的嵌入式系統,可以使用較少的隨機存取存儲器,將盡可能多的閃存存儲器中的程序數據通過隨機存取存儲器讀取,提高讀取速度,節約成本。
實施例二
圖2是本發明實施例二提供的一種嵌入式系統的控制方法的流程示意圖,本實施例是以上述實施例所述的嵌入式系統為基礎,提供一種嵌入式系統的控制方法。如圖2所示,該方法包括:
S210、存儲器地址交換控制模塊獲取所述存儲器地址交換寄存器的寄存值。
S220、若所述寄存值為復位值,控制所述第一閃存存儲器直接與所述總線相連,以及控制所述第二閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第二閃存存儲器的程序數據寫入到所述隨機存取存儲器。
示例性的,若存儲器地址交換寄存器的寄存值為復位值時,控制第一閃存存儲器直接與總線相連,控制第二閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第二閃存存儲器的程序數據寫入到隨機存取存儲器中。此時,將第二地址空間映射為第一閃存存儲器的地址范圍,將第一地址空間,即隨機存取存儲器的地址范圍,映射為第二閃存存儲器的地址范圍。
可選的,接收到第一讀取請求時,從隨機存取存儲器讀取與第一讀取請求對應的程序數據。
示例性的,所述第一讀取請求可以是存儲器地址交換寄存器為復位值時,總線對第一地址空間的讀取請求,即從隨機存取存儲器讀取與第二閃存存儲器中程序數據相同的程序數據。
可選的,接收到第一寫入請求時,將程序數據寫入到隨機存取存儲器和第二閃存存儲器中。
示例性的,所述第一寫入請求可以是存儲器地址交換寄存器為復位值時, 總線對第一地址空間的寫入請求,即將程序數據寫入到隨機存取存儲器和第二閃存存儲器中。
S230、若所述寄存值為置位值,控制所述第二閃存存儲器直接與所述總線相連,以及控制所述第一閃存存儲器通過所述存儲器地址交換控制模塊與所述總線連接,且將所述第一閃存存儲器的程序數據寫入到所述隨機存取存儲器。
示例性的,若存儲器地址交換寄存器的寄存值為置位值時,控制第二閃存存儲器直接與總線相連,控制第一閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第一閃存存儲器的程序數據寫入到隨機存取存儲器中。此時,將第二地址空間映射為第二閃存存儲器的地址范圍,將第一地址空間,即隨機存取存儲器的地址范圍,映射為第一閃存存儲器的地址范圍。
可選的,接收到第二讀取請求時,從隨機存取存儲器讀取與第二讀取請求對應的程序數據。
示例性的,所述第二讀取請求可以是存儲器地址交換寄存器為置位值時,總線對第一地址空間的讀取請求,即從隨機存取存儲器讀取與第一閃存存儲器中程序數據相同的程序數據。
可選的,接收到第二寫入請求時,將程序數據寫入到隨機存取存儲器和第一閃存存儲器中。
示例性的,所述第二寫入請求可以是存儲器地址交換寄存器為置位值時,總線對第一地址空間的寫入請求,即將程序數據寫入到隨機存取存儲器和第一閃存存儲器中。
進一步的,本發明實施例提供的嵌入式系統的控制方法,還可以實現程序數據的備份。
示例性的,由于隨機存取存儲器的讀取速度遠大于閃存存儲器的讀取速度, 因此在某些情況下,通過總線訪問第二地址空間不能滿足讀取時間約束,而訪問第一地址空間可以滿足。當存儲器地址交換寄存器的寄存值為復位值時,第二閃存存儲器可以存儲一個較新的不太穩定的程序數據版本,而第一閃存存儲器可以存儲一個穩定的程序數據版本,即一個備份版本。通過總線訪問第一地址空間,訪問的是第二閃存存儲器中的程序數據,因訪問的是一個不穩定的程序數據版本,一旦出現錯誤,可以通過總線將存儲器地址交換寄存器的寄存值改寫為置位值,當通過總線再次訪問第一地址空間時,此時訪問的是第一閃存存儲器的程序數據,即訪問的是一個穩定的程序數據版本,此時該嵌入式系統可以正常運行,從而避免嵌入式系統一直處在錯誤狀態。
進一步的,本發明實施例提供的嵌入式系統的控制方法,還可以實現程序數據的隱藏。
示例性的,由于隨機存取存儲器的讀取速度遠大于閃存存儲器的讀取速度,因此在某些情況下通過總線訪問第二地址空間不能滿足讀取時間約束,而訪問第一地址空間可以滿足。這里,可以對存儲器地址交換寄存器的寄存值進行權限設置,在未授權條件下,存儲器地址交換寄存器的寄存值為復位值,第二閃存存儲器可以存儲一個精簡的程序數據版本,而第一閃存存儲器可以存儲一個全功能的程序數據版本。通過總線訪問第一地址空間,訪問的是第二閃存存儲器中的程序數據,只能訪問到一個精簡的程序數據版本。因此在未授權條件下,全功能的程序數據版本是隱藏的。而當獲得授權后,通過總線將存儲器地址交換寄存器的寄存值改寫為置位值,此時通過總線再次訪問第一地址空間,訪問的是第一閃存存儲器的程序數據,就能訪問到全功能的程序數據版本。
本發明實施例二提供的嵌入式系統的控制方法,存儲器地址交換控制模塊獲取所述存儲器地址交換寄存器的寄存值,若寄存值為復位值,控制第一閃存 存儲器直接與總線相連,控制第二閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第二閃存存儲器的程序數據寫入到隨機存取存儲器,若寄存值為置位值,控制第二閃存存儲器直接與總線相連,控制第一閃存存儲器通過存儲器地址交換控制模塊與總線連接,且將第一閃存存儲器的程序數據寫入到隨機存取存儲器。采用本發明實施例提供的方法,可以使用較少的隨機存取存儲器,將盡可能多的閃存存儲器中的程序數據通過隨機存取存儲器讀取,提高讀取速度,節約成本,并且可以實現程序數據的備份和隱藏。
需要說明的是,存儲器地址交換寄存器的寄存值與第一閃存寄存器和第二閃存寄存器與總線的連接關系并不是限定關系,本發明實施例只是通過一種對應關系進行說明,在上述實施例的基礎上,也可以是當存儲器地址交換寄存器的寄存值為復位值時,第二閃存存儲器直接與總線相連,第一閃存存儲器通過存儲器地址交換控制模塊與總線連接,以及當存儲器地址交換寄存器的寄存值為置位值時,第一閃存存儲器直接與總線相連,第二閃存存儲器通過存儲器地址交換控制模塊與總線連接。
注意,上述僅為本發明的較佳實施例及所運用技術原理。本領域技術人員會理解,本發明不限于這里所述的特定實施例,對本領域技術人員來說能夠進行各種明顯的變化、重新調整和替代而不會脫離本發明的保護范圍。因此,雖然通過以上實施例對本發明進行了較為詳細的說明,但是本發明不僅僅限于以上實施例,在不脫離本發明構思的情況下,還可以包括更多其他等效實施例,而本發明的范圍由所附的權利要求范圍決定。