C8051Fxxx程序丟失問題的分析_第1頁
免費預覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、c8051fxxx程序丟失問題的分析1 c8051fxxx容易介紹和flash結(jié)構(gòu)c8051fxxx系列器件是silicon labs推出的一個高速單片機系列。這款單片機是徹低集成的混合信號片上系統(tǒng)型芯片,具有高速、流水線結(jié)構(gòu)的8051兼容的cip51內(nèi)核;70%的命令的執(zhí)行時光為1個或2個系統(tǒng)時鐘周期;片上有豐盛的片內(nèi)外設,按照型號的不同,包括、uart、捕獲/比較模塊的可編程計數(shù)器/定時器陣列、spi、smbus等。c8051fxxx單片機有大容量的flash存儲器,用于程序代碼和非易失性數(shù)據(jù)存儲,可在系統(tǒng)編程。flash的結(jié)構(gòu)是以扇區(qū)為單位組織的(128kb系列以1 024字節(jié)為1個扇區(qū)

2、,64kb系列以512字節(jié)為1個扇區(qū))。非易失性flash可以用來存儲系統(tǒng)的參數(shù),如軟件版本、生產(chǎn)日期等。flash可以用法編程器擦寫,也可以在程序中用法movx命令來修改,從而使flash存儲器具有在系統(tǒng)重新編程能力,允許現(xiàn)場更新8051固件程序。flash的寫和擦除操作由硬件自動定時,以保證操作正確通過。c8051fxxx的flash保存下載的程序,在系統(tǒng)上電后,單片機從flash讀出代碼數(shù)據(jù)到ram,之后程序開頭運行。2 程序走失問題的浮現(xiàn)和緣由在一些實際應用中,系統(tǒng)重新上電后會浮現(xiàn)程序不能正常運行的問題,常表現(xiàn)為“程序走失”。通常是因為程序代碼被損壞或被修改造成的。造成程序走失問題的緣

3、由無數(shù),可以歸結(jié)到一個基本緣由,即對flash的拜訪失敗而造成flash保存的代碼浮現(xiàn)錯誤。對于全部包含有flash寫/擦除子程序的系統(tǒng),當cpu工作在規(guī)定的vdd、溫度、系統(tǒng)時鐘頻率范圍之外時,對flash舉行寫/擦除操作,都有可能浮現(xiàn)flash數(shù)據(jù)錯誤的現(xiàn)象。2.1 flash數(shù)據(jù)錯誤的硬件緣由c8051fxxx單片機的flash操作由硬件控制,所以硬件上的不穩(wěn)定可能造成flash操作錯誤。硬件緣由主要是能影響cpu正常運行的因素,以及能影響flash操作環(huán)境的因素。這些因素包括操作、溫度以及外部干擾脈沖等,詳細如下: 能影響cpu運行牢靠性的參數(shù)有系統(tǒng)時鐘源。假如系統(tǒng)時鐘由外部晶振提供,

4、外部的電磁干擾引起尖脈沖,并耦合到系統(tǒng)時鐘上,則會導致不行預知的操作。 系統(tǒng)在單片機的工作電壓沒有穩(wěn)定(vdd升高時光低于規(guī)定的1ms)時就已經(jīng)完成復位,因為系統(tǒng)復位時需要從flash讀出代碼數(shù)據(jù),flash電壓不穩(wěn)定會浮現(xiàn)不行預測的錯誤。 在對flash的操作過程中,假如溫度、電壓不穩(wěn)定,也可能造成flash數(shù)據(jù)錯誤。2.2 flash數(shù)據(jù)錯誤的軟件緣由代碼設計的缺陷是程序走失的主要緣由,由于單片機的flash是由硬件來控制的,不能由軟件來控制操作的詳情,所以程序的不完美可能造成flash的拜訪出錯,從而使flash數(shù)據(jù)浮現(xiàn)錯誤。這些操作包括: 在pswe位(psctl.0)置1時cpu執(zhí)行

5、中斷服務程序中的movx寫操作,該中斷服務程序要用法xdata 或pdata的易失性存儲區(qū)單元,這樣可能導致向xdata或pdata存儲區(qū)寫的數(shù)據(jù)寫到flash中了,從而浮現(xiàn)問題。另外,假如用法外部晶振奮系統(tǒng)時鐘,在時鐘沒有穩(wěn)定時就對flash舉行寫操作,也可能造成程序走失。3 程序走失問題的解決辦法針對以上可能的緣由,可以從軟硬件兩個方面來解決程序走失問題。在硬件方面,主要是給系統(tǒng)提供穩(wěn)定的工作環(huán)境,并避開外部干擾對cpu運行環(huán)境的影響;在軟件方面,主要是規(guī)范對flash的操作。3.1 從硬件方面預防程序走失注重,以下的辦法不是對全部的器件都適用,要按照詳細的硬件狀況挑選相應的辦法: 在rs

6、t引腳安裝vdd監(jiān)測,并將vdd監(jiān)視設置為一個復位源(置rstsrc.1為1)。這樣假如系統(tǒng)電壓不穩(wěn)定,系統(tǒng)將自動復位,從而避開在電壓不穩(wěn)時拜訪flash。 對外部晶振時鐘2分頻,更好的辦法是用法內(nèi)部,這樣能提高系統(tǒng)時鐘的抗干擾能力。 假如用法外部晶振提供系統(tǒng)時鐘,信號線應盡量逼近單片機的輸入端,同時晶振外殼接地。 對于用法外部晶振奮時鐘源的系統(tǒng),應盡量增加晶振的驅(qū)動能力,這樣也能在一定程度上預防程序走失。3.2 從軟件方面預防程序走失程序走失的主要緣由是程序設計的缺陷,所以合理的程序代碼設計能極大地預防該問題的浮現(xiàn)。在代碼中可以用多種辦法來預防flash數(shù)據(jù)走失: 在pswe=1下禁止中斷,

7、使得程序中的movx寫命令是對flash而不是對xram。 在pswe=1下盡可能少地拜訪變量。在pswe=0下執(zhí)行地址譯碼操作,并用間接尋址方式執(zhí)行movx寫操作。例如,向flash寫多個字節(jié),間接尋址和寫pswe過程如下:以上代碼中,當pswe = 1時只執(zhí)行寫flash操作(*pwrite = mydata);其他操作,如修改addr的值、獵取源數(shù)據(jù)和目的地址,都是在pswe = 0時執(zhí)行的。 將flash寫/擦除指針指向data或idata區(qū)。 削減將pswe置1的命令操作。抱負的狀況是惟獨兩個操作將pswe置1,即寫1個flash字節(jié)和擦除1個flash字節(jié)。 在flash寫/擦除函

8、數(shù)中,使能vdd監(jiān)視并設置復位源。使能和設置操作必需在實際的寫操作發(fā)生之前,置pswe=1之后完成。 代碼中全部的對rstsrc的寫操作均用挺直賦值方式完成(如rstsrc = 0x02),不能用讀/寫命令(如orl或anl)來完成。例如,代碼“rstsrc |= 0x02”是非法的。 對于能用porsf位來設置vdd為復位源的器件,保證在寫rstsrc時置porsf1,即先使能vdd為復位源,再使能其他復位源的操作,如時鐘走失監(jiān)測(missing clock detector)、比較單元和軟件復位。4 一個實際應用計劃在有的應用場合,因為需要較快的執(zhí)行速度,不能用法單片機的內(nèi)部時鐘作系統(tǒng)時鐘

9、源,所以用法外部晶振來提供時鐘。在這種狀況下,首先要在硬件上確保系統(tǒng)工作參數(shù)正常。在軟件上,因為最頻繁的flash走失緣由是程序問題,所以可以在代碼中用多種辦法來預防flash數(shù)據(jù)走失。首先,在初始化單片機時,使能vdd檢測,并設置vdd和時鐘走失為復位源。假如程序中有寫/擦除flash的代碼,則在寫/擦除操作前切換系統(tǒng)時鐘,將系統(tǒng)時鐘切到內(nèi)部時鐘或?qū)ν獠繒r鐘2分頻;寫/擦除操作完成之后,再復原系統(tǒng)時鐘,通過增強flash修改操作時的時光開銷來實現(xiàn)系統(tǒng)的穩(wěn)定2。以下以c8051f126為例,給出了系統(tǒng)時鐘切換的程序清單:要復原系統(tǒng)時鐘到flash操作前的狀態(tài),只需將clksel_save、os

10、cicn_save、oscxcn_save重新寫回到clksel、oscin、oscxcn。c8051f126的系統(tǒng)時鐘(sysclk)可以在內(nèi)部時鐘和外部時鐘之間自由切換,切換時的操作要求如下: 在切換過程中,先設置所選時鐘的屬性,再用clksel將其設置為sysclk。 在還原過程中,先用clksel挑選時鐘源,再設置其屬性。 假如切換過程中關閉外部晶振,要再復原外部時鐘,啟動后起碼要等1ms,再去讀xtlvld(oscxcn.7)來推斷晶振時鐘是否穩(wěn)定。否則,可能讀到錯誤值。 在外部時鐘穩(wěn)定運行后,再對其分頻,不必插入等待周期。 在切換過程中,可以保持外部時鐘繼續(xù)運行,這樣在還原過程中就不必等待外部時鐘穩(wěn)定,從而節(jié)約時光開銷,代價是系統(tǒng)功耗有所增強。5 總結(jié)程序走失會帶來各種不良的后果,最嚴峻時致使程序

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論