微機(jī)裝置的制造方法
【專利摘要】本發(fā)明提供一種微機(jī)裝置(100),其使對改寫用的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕,該微機(jī)裝置(100)能夠?qū)?nèi)置的閃存ROM(110)中所存儲的用戶程序(113)進(jìn)行改寫,其特征在于,具有:第一改寫程序(111),其根據(jù)閃存狀態(tài)0區(qū)域的數(shù)據(jù),來對針對改寫對象的各程序段而進(jìn)行的改寫處理進(jìn)行控制;第二改寫程序(112),其在不依據(jù)所述閃存狀態(tài)0區(qū)域的數(shù)據(jù)的條件下,實施針對改寫對象的各程序段而進(jìn)行的改寫處理,第一改寫程序(111)在針對改寫對象的最初的程序段而進(jìn)行的改寫處理中,不實施針對所述閃存狀態(tài)0區(qū)域的寫入,而在實施了針對最后的程序段而進(jìn)行的改寫處理之后,根據(jù)改寫用的用戶程序的記載來實施針對所述閃存狀態(tài)0區(qū)域的寫入。
【專利說明】
微機(jī)裝置
技術(shù)領(lǐng)域
[0001 ]本發(fā)明涉及一種微機(jī)裝置。
【背景技術(shù)】
[0002]—直以來,在內(nèi)置于微機(jī)裝置等之內(nèi)的閃存R0M(Read Only Memory:只讀存儲器)中,搭載有用于對用戶程序進(jìn)行改寫的改寫程序,通過執(zhí)行該改寫程序,從而能夠?qū)嵤┯脩舫绦虻母膶憽?br>[0003]—般而言,改寫程序能夠根據(jù)有無使用寫入到閃存狀態(tài)O區(qū)域(改寫完成代碼的寫入中所利用的狀態(tài)區(qū)域)中的數(shù)據(jù)而被分類為兩種改寫程序。此外,作為各自的示例,可列舉出由微機(jī)裝置制造商等提供的通用的改寫程序與由0EM( Or iginal equipmentmanufacturer:原裝設(shè)備制造)制造商等提供的固有的改寫程序。
[0004]如由OEM制造商等所提供的固有的改寫程序那樣,在根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對用戶程序的改寫處理進(jìn)行控制時,即使在寫入時發(fā)生了錯誤的情況下,也能夠再次執(zhí)行改寫程序。
[0005]在先技術(shù)文獻(xiàn)
[0006]專利文獻(xiàn)
[0007]專利文獻(xiàn)I:日本特開2008-165729號公報
【發(fā)明內(nèi)容】
[0008]發(fā)明所要解決的課題
[0009]然而,在采用搭載有通用的改寫程序與固有的改寫程序的微機(jī)裝置的情況下,用戶需要預(yù)先準(zhǔn)備與各個改寫程序?qū)?yīng)的用戶程序,以作為改寫用的新的用戶程序。具體而言,需要預(yù)先準(zhǔn)備寫入到閃存狀態(tài)O區(qū)域中的代碼互為不同的兩種用戶程序。這是因為,固有的改寫程序的情況與通用的改寫程序不同,由于寫入到閃存狀態(tài)O區(qū)域中的代碼,從而有時會對之后的改寫處理造成影響。
[0010]如上所述,如果考慮到有無因?qū)懭氲介W存狀態(tài)O區(qū)域中的代碼而引起的對改寫處理的影響,而必須準(zhǔn)備針對每個改寫程序而不同的用戶程序,則對用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)較大。
[0011]對此,例如,如果能夠排除對于將代碼寫入到閃存狀態(tài)O區(qū)域之后的改寫處理的影響,則能夠?qū)懭氲介W存狀態(tài)O區(qū)域中的代碼設(shè)為相同。即,考慮到能夠使改寫用的新的用戶程序共通化,從而能夠減輕用戶的管理負(fù)擔(dān)。
[0012]因此,本公開的目的在于,使對改寫用的新的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕。
[0013]用于解決課題的方法
[0014]根據(jù)本公開的一個方式,提供一種微機(jī)裝置,其能夠?qū)?nèi)置的閃存ROM中所存儲的用戶程序進(jìn)行改寫,其特征在于,具有:第一處理部,其根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù),來對針對改寫對象的各程序段而進(jìn)行的包括刪除、寫入以及校驗在內(nèi)的改寫處理進(jìn)行控制;第二處理部,其在不依據(jù)所述閃存狀態(tài)O區(qū)域的數(shù)據(jù)的條件下,實施針對改寫對象的各程序段而進(jìn)行的包括刪除、寫入以及校驗在內(nèi)的改寫處理,所述第一處理部在針對改寫對象的最初的程序段而進(jìn)行的改寫處理中,不實施對于所述閃存狀態(tài)O區(qū)域的寫入,而在實施了針對改寫對象的最后的程序段而進(jìn)行的改寫處理之后,根據(jù)改寫用的用戶程序的記載來實施對于所述閃存狀態(tài)O區(qū)域的寫入。
[0015]發(fā)明效果
[0016]本公開能夠使對改寫用的新的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕。
【附圖說明】
[0017]圖1為表示微機(jī)裝置的硬件結(jié)構(gòu)的圖。
[0018]圖2為表示閃存ROM的結(jié)構(gòu)的圖。
[0019]圖3為表示改寫用的用戶程序的一個示例的圖。
[0020]圖4為表示第一處理部以及第二處理部的功能結(jié)構(gòu)的圖。
[0021]圖5為用于對現(xiàn)有的由第一改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0022]圖6為用于對現(xiàn)有的由第二改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0023]圖7為用于對由第一實施方式所涉及的第一改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0024]圖8為模式化地表示由ROM求和計算部所實施的ROM求和計算處理與由改寫裝置所實施的求和計算處理的圖。
[0025]圖9為用于對由第一實施方式所涉及的第二改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0026]圖10為用于對由第二實施方式所涉及的第一改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0027]圖11為模式化地表示由ROM求和計算部所實施的ROM求和計算處理與由改寫裝置所實施的求和計算處理的圖。
[0028]圖12為用于對第三實施方式所涉及的第一改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。
[0029]圖13為用于對第三實施方式所涉及的第一改寫程序而進(jìn)行的校驗進(jìn)行說明的圖。
【具體實施方式】
[0030]以下,參照附圖對本發(fā)明的各實施方式進(jìn)行說明。另外,在本說明書以及附圖中,對于實質(zhì)上具有相同的功能結(jié)構(gòu)的結(jié)構(gòu)元件,通過標(biāo)注相同的符號從而省略重復(fù)的說明。
[0031][第一實施方式]
[0032]〈(I)微機(jī)裝置的硬件結(jié)構(gòu)〉
[0033]首先,對本實施方式所涉及的微機(jī)裝置的硬件結(jié)構(gòu)進(jìn)行說明。圖1為表示本實施方式所涉及的微機(jī)裝置的硬件結(jié)構(gòu)的圖。
[0034]如圖1所示,微機(jī)裝置100具有閃存R0M110、RAM120、CPU130、通信I/F140等各部分,該各部分經(jīng)由總線150而被連接在一起。
[0035]閃存ROMllO對由CPU130所執(zhí)行的用戶程序113進(jìn)行存儲。此外,閃存ROMllO對用于將用戶程序113改寫為新的用戶程序(以下,稱之為“改寫用的用戶程序”)171的第一改寫程序111、第二改寫程序112進(jìn)行存儲。
[0036]另外,在以下的說明中,第一改寫程序111例如為由OEM制造商等提供的固有的改寫程序,且為根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對改寫處理進(jìn)行控制的改寫程序。
[0037]在第一改寫程序111中,根據(jù)閃存ROMl10的改寫對象的最初的程序段所包括的閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對改寫處理進(jìn)行控制。另外,設(shè)為在由第一改寫程序111而進(jìn)行的改寫處理中,包括針對閃存ROM的改寫對象的各程序段而進(jìn)行的刪除、寫入、校驗。
[0038]此外,在第一改寫程序111中,為了對通過改寫用的用戶程序171而正確地實施了改寫的情況進(jìn)行確認(rèn),從而實施ROM求和計算,并將ROM求和計算結(jié)果172向改寫裝置160輸出。另外,ROM求和計算是指,對寫入到閃存R0M110的改寫對象的各程序段中的數(shù)據(jù)進(jìn)行加法運(yùn)算,并對該加法運(yùn)算值進(jìn)彳丁計算。
[0039]另一方面,第二改寫程序112例如為,由微機(jī)裝置制造商等提供的通用的改寫程序,且為在不依據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)的條件下實施改寫處理的改寫程序。在第二改寫程序112中,在不依據(jù)閃存ROMl 10的改寫對象的最初的程序段中所包括的閃存狀態(tài)O區(qū)域的數(shù)據(jù)的條件下,實施針對改寫對象的程序段的改寫處理。另外,設(shè)為在由第二改寫程序112而進(jìn)行的改寫處理中,包括針對閃存ROMllO的改寫對象的各程序段而進(jìn)行的刪除、寫入、校驗。
[0040]RAM120為主存儲裝置,并且作為在通過CPU130而執(zhí)行被存儲于閃存R0M110中的各種程序時被展開的操作區(qū)域而發(fā)揮功能。此外,還作為對通過利用CPU130來執(zhí)行被存儲于閃存R0M110中的各種程序而計算出的數(shù)據(jù)進(jìn)行臨時保持的保持區(qū)域而發(fā)揮功能。
[0041 ] CPU130為,執(zhí)行被存儲于閃存R0M110中的各種程序的計算機(jī)。
[0042]通信I/F(Interface)140為通信接口。通信I/F140例如對應(yīng)于UART(UniversalAsynchronous Receiver Transmitter:通用非同步接收發(fā)送器)或其他的串行通信,或者CAN(ControIIer Area Network:控制局域網(wǎng))等的車內(nèi)局域網(wǎng)(Local Area Network:本地局域網(wǎng))等的協(xié)議。通信I/F140在改寫裝置160向微機(jī)裝置100提供改寫用的用戶程序171時,在與改寫裝置160之間實施通信。
[0043]經(jīng)由通信I/F140而與微機(jī)裝置100連接的改寫裝置160向微機(jī)裝置100提供用于對存儲于閃存ROMllO的用戶程序113進(jìn)行改寫的改寫用的用戶程序171。此外,對微機(jī)裝置100指示第一改寫程序111或第二改寫程序112的執(zhí)行。而且,接收通過執(zhí)行第一改寫程序111而計算出的ROM求和計算結(jié)果172,并通過對ROM求和計算結(jié)果172與改寫用的用戶程序171的求和計算結(jié)果進(jìn)行比較,從而對是否正確地實施了改寫進(jìn)行判斷。另外,求和計算是指,對改寫用的用戶程序171的記載內(nèi)容進(jìn)行加法運(yùn)算而計算出加法運(yùn)算值。
[0044]另外,雖然在上述說明中,采用了由改寫裝置160來實施對ROM求和計算結(jié)果172與求和計算結(jié)果進(jìn)行比較,并對改寫是否被正確地實施進(jìn)行判斷的處理的結(jié)構(gòu),但也可以采用由微機(jī)裝置100來實施該處理的結(jié)構(gòu)。
[0045]《2)閃存ROM的結(jié)構(gòu)〉
[0046]接下來,對閃存R0M110的結(jié)構(gòu)進(jìn)行說明。圖2為表示閃存R0M110的結(jié)構(gòu)(存儲映射圖)的圖。如圖2所示,閃存R0M110例如被分割為以64K字節(jié)為單位的程序段O至程序段η。
[0047]在程序段O中包括:在改寫完成代碼的寫入中所利用的閃存狀態(tài)O區(qū)域200_0A、以及在將用戶程序113分割而進(jìn)行存儲時的用戶程序113的一部分被寫入的區(qū)域200_0B。程序段O為,在通過第一改寫程序111或者第二改寫程序112來實施改寫處理時,最初被實施改寫處理的程序段。此外,程序段η為,在通過第一改寫程序111或者第二改寫程序112來實施改寫處理時最后被實施改寫處理的程序段。在程序段I至程序段η中,分別包括在將用戶程序113分割而進(jìn)行存儲時的用戶程序113的一部分被寫入的區(qū)域200_1?200_η。
[0048]另外,在本實施方式中,設(shè)為在程序段O的閃存狀態(tài)O區(qū)域200_0Α中,作為改寫完成代碼而寫入有“0χ55ΑΑ…”。
[0049]〈(3)改寫用的用戶程序〉
[0050]接下來,對由改寫裝置160所提供的改寫用的用戶程序171進(jìn)行說明。圖3為表示改寫用的用戶程序171的一個示例的圖。如圖3所示,改寫用的用戶程序171具有:記錄有在改寫時寫入閃存狀態(tài)O區(qū)域200_0Α中的“改寫代碼”的改寫代碼區(qū)域301、與記錄有程序主體的主體區(qū)域302。
[0051]在本實施方式中,作為在改寫處理時寫入閃存狀態(tài)O區(qū)域200_0Α中的改寫代碼而使用“0χ55ΑΑ……”。即,在本實施方式中,作為改寫用的用戶程序171而使用了將與“改寫完成代碼”相同的代碼記錄在改寫代碼區(qū)域301中的程序。
[0052]通過在微機(jī)裝置100中,從改寫裝置160提供改寫用的用戶程序171,從而在改寫處理時將記錄于改寫代碼區(qū)域301中的改寫代碼寫入到程序段O的閃存狀態(tài)O區(qū)域200_0Α中。此外,將被記錄在主體區(qū)域302中的程序主體分割并寫入到程序段O至程序段η的區(qū)域200_0Β、200_1 ?200_η 中。
[0053]〈(4)第一以及第二處理部的說明〉
[0054]接下來,對通過由CPU130執(zhí)行第一改寫程序111而實現(xiàn)的第一處理部410、與通過由CPU執(zhí)行第二改寫程序112而實現(xiàn)的第二處理部420進(jìn)行說明。
[0055]圖4為表示第一以及第二處理部的功能結(jié)構(gòu)的圖。其中,圖4(a)表示第一處理部410的功能結(jié)構(gòu)。如圖4(a)所示,第一處理部410具有:改寫程序段管理部411、閃存狀態(tài)O管理部412、刪除部413、寫入部414、校驗部415、R0M求和計算部416。
[0056]改寫程序段管理部411對改寫對象的程序段進(jìn)行管理。閃存狀態(tài)O管理部412對寫入到閃存狀態(tài)O區(qū)域中的數(shù)據(jù)進(jìn)行管理。在閃存狀態(tài)O管理部412中,在于閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0χ55ΑΑ.._”的情況下,識別為改寫處理已完成。另一方面,在于閃存狀態(tài)O區(qū)域200_0A中寫入有改寫完成代碼以外的數(shù)據(jù)的情況下,識別為處于改寫處理中。
[0057]刪除部413在實施改寫處理時將寫入到各程序段中的數(shù)據(jù)刪除。通過利用刪除部413來將數(shù)據(jù)刪除,從而程序段O的閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)成為“OxFFFF...”。同樣地,程序段O的區(qū)域200_0B以及程序段I?程序段η的區(qū)域200_1?200_n的數(shù)據(jù)也成為“OxFFFF...”。
[0058]寫入部414在改寫處理時使用由改寫裝置160所提供的改寫用的用戶程序171,而對程序段O至程序段η依次實施寫入。具體而言,將被記錄于改寫用的用戶程序171的主體區(qū)域302中的程序主體分割并依次寫入程序段O的區(qū)域200_0Β、程序段I的區(qū)域200_1?程序段η的區(qū)域200_η中。
[0059]另外,寫入部414在以程序段O為改寫對象而實施改寫處理的情況下,不實施對于閃存狀態(tài)O區(qū)域200_0A的寫入。在寫入部414中,將程序段η作為改寫對象而實施改寫處理,并且通過ROM求和計算部416而實施了ROM求和計算之后,實施對于閃存狀態(tài)O區(qū)域200_0Α的寫入。由此,針對閃存狀態(tài)O區(qū)域200_0Α,在實施了 ROM求和計算之后,寫入被記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼的“0χ55ΑΑ…”。
[0060]校驗部415對于通過寫入部414而實施了寫入的程序段實施校驗,從而對被寫入的數(shù)據(jù)中是否存在錯誤進(jìn)行確認(rèn)。每當(dāng)針對各程序段的寫入完成時,校驗部415便以程序段為單位而實施校驗。
[0061]另外,在校驗部415中,在實施對于程序段O的校驗時,將寫入到程序段O的閃存狀態(tài)O區(qū)域200_0Α中的數(shù)據(jù)從校驗對象中排除。即,以寫入到程序段O的區(qū)域200_0Β中的數(shù)據(jù)為對象而實施校驗。
[0062]圖4(b)表示第二處理部的功能結(jié)構(gòu)。如圖4(b)所示,第二處理部420具有:刪除部421、寫入部422、校驗部423。另外,第二處理部420也可以具有改寫程序段管理部與ROM求和計算部。
[0063]刪除部421在實施改寫處理時刪除寫入到各程序段中的數(shù)據(jù)。通過利用刪除部421來刪除數(shù)據(jù),從而程序段O的閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)成為“OxFFFF...”。此外,程序段O的區(qū)域200_0B以及程序段I?程序段η的區(qū)域200_1?200_n的數(shù)據(jù)也成為“OxFFFF...”。
[0064]寫入部422在實施改寫處理時使用由改寫裝置160提供的改寫用的用戶程序171,而對程序段O至程序段η依次實施寫入。具體而言,將被記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼寫入到閃存狀態(tài)O區(qū)域200_0Α中。此外,將被記錄于改寫用的用戶程序171的主體區(qū)域302的程序主體分割,并依次寫入程序段O的區(qū)域200_0Β、程序段I的區(qū)域200_1?程序段η的區(qū)域200_η*。
[0065]校驗部423針對通過寫入部414而被實施了寫入的程序段實施校驗,從而對被寫入的數(shù)據(jù)中是否存在錯誤進(jìn)行確認(rèn)。在校驗部423中,每當(dāng)針對各程序段的寫入完成時,便以程序段為單位來實施校驗。
[0066]〈(5)由第一以及第二改寫程序而進(jìn)行的改寫處理的說明〉
[0067]接下來,對由第一以及第二改寫程序111、112而進(jìn)行的改寫處理進(jìn)行說明。另外,在下文中,在對由本實施方式所涉及的第一以及第二改寫程序111、112而進(jìn)行的改寫處理進(jìn)行說明之前,作為比較對象而對由現(xiàn)有的第一以及第二改寫程序而進(jìn)行的改寫處理簡單地進(jìn)行說明。另外,設(shè)為現(xiàn)有的第一以及第二改寫程序被存儲于具有圖1所示的結(jié)構(gòu)的微機(jī)裝置中所內(nèi)置的、具有圖2所示的結(jié)構(gòu)的閃存ROM中,而實施說明。但是,為了與具有本實施方式所涉及的第一以及第二改寫程序111、112的微機(jī)裝置100進(jìn)行區(qū)別,將具有現(xiàn)有的第一以及第二改寫程序的微機(jī)裝置設(shè)為微機(jī)裝置500而實施說明。
[0068]〈(5-1)由現(xiàn)有的第一改寫程序所實施的改寫處理〉
[0069]圖5為,用于對由現(xiàn)有的第一改寫程序(由OEM制造商等提供的固有的改寫程序,且現(xiàn)有的改寫程序)而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖5(a)所示,通過使改寫裝置160與微機(jī)裝置500連接,從而向微機(jī)裝置500提供改寫用的用戶程序501。此時,在向微機(jī)裝置500提供的改寫用的用戶程序501中,作為寫入到閃存狀態(tài)O區(qū)域200_0A中的改寫代碼而記錄有“OxFFFF...”。
[0070]在現(xiàn)有的第一改寫程序中,設(shè)為從程序段O至程序段η依次實施改寫處理。在這種情況下,首先需要將寫入到程序段O的閃存狀態(tài)O區(qū)域200_0Α中的代碼預(yù)先設(shè)為作為改寫完成代碼的“0χ55ΑΑ.._”以外的代碼。在圖5的示例中設(shè)為,作為改寫完成代碼即“0χ55ΑΑ.._”以外的值而寫入了 “OxFFFF...”。
[0071]圖5(b)為,將寫入到了閃存ROMl 10的程序段O的閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖5(b)所示,在改寫處理剛開始之后,在閃存狀態(tài)O區(qū)域200_0A中,寫入有作為改寫完成代碼的“0x55AA...”。
[0072]之后,實施針對程序段O的刪除(步驟S511),當(dāng)被寫入在閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)被刪除時,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)會變化為“OxFFFF..?”。
[0073]而且,實施針對程序段O的寫入(步驟S512),從而被記錄在改寫用的用戶程序501的改寫代碼區(qū)域中的“OxFFFF...”,被寫入到閃存狀態(tài)O區(qū)域200_0A中。
[0074]之后,在從程序段O的校驗至程序段η的校驗的期間內(nèi),閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)保持“OxFFFF...”的狀態(tài)而推移。當(dāng)程序段η的校驗完成時,則判斷為各程序段的改寫處理已完成,從而在現(xiàn)有的第一改寫程序中,在閃存狀態(tài)O區(qū)域200_0Α中寫入作為改寫完成代碼的“0χ55ΑΑ.??”。由此,閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)將變化為“0χ55ΑΑ..?”。
[0075]〈(5-2)由現(xiàn)有的第二改寫程序而進(jìn)行的改寫處理〉
[0076]圖6為用于對由現(xiàn)有的第二改寫程序(由微機(jī)裝置制造商等提供的通用的改寫程序,且現(xiàn)有的改寫程序)而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖6(a)所示,通過使改寫裝置160與微機(jī)裝置500連接,從而向微機(jī)裝置500提供改寫用的用戶程序601。此時,在現(xiàn)有的第二改寫程序中,在不依據(jù)閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)的條件下實施針對改寫對象的各程序段的改寫處理。因此,即使在閃存狀態(tài)O區(qū)域200_0Α中沒有寫入“0χ55ΑΑ.._”以外的數(shù)據(jù),也會實施各程序段的改寫處理。然而,需要在改寫處理完成后,在閃存狀態(tài)O區(qū)域200_0Α中寫入作為改寫完成代碼的“0χ55ΑΑ…”。因此,如圖6(a)所示,在改寫用的用戶程序601的改寫代碼區(qū)域中作為寫入閃存狀態(tài)O區(qū)域200_0Α中的改寫代碼而記錄有“0χ55ΑΑ…”。
[0077 ]圖6 (b)為,將寫入到了閃存ROMl 1的程序段O的閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖6(b)所示,在改寫處理剛開始后,在閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0x55AA…”。
[0078]之后,實施針對程序段O的刪除(步驟S611),當(dāng)被寫入在閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)被刪除時,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)會變化為“OxFFFF..?”。
[0079]而且,實施針對程序段O的寫入(步驟S612),從而被記錄在改寫用的用戶程序601的改寫代碼區(qū)域中的改寫代碼“0χ55ΑΑ.._”被寫入到閃存狀態(tài)O區(qū)域200_0A中。
[0080]此后,在從程序段O的校驗至程序段η的校驗的期間內(nèi),閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)保持“0χ55ΑΑ.._”的狀態(tài)而推移。由此,在程序段η的改寫處理完成的時間點處,在閃存狀態(tài)O區(qū)域200_0Α中寫入有“0χ55ΑΑ..?”。
[0081]如上所述,在使用現(xiàn)有的第一改寫程序而實施改寫處理的情況下與使用現(xiàn)有的第二改寫程序而實施改寫處理的情況下,需要使用改寫代碼不同的改寫用的用戶程序(501、601)。即,在根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對改寫處理進(jìn)行控制的改寫程序、與在不依據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)的條件下實施改寫處理的改寫程序中,需要不同的改寫用的用戶程序。因此,對改寫用的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)變大。另外,根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對改寫處理進(jìn)行控制的改寫程序例如在下述專利文獻(xiàn)I中被公開。根據(jù)專利文獻(xiàn)I的公開,在判斷為閃存狀態(tài)O區(qū)域的數(shù)據(jù)為“0X55AA...”以外的情況下,判斷為改寫處理失敗,從而以再次執(zhí)行改寫程序的方式進(jìn)行控制。
[0082]與此相對,在以下所說明的本實施方式所涉及的第一改寫程序111中,能夠在與第二改寫程序112之間,使改寫用的用戶程序共通化。
[0083]以下,對由本實施方式所涉及的第一以及第二改寫程序111、112而進(jìn)行的改寫處理進(jìn)行說明。
[0084]〈 (5-3)由第一改寫程序而進(jìn)行的改寫處理的說明>
[0085]首先,對由本實施方式所涉及的第一改寫程序111而進(jìn)行的改寫處理進(jìn)行說明。圖7為用于對由本實施方式所涉及的第一改寫程序而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖7(a)所示,通過將改寫裝置160與微機(jī)裝置100連接,從而向微機(jī)裝置100提供改寫用的用戶程序171。如上文所述,在向微機(jī)裝置100提供的改寫用的用戶程序171的改寫代碼區(qū)域301中,作為向閃存狀態(tài)O區(qū)域200_0A寫入的改寫代碼而記錄有“0x55AA...”。
[0086]圖7(b)為,將寫入閃存ROM110的程序段O的閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖7(b)所示,在改寫處理剛開始后,在閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0x55AA…”。
[0087]在此之后,實施針對程序段O的刪除(步驟S711),當(dāng)被寫入在閃存狀態(tài)O區(qū)域200_OA中的數(shù)據(jù)被刪除時,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)變化為“OxFFFF..?”。
[0088]而且,實施針對程序段O的寫入(步驟S712)。此時,在寫入部414中,對于閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域而實施寫入,而不實施針對閃存狀態(tài)O區(qū)域200_0A的寫入。
[0089]因此,即使在針對程序段O的寫入完成的時間點處,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)也依然為“OxFFFF...”。因此,在第一處理部410中,能夠持續(xù)實施針對各程序段而進(jìn)行的寫入。
[0090]接下來,實施針對程序段O而進(jìn)行的校驗(步驟S713)。此時,在校驗部415中,將閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域200_0B作為對象而實施校驗。在寫入閃存狀態(tài)O區(qū)域200_0A中的改寫代碼為“0χ55ΑΑ.._”的情況下,在步驟S712中不實施針對閃存狀態(tài)O區(qū)域200_0A的寫入。因此,假如設(shè)為針對程序段O的整體而實施校驗,則將會發(fā)生錯誤。但如上所述,由于將閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)從校驗對象中排除,因此在步驟S713中不會發(fā)生錯誤。
[0091]在此之后,實施針對程序段I以后的程序段而進(jìn)行的改寫處理,當(dāng)在針對程序段η而進(jìn)行的校驗結(jié)束時,在ROM求和計算部416中實施ROM求和計算(步驟S721)。此時,在ROM求和計算部416中,將閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域作為對象,而實施ROM求和計算(在改寫裝置160中,也以排除掉寫入到閃存狀態(tài)O區(qū)域200_0A中的改寫代碼的方式而實施求和計算)O
[0092]雖然寫入閃存狀態(tài)O區(qū)域200_0A中的改寫代碼為“0x55AA…”,但在該時間點處并未實施針對閃存狀態(tài)O區(qū)域200_0A的寫入。因此,假如設(shè)為針對從程序段O至程序段η的整體而實施ROM求和計算,則ROM求和計算結(jié)果172將與求和計算結(jié)果不一致,從而會發(fā)生錯誤。相對于此,在本實施方式中,如上所述,將閃存狀態(tài)O區(qū)域200_0Α從ROM求和計算的對象中排除(在改寫裝置160中,也以排除改寫代碼的方式而實施求和計算)。因此,在ROM求和計算結(jié)果172與求和計算結(jié)果之間不會產(chǎn)生不一致。
[0093]在ROM求和計算完成之后,在寫入部414中實施針對閃存狀態(tài)O區(qū)域200_0A的寫入(步驟S722)。由此,被記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼“0χ55ΑΑ..?”被寫入閃存狀態(tài)O區(qū)域200_0Α中。
[0094]如上文所述,在采用了將針對閃存狀態(tài)O區(qū)域200_0Α的寫入在最后實施的結(jié)構(gòu)的情況下,在此之后不存在實施寫入的區(qū)域。因此,向閃存狀態(tài)O區(qū)域的寫入不會影響到以后的改寫處理。即,能夠排除對于閃存狀態(tài)O區(qū)域?qū)懭肓舜a之后的改寫處理的影響。
[0095]圖8為模式化地表示由ROM求和計算部416實施的ROM求和計算處理與由改寫裝置160實施的求和計算處理的關(guān)系的圖。如圖8所示,在ROM求和計算部416中,將分別寫入到程序段O的區(qū)域200_0Β、程序段I的區(qū)域200_1、程序段2的區(qū)域200_2、…程序段η的區(qū)域200_η中的數(shù)據(jù)作為ROM求和計算的計算對象。另一方面,在改寫裝置160中,將被記錄于改寫用的用戶程序171的主體區(qū)域302中的程序主體作為求和計算的計算對象。
[0096]因此,在由第一改寫程序111而進(jìn)行的寫入被正確地實施了的情況下,ROM求和計算結(jié)果172與求和計算結(jié)果將一致。
[0097]〈 (5-4)由第二改寫程序而進(jìn)行的改寫處理的說明>
[0098]接下來,對由本實施方式所涉及的第二改寫程序112而進(jìn)行的改寫處理進(jìn)行說明。本實施方式所涉及的第二改寫程序112與現(xiàn)有的第二改寫程序相同。因此,在下文中,對即使在本實施方式所涉及的第一改寫程序111使用了與在改寫處理中所使用的改寫用的用戶程序171相同的用戶程序的情況下,本實施方式所涉及的第二改寫程序112也會適當(dāng)?shù)剡M(jìn)行動作的情況進(jìn)行說明。
[0099]圖9為,用于對由本實施方式所涉及的第二改寫程序112而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖9(a)所示,通過使改寫裝置160與微機(jī)裝置100連接,從而向微機(jī)裝置100提供改寫用的用戶程序171。此時向微機(jī)裝置100提供的改寫用的用戶程序171與在圖7中向微機(jī)裝置100提供的改寫用的用戶程序171相同。
[0100]圖9(b)為,將寫入閃存ROM110的程序段O的閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖9(b)所示,在改寫處理剛開始之后,在閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0x55AA…”。
[0101]在此之后,實施針對程序段O而進(jìn)行的刪除(步驟S911),當(dāng)被寫入在閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)被刪除時,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)會變化為“OxFFFF..?”。
[0102]進(jìn)而,實施針對程序段O而進(jìn)行的寫入(步驟S912),并且被記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼“0χ55ΑΑ.._”被寫入到閃存狀態(tài)O區(qū)域200_0A中。
[0103]之后,在從程序段O的校驗至程序段η的校驗的期間內(nèi),閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)會保持“0χ55ΑΑ.._”的狀態(tài)而推移。其結(jié)果為,在程序段η的校驗完成的時間點處,在閃存狀態(tài)O區(qū)域200_0Α中寫入有與改寫完成代碼相同的“0χ55ΑΑ…”。
[0104]如上文所述,根據(jù)本實施方式,在使用第一改寫程序111來實施改寫處理的情況下、與使用第二改寫程序112來實施改寫處理的情況下,能夠使用相同的改寫用的用戶程序171。即,能夠在根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)來對改寫處理進(jìn)行控制的改寫程序與在不依據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù)的條件下實施改寫處理的改寫程序中,使用相同的改寫用的用戶程序。其結(jié)果為,能夠減輕對改寫用的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)。
[0105]〈(6)總結(jié)〉
[0106]通過以上說明明確可知,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0107].采用了在實施針對程序段O而進(jìn)行的改寫處理時不針對程序段O的閃存狀態(tài)O區(qū)域200_0A而實施寫入的結(jié)構(gòu)。
[0108]?此外,采用了在實施了針對程序段η而進(jìn)行的改寫處理之后,根據(jù)記錄于改寫用的用戶程序171中的代碼(應(yīng)寫入閃存狀態(tài)O區(qū)域中的代碼)來針對程序段O的閃存狀態(tài)O區(qū)域200_0Α而實施寫入的結(jié)構(gòu)。
[0109]通過如上文所述那樣在最后實施向閃存狀態(tài)O區(qū)域的寫入,從而能夠排除對于向閃存狀態(tài)O區(qū)域?qū)懭肓舜a后的改寫處理所造成的影響。由此,能夠使寫入到閃存狀態(tài)O區(qū)域中的代碼相同,并能夠在與第二改寫程序112之間使改寫用的用戶程序171共通化。
[0110]其結(jié)果為,能夠使對改寫用的新的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕。
[0111]此外,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0112].采用了在校驗部415實施校驗時,對于程序段0,將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)排除的結(jié)構(gòu)。
[0113].采用了在ROM求和計算部416實施ROM求和計算時,將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)排除的結(jié)構(gòu)。
[0114]由此,由于在能夠?qū)崿F(xiàn)改寫用的用戶程序171的共通化的情況下,在第一改寫程序111中,能夠?qū)嵤└鞒绦蚨蔚男r?、程序段整體的ROM求和計算,因此能夠可靠地檢測到寫入錯誤。
[0115][第二實施方式]
[0116]在上述第一實施方式中,以排除程序段O的閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)的方式而實施了ROM求和計算。相對于此,在第二實施方式中,在刪除程序段O之前,預(yù)先將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)存儲在RAM120中。而且,在針對程序段η而進(jìn)行的改寫處理完成之后,使用預(yù)先存儲于RAM120中的數(shù)據(jù)來實施ROM求和計算。以下,對第二實施方式進(jìn)行說明。另外,以與上述第一實施方式的不同點為中心而進(jìn)行說明。
[0117]〈(I)由第一改寫程序而進(jìn)行的改寫處理的說明〉
[0118]圖10為,用于對由第二實施方式所涉及的第一改寫程序111而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖10(a)所示,通過使改寫裝置160與微機(jī)裝置100連接,從而向微機(jī)裝置100提供改寫用的用戶程序171。
[0119]圖1O(b)為,將被寫入在閃存ROMl 1的程序段O的閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖10(b)所示,在改寫處理剛開始后,在閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0X55AA…”。
[0120]在步驟S1001中,閃存狀態(tài)O管理部412將閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)存儲于RAMl 20的預(yù)定的緩沖區(qū)域。
[0121]之后,實施針對程序段O的刪除(步驟S711),當(dāng)寫入在閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)被刪除時,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)變化為“OxFFFF..?”。
[0122]進(jìn)而,實施針對程序段O的寫入(步驟S712)。此時,在寫入部414中,針對閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域?qū)嵤懭?,而不實施針對閃存狀態(tài)O區(qū)域200_0A的寫入。
[0123]因此,在針對程序段O而進(jìn)行的寫入完成了的時間點處,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)也依然為“OxFFFF.??”。因此,在第一處理部410中,能夠持續(xù)實施針對各程序段而進(jìn)行的寫入。
[0124]在此之后,從針對程序段O而進(jìn)行的校驗(步驟S713)至針對程序段η而進(jìn)行的校驗,與在上述第一實施方式中使用圖7而進(jìn)行說明的處理相同。
[0125]當(dāng)針對程序段η而進(jìn)行的校驗結(jié)束時,在ROM求和計算部416中實施ROM求和計算(步驟S1002)。此時,在ROM求和計算部416中,將閃存狀態(tài)O區(qū)域200_0Α以外的區(qū)域作為計算對象而實施ROM求和計算。此外,在ROM求和計算部416中,將此時的計算結(jié)果與被存儲于RAMl 20的預(yù)定的緩沖區(qū)域的數(shù)據(jù)(程序段O的刪除前的閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù))相加。進(jìn)而,在ROM求和計算部416中,將加法運(yùn)算結(jié)果作為ROM求和計算結(jié)果172而向改寫裝置160輸出。
[0126]在ROM求和計算完成之后,在寫入部414中,實施針對閃存狀態(tài)O區(qū)域200_0Α的寫入(步驟S722)。由此,在改寫用的用戶程序171的改寫代碼區(qū)域301中作為改寫代碼而被記錄的“0χ55ΑΑ...”,被寫入閃存狀態(tài)O區(qū)域200_0Α中。
[0127]<(2)R0M求和計算的詳細(xì)內(nèi)容〉
[0128]接下來,對于ROM求和計算(步驟S1002)的詳細(xì)內(nèi)容進(jìn)行說明。圖11為模式化地表示由ROM求和計算部416所實施的ROM求和計算處理(步驟S1002)與由改寫裝置160所實施的求和計算處理的關(guān)系的圖。
[0129]如圖11所示,為了對ROM求和計算結(jié)果172的正確與否進(jìn)行判斷,在改寫裝置160中,根據(jù)改寫用的用戶程序171來實施求和計算。此時,在改寫裝置160中,將記錄有寫入閃存狀態(tài)O區(qū)域200_0A中的改寫代碼的改寫代碼區(qū)域301、與記錄有程序主體的主體區(qū)域302作為計算對象而實施求和計算。
[0130]此外,在ROM求和計算部416中,將程序段O的排除了閃存狀態(tài)O區(qū)域200_0A的區(qū)域200_0B、與程序段I至程序段η的各區(qū)域200_1?200_n作為計算對象而實施ROM求和計算。而且,在ROM求和計算部416中,在針對程序段O而實施刪除之前將存儲于RAM120的預(yù)定的緩沖區(qū)域中的數(shù)據(jù)與該計算結(jié)果相加,并將加法運(yùn)算結(jié)果作為ROM求和計算結(jié)果172而向改寫裝置160進(jìn)行輸出。
[0131]如上所述,在求和計算結(jié)果中包括:被記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼“0x55AA…”、與被記錄于改寫用的用戶程序171的主體區(qū)域302中的程序主體。另一方面,在ROM求和計算結(jié)果中包括,分割并寫入到了程序段O至程序段η的各區(qū)域200_0Β、200_1?200_η中的改寫用的用戶程序171的程序主體。而且,包括被存儲于RAM120的預(yù)定的緩沖區(qū)域中的改寫完成代碼=“0χ55ΑΑ…”。另外,在改寫用的用戶程序171的改寫代碼區(qū)域301中,作為改寫代碼而記錄有與改寫完成代碼相同的代碼。
[0132]因此,在改寫處理正常完成的情況下,求和計算結(jié)果與ROM求和計算結(jié)果一致。此時,在改寫裝置160中,能夠包括寫入到閃存狀態(tài)O區(qū)域200_0Α中的改寫代碼而實施求和計算。即,能夠在不必配合第一改寫程序111而改變計算方法的條件下,實施求和計算。
[0133](3)總結(jié)
[0134]由以上的說明明確可知,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0135].采用了在實施針對程序段O而進(jìn)行的改寫處理時,不針對程序段O的閃存狀態(tài)O區(qū)域200_0A而實施寫入的結(jié)構(gòu)。
[0136]?此外,采用了在實施了針對程序段η而進(jìn)行的改寫處理之后,根據(jù)改寫用的用戶程序171,并針對程序段O的閃存狀態(tài)O區(qū)域200_0Α而實施寫入的結(jié)構(gòu)。
[0137]通過如上文所述那樣在最后實施針對閃存狀態(tài)O區(qū)域的寫入,從而能夠排除對于閃存狀態(tài)O區(qū)域?qū)懭氪a之后的改寫處理的影響。由此,能夠使寫入閃存狀態(tài)O區(qū)域中的代碼相同,從而能夠在所述第一改寫程序111與第二改寫程序112之間使改寫用的用戶程序171共通化。
[0138]其結(jié)果為,能夠使對改寫用的新的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕。
[0139]此外,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0140].采用了校驗部415在實施校驗時,對于程序段0,將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)排除的結(jié)構(gòu)。
[0141].采用了ROM求和計算部416在實施ROM求和計算時,將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)排除的結(jié)構(gòu)。而且,采用了將此時的計算結(jié)果與在實施針對程序段O而進(jìn)行的刪除之前存儲于RAM120的預(yù)定的緩沖區(qū)域的數(shù)據(jù)相加,并作為ROM求和計算結(jié)果而輸出的結(jié)構(gòu)。
[0142]由此,由于即使在能夠使改寫用的用戶程序171共通化的情況下,在第一改寫程序111中也能夠?qū)嵤└鞒绦蚨蔚男r?、程序段整體的ROM求和計算,因此也能夠可靠地檢測出寫入錯誤。并且,由于在改寫裝置160中,能夠包括寫入閃存狀態(tài)O區(qū)域200_0Α中的代碼(改寫代碼)而實施求和計算,因此能夠在不必配合第一改寫程序111而改變計算方法的條件下實施求和計算。
[0143]另外,雖然在本實施方式中,將閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)存儲于RAM120中,例如也可以將記錄于改寫用的用戶程序171的改寫代碼區(qū)域301中的改寫代碼存儲于RAM120。
[0144][第三實施方式]
[0145]在上述第一以及第二實施方式中,均采用了以針對程序段O排除了閃存狀態(tài)O區(qū)域200_0Α的數(shù)據(jù)的方式而實施校驗的結(jié)構(gòu)。相對于此,在第三實施方式中,針對程序段O而使用固定值來實施校驗。以下,對第三實施方式進(jìn)行說明。另外,以與上述第一以及第二實施方式的不同點為中心而進(jìn)行說明。
[0146]〈(I)由第一改寫程序所實施的改寫處理的說明〉
[0147]圖12為,用于對由第三實施方式所涉及的第一改寫程序111而進(jìn)行的改寫處理進(jìn)行說明的圖。如圖12(a)所示,通過使改寫裝置160與微機(jī)裝置100連接,從而向微機(jī)裝置100提供改寫用的用戶程序171。
[0148]圖12(b)為,將被寫入在閃存ROMl 1的程序段O的閃存狀態(tài)O區(qū)域200_0A中的數(shù)據(jù)在改寫處理中的變化與改寫處理的動作相關(guān)聯(lián)而進(jìn)行圖示的圖。如圖12(b)所示,在改寫處理剛開始之后,在閃存狀態(tài)O區(qū)域200_0A中寫入有作為改寫完成代碼的“0x55AA...”。
[0149]在第一處理部410中,執(zhí)行步驟S1001、S711、S712所示的各工序。另外,由于步驟S1001為在上述第二實施方式中使用圖10而進(jìn)行了說明的步驟,因此在此省略說明。此外,由于步驟S71US712為在上述第一實施方式中已使用圖7而進(jìn)行了說明的步驟,因此在此省略說明。
[0150]在步驟S1201中,校驗部415實施針對程序段O而進(jìn)行的校驗。此時,在校驗部415中,將包括閃存狀態(tài)O區(qū)域200_0A在內(nèi)的程序段O整體作為對象而實施校驗。
[0151]另外,寫入到閃存狀態(tài)O區(qū)域200_0A中的代碼為“0x55AA...”,相對于此,在步驟S712中,沒有實施針對閃存狀態(tài)O區(qū)域200_0A而進(jìn)行的寫入。因此,若在該狀態(tài)下對程序段O整體實施校驗,則會發(fā)生錯誤。
[0152]相對于此,在本實施方式中,對于閃存狀態(tài)O區(qū)域200_0A,使用固定值(“OxFFFF…”)來實施校驗。
[0153]閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)通過針對程序段O進(jìn)行的刪除(步驟S711)而成為“OxFFFF...”。因此,只要正確地實施了針對程序段O而進(jìn)行的刪除、且正確地實施了針對程序段O的除了閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域200_0B的寫入,則針對程序段O而進(jìn)行的校驗中就不會發(fā)生錯誤。
[0154]由于在步驟S1201中,針對程序段O而進(jìn)行的校驗結(jié)束后的處理在上述第一或者第二實施方式中,已使用圖7或者圖10而進(jìn)行了說明,因此在此省略說明。
[0155]〈(2)針對程序段O而進(jìn)行的校驗的詳細(xì)內(nèi)容〉
[0156]接下來,對針對程序段O而進(jìn)行的校驗(步驟S1201)的詳細(xì)內(nèi)容進(jìn)行說明。圖13為用于對針對程序段O而進(jìn)行的校驗的詳細(xì)內(nèi)容進(jìn)行說明的圖。
[0157]如圖13所示,在校驗部415中,將被記錄于改寫用的用戶程序171的主體區(qū)域302中的程序主體之中的、被分割并寫入程序段O的區(qū)域200_0B中的部分(校驗對象)的總計值與固定值相加。另外,固定值為“OxFFFF…”。并且,在校驗部415中,對加算結(jié)果1301進(jìn)行保持。
[0158]此外,在校驗部415中,在由寫入部414實施的針對程序段O而進(jìn)行的寫入結(jié)束的時間點處,對寫入到程序段O的閃存狀態(tài)O區(qū)域200_0A中以及除此之外的區(qū)域200_0B中的數(shù)據(jù)的總計值1311進(jìn)行計算。然后,對預(yù)先保持的加算結(jié)果1301與總計值1311進(jìn)行比較,并對其是否一致進(jìn)行判斷。
[0159]在此,在由寫入部414實施的針對程序段O而進(jìn)行的寫入結(jié)束的時間點處,閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)成為“OxFFFF…”。這是因為,由于在實施針對程序段O而進(jìn)行的寫入之前實施刪除,且在實施針對程序段O而進(jìn)行的寫入時,在寫入部414中,未實施針對閃存狀態(tài)O區(qū)域200_0A的寫入,因此殘留有針對程序段O而進(jìn)行的刪除的結(jié)果。另一方面,針對程序段O的除了閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域200_0B,而寫入有改寫用的用戶程序171的程序主體的一部分。
[0160]因此,在針對程序段O而進(jìn)行的由刪除部413實施的刪除被正確地實施,且針對程序段O的除了閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域200_0B而進(jìn)行的由寫入部414實施的寫入被正確地實施了的情況下,不會發(fā)生錯誤。換言之,根據(jù)本實施方式的針對程序段O而進(jìn)行的校驗,能夠?qū)h除的正確與否、以及針對閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域200_0B而進(jìn)行的寫入的正確與否進(jìn)行確認(rèn)。
[0161]〈(3)總結(jié)〉
[0162]由以上的說明明確可知,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0163].采用了在實施針對程序段O的改寫處理時不針對程序段O的閃存狀態(tài)O區(qū)域200_OA而實施寫入的結(jié)構(gòu)。
[0164].此外,采用了在實施了針對程序段η的改寫處理之后,根據(jù)改寫用的用戶程序171來針對程序段O的閃存狀態(tài)O區(qū)域200_0Α而實施寫入的結(jié)構(gòu)。
[0165]通過如上文所述在最后實施針對閃存狀態(tài)O區(qū)域的寫入,從而能夠排除對將代碼向閃存狀態(tài)O區(qū)域?qū)懭胫蟮母膶懱幚淼挠绊?。由此,能夠使寫入到閃存狀態(tài)O區(qū)域中的代碼相同,從而能夠在所述第一改寫程序111與第二改寫程序112之間使改寫用的用戶程序171共通化。
[0166]其結(jié)果為,能夠使對改寫用的新的用戶程序進(jìn)行管理的用戶的管理負(fù)擔(dān)減輕。
[0167]此外,在本實施方式所涉及的第一改寫程序111中采用了如下結(jié)構(gòu)。
[0168].采用了校驗部415在實施校驗時,對于程序段0,作為閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)而使用固定值來實施校驗的結(jié)構(gòu)。
[0169].采用了ROM求和計算部416在實施ROM求和計算時,將閃存狀態(tài)O區(qū)域200_0A的數(shù)據(jù)排除的結(jié)構(gòu)。而且,將此時的計算結(jié)果與在實施針對程序段O而進(jìn)行的刪除之前被存儲于RAM120的預(yù)定的緩沖區(qū)域中的數(shù)據(jù)相加,并輸出ROM求和計算結(jié)果的結(jié)構(gòu)。
[0170]由此,由于即使在能夠使改寫用的用戶程序171共通化的情況下,在第一改寫程序111中,也能夠?qū)嵤└鞒绦蚨蔚男r?、程序段整體的ROM求和計算,因此能夠可靠地檢測出寫入錯誤。而且,由于在第一改寫程序111中,能夠以包括寫入到閃存狀態(tài)O區(qū)域200_0A中的代碼的方式實施校驗,因此能夠?qū)κ欠襻槍﹂W存狀態(tài)O而正確地實施了刪除進(jìn)行判斷。
[0171][其他的實施方式]
[0172]在上述第一至第三實施方式中,采用了在實施由第一改寫程序111而進(jìn)行的改寫處理時,首先實施針對程序段O而進(jìn)行的刪除的結(jié)構(gòu)。然而,首先實施的處理無需為針對程序段O而進(jìn)行的刪除,例如,也可以采用在實施針對程序段O而進(jìn)行的刪除之前,針對閃存狀態(tài)O區(qū)域200_0A而寫入O的處理的結(jié)構(gòu)。
[0173]此外,雖然在上述第三實施方式中,將針對程序段O而使用固定值來實施校驗的處理與上述第二實施方式組合而進(jìn)行了說明,但也可以與上述第一實施方式進(jìn)行組合。
[0174]此外,雖然在上述第一至第三實施方式中,以程序段為單位而實施了校驗,但也可以采用如下的方式,即,以地址為單位或者以I字節(jié)為單位來實施校驗。例如,也可以采用如下的方式,即,在第一以及第二實施方式的情況下,對于閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域,以地址為單位或者以I字節(jié)為單位來實施校驗。此外,在第三實施方式的情況下,對于閃存狀態(tài)O區(qū)域200_0A而使用固定值(“OxFFFF..?” )來實施校驗。而且,也可以針對閃存狀態(tài)O區(qū)域200_0A以外的區(qū)域,而以地址為單位或者以I字節(jié)為單位來實施校驗。
[0175]另外,本發(fā)明并不限定于上述實施方式中所列舉的結(jié)構(gòu)、以及與其他的元件的組合等的在此所示的結(jié)構(gòu)。關(guān)于這些結(jié)構(gòu),能夠在不脫離于本發(fā)明的主旨的范圍內(nèi)進(jìn)行改變,并能夠根據(jù)其應(yīng)用方式而適當(dāng)?shù)匾?guī)定。
[0176]符號說明
[0177]100:微機(jī)裝置;
[0178]110:閃存ROM;
[0179]120:RAM;
[0180]130:CPU;
[0181]140:通信 I/F;
[0182]150:總線;
[0183]160:改寫裝置;
[0184]171:改寫用的用戶程序;
[0185]172: ROM求和計算結(jié)果;
[0186]410:第一處理部;
[0187]411:改寫程序段管理部;
[0188]412:閃存狀態(tài)O管理部;
[0189]413:刪除部;
[0190]414:寫入部;
[0191]415:校驗部;
[0192]416: ROM求和計算部;
[0193]420:第二處理部;
[0194]421:刪除部;
[0195]422:寫入部;
[0196]423:校驗部。
【主權(quán)項】
1.一種微機(jī)裝置,其能夠?qū)?nèi)置的閃存ROM中所存儲的用戶程序進(jìn)行改寫,其特征在于,具有: 第一處理部,其根據(jù)閃存狀態(tài)O區(qū)域的數(shù)據(jù),來對針對改寫對象的各程序段而進(jìn)行的包括刪除、寫入以及校驗在內(nèi)的改寫處理進(jìn)行控制; 第二處理部,其以不依據(jù)所述閃存狀態(tài)O區(qū)域的數(shù)據(jù)的方式,實施針對改寫對象的各程序段而進(jìn)行的包括刪除、寫入以及校驗在內(nèi)的改寫處理, 所述第一處理部在針對改寫對象的最初的程序段而進(jìn)行的改寫處理中,不實施對于所述閃存狀態(tài)O區(qū)域的寫入,而在實施了針對改寫對象的最后的程序段而進(jìn)行的改寫處理之后,根據(jù)改寫用的用戶程序的記載來實施對于所述閃存狀態(tài)O區(qū)域的寫入。2.如權(quán)利要求1所述的微機(jī)裝置,其特征在于, 所述第一處理部中,在實施校驗時,針對所述最初的程序段而將閃存狀態(tài)O區(qū)域的數(shù)據(jù)去除,并在實施ROM求和計算時,將閃存狀態(tài)O區(qū)域的數(shù)據(jù)去除。3.如權(quán)利要求1所述的微機(jī)裝置,其特征在于, 所述第一處理部在實施對于改寫對象的最初的程序段而進(jìn)行的改寫處理之前,對該最初的程序段的閃存狀態(tài)O區(qū)域的數(shù)據(jù)進(jìn)行保持,并在實施了對于改寫對象的最后的程序段而進(jìn)行的改寫處理之后,使用所述保持的數(shù)據(jù)來實施ROM求和計算。4.如權(quán)利要求1或3所述的微機(jī)裝置,其特征在于, 所述第一處理部在實施了對于改寫對象的最初的程序段而進(jìn)行的寫入之后,在實施對于該最初的程序段而進(jìn)行的校驗時,將預(yù)先設(shè)定的固定值作為被寫入到閃存狀態(tài)O區(qū)域中的代碼來實施校驗。
【文檔編號】G06F12/02GK105868119SQ201610079979
【公開日】2016年8月17日
【申請日】2016年2月4日
【發(fā)明人】靜敏志
【申請人】豐田自動車株式會社