1.一種由固件控制的系統(tǒng),其中所述固件包括用于執(zhí)行至少一個(gè)關(guān)鍵功能的非可編程代碼組和用于執(zhí)行至少一個(gè)普通功能的可編程代碼組,所述系統(tǒng)包括:
存儲(chǔ)器,包括:
第一存儲(chǔ)塊,用于存儲(chǔ)所述非可編程代碼組,以及
第二和第三存儲(chǔ)塊,其包括激活存儲(chǔ)塊和非激活存儲(chǔ)塊,其中所述激活存儲(chǔ)塊存儲(chǔ)正由所述系統(tǒng)執(zhí)行的第一可編程代碼組,所述非激活存儲(chǔ)塊存儲(chǔ)當(dāng)前未被所述系統(tǒng)執(zhí)行的第二可編程代碼組;以及
處理器,連接至所述存儲(chǔ)器,包括:
輸入單元,用于接收新的可編程代碼組和固件更新請(qǐng)求,
處理單元,連接至所述輸入單元,用于執(zhí)行所述非可編程代碼組和存儲(chǔ)在所述激活存儲(chǔ)塊中的所述第一可編程代碼組,以及
編程單元,連接至所述輸入單元,其中所述編程單元識(shí)別所述非激活存儲(chǔ)塊,并基于所述識(shí)別將該新的可編程代碼組存儲(chǔ)在所述非激活存儲(chǔ)塊中,
其中在將該新的可編程代碼組存儲(chǔ)在所述非激活存儲(chǔ)塊中之后,所述處理單元進(jìn)行從執(zhí)行存儲(chǔ)在所述激活存儲(chǔ)塊中的所述第一可編程代碼組至執(zhí)行所述非激活存儲(chǔ)塊中的該新的可編程代碼組的切換。
2.如權(quán)利要求1的系統(tǒng),其中所述第二和第三存儲(chǔ)塊中的一個(gè)被配置為默認(rèn)存儲(chǔ)塊,其中如果所述處理單元未能識(shí)別所述激活存儲(chǔ)塊,則所述處理單元切換以執(zhí)行所述默認(rèn)存儲(chǔ)塊中的該可編程代碼組。
3.如權(quán)利要求2的系統(tǒng),還包括:第一寄存器,其存儲(chǔ)用于指示所述激活存儲(chǔ)塊的第一標(biāo)記,和第二寄存器,其存儲(chǔ)用于指示所述默認(rèn)存儲(chǔ)塊的第二標(biāo)記,其中所述處理器還包括連接至所述輸入單元的控制單元以及用于設(shè)置所述第一和第二標(biāo)記的所述處理單元,其中基于所述第一標(biāo)記識(shí)別所述激活存儲(chǔ)塊和所述非激活存儲(chǔ)塊,且其中基于所述第二標(biāo)記識(shí)別所述默認(rèn)存儲(chǔ)塊。
4.如權(quán)利要求1的系統(tǒng),其中基于所述固件更新請(qǐng)求執(zhí)行所述切換,其中所述固件更新請(qǐng)求包括實(shí)時(shí)更新請(qǐng)求和非實(shí)時(shí)更新請(qǐng)求,其中所述系統(tǒng)包括第三寄存器,所述第三寄存器用于存儲(chǔ)指示所述更新請(qǐng)求是實(shí)時(shí)更新請(qǐng)求或非實(shí)時(shí)更新請(qǐng)求的第三標(biāo)記,其中所述控制單元基于接收到所述固件更新請(qǐng)求設(shè)置所述第三標(biāo)記,其中如果所述第三標(biāo)記指示實(shí)時(shí)更新請(qǐng)求,則在所述切換期間所述處理單元禁用除了用在所述非可編程代碼中的中斷之外的所有的可屏蔽中斷,以及如果所述第三標(biāo)記指示非實(shí)時(shí)更新請(qǐng)求,則在所述切換期間所述處理單元禁用所有的可屏蔽中斷,以及其中如果所述第三標(biāo)記指示實(shí)時(shí)更新請(qǐng)求,則所述處理單元在所述切換期間初始化除所述非可編程代碼之外的所述系統(tǒng),以及如果所述第三標(biāo)記指示非實(shí)時(shí)更新請(qǐng)求,在所述切換期間初始化所述系統(tǒng)。
5.如權(quán)利要求1的系統(tǒng),其中所述存儲(chǔ)器還包括用于存儲(chǔ)固件數(shù)據(jù)的第四存儲(chǔ)塊,其中所述固件數(shù)據(jù)包括:與所述非可編程代碼組對(duì)應(yīng)的非可編程數(shù)據(jù)組,以及與正由所述系統(tǒng)執(zhí)行的該可編程代碼組對(duì)應(yīng)的可編程數(shù)據(jù)組。
6.如權(quán)利要求5的系統(tǒng),其中所述存儲(chǔ)器包括:第一子存儲(chǔ)單元,其包括所述第二存儲(chǔ)塊;,第二子存儲(chǔ)單元,其包括所述第一存儲(chǔ)塊和所述第三存儲(chǔ)塊;以及第三子存儲(chǔ)單元,其包括所述第四存儲(chǔ)塊和預(yù)留存儲(chǔ)塊,其中所述預(yù)留存儲(chǔ)塊用于當(dāng)所述編程單元在將該新的可編程代碼組存儲(chǔ)在所述第二子存儲(chǔ)單元的所述第三存儲(chǔ)塊中或存儲(chǔ)在所述第一子存儲(chǔ)單元的所述第二存儲(chǔ)塊中時(shí),存儲(chǔ)所述非可編程代碼組的拷貝。
7.如權(quán)利要求5的系統(tǒng),其中所述存儲(chǔ)單元包括:第一子存儲(chǔ)單元,其包括所述第一存儲(chǔ)塊、所述第二存儲(chǔ)塊和所述第三存儲(chǔ)塊;以及第二子存儲(chǔ)單元,其包括所述第四存儲(chǔ)塊和預(yù)留存儲(chǔ)塊,其中所述預(yù)留存儲(chǔ)塊用于當(dāng)所述編程單元在將該新的可編程代碼組存儲(chǔ)至所述第一子存儲(chǔ)單元的所述第二存儲(chǔ)塊和所述第三存儲(chǔ)塊中的一個(gè)中時(shí),存儲(chǔ)所述非可編程代碼組的拷貝。
8.如權(quán)利要求1的系統(tǒng),其中所述存儲(chǔ)器包括多個(gè)子存儲(chǔ)單元,其中所述 第二存儲(chǔ)塊和第三存儲(chǔ)塊分別位于兩個(gè)獨(dú)立的子存儲(chǔ)單元中,并且所述第一可編程代碼組和第二可編程代碼組分別從相同的地址起存儲(chǔ)在所述兩個(gè)獨(dú)立的子存儲(chǔ)單元中,其中所述切換包括互換所述兩個(gè)獨(dú)立的子存儲(chǔ)單元。
9.一種更新固件控制的系統(tǒng)的固件的方法,其中所述固件包括用于執(zhí)行至少一個(gè)關(guān)鍵功能的非可編程代碼組以及用于執(zhí)行至少一個(gè)普通功能的可編程代碼組,其中所述系統(tǒng)包括存儲(chǔ)器,所述存儲(chǔ)器包括第一存儲(chǔ)塊、第二存儲(chǔ)塊和第三存儲(chǔ)塊,所述第一存儲(chǔ)塊用于存儲(chǔ)所述非可編程代碼組,所述第二存儲(chǔ)塊和所述第三存儲(chǔ)塊包括存儲(chǔ)第一可編程代碼組的激活存儲(chǔ)塊和存儲(chǔ)第二可編程代碼組的非激活存儲(chǔ)塊,其中所述第一存儲(chǔ)塊中的所述非可編程代碼和存儲(chǔ)在所述激活存儲(chǔ)塊中的所述第一可編程代碼組正在由所述系統(tǒng)執(zhí)行,所述方法包括:
識(shí)別所述非激活存儲(chǔ)塊;
在所述非激活存儲(chǔ)塊中存儲(chǔ)新的可編程代碼組;以及
在存儲(chǔ)該新的可編程代碼組之后,基于固件更新請(qǐng)求從執(zhí)行存儲(chǔ)在所述激活存儲(chǔ)塊中的所述第一可編程代碼組切換至執(zhí)行存儲(chǔ)在所述非激活存儲(chǔ)塊中的該新的可編程代碼組,
其中在所述存儲(chǔ)步驟和切換步驟期間,所述系統(tǒng)繼續(xù)執(zhí)行所述至少一個(gè)關(guān)鍵功能。
10.如權(quán)利要求9的方法,其中所述固件更新請(qǐng)求包括實(shí)時(shí)更新請(qǐng)求和非實(shí)時(shí)更新請(qǐng)求,其中所述切換包括:禁用除了用在所述非可編程代碼中的中斷以外的所有可屏蔽中斷,以及對(duì)于實(shí)時(shí)更新請(qǐng)求,初始化除所述非可編程代碼以外的所述系統(tǒng),對(duì)于非實(shí)時(shí)更新請(qǐng)求,禁用所有可屏蔽中斷并初始化所述系統(tǒng)。