亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        編譯器優(yōu)化造成上注代碼部分功能失效分析

        2018-11-14 10:43:52山東航天電子技術(shù)研究所都曉輝曹振興
        電子世界 2018年20期
        關(guān)鍵詞:編譯器賦值級(jí)別

        山東航天電子技術(shù)研究所 都曉輝 曹振興

        本文介紹了一種以80C32E為核心,具備上注功能的單片機(jī)系統(tǒng),軟件在編譯生成上注代碼后,上注代碼在EEPROM運(yùn)行異常情況,通過(guò)對(duì)上注代碼運(yùn)行異常進(jìn)行分析研究,最終找出由于編譯器優(yōu)化造成部分功能失效的原因,并進(jìn)行了總結(jié)。

        1.概況

        某單片機(jī)程序采用固化程序加上注代碼的執(zhí)行模式,若軟件發(fā)現(xiàn)問(wèn)題可通過(guò)上注代碼對(duì)部分代碼功能進(jìn)行更改,本案例說(shuō)明由于在對(duì)上注代碼的制作過(guò)程中編譯器優(yōu)化造成上注代碼執(zhí)行部分功能失效的問(wèn)題。硬件框圖見(jiàn)圖1;

        圖1 硬件框圖

        80C32系統(tǒng)的硬件結(jié)構(gòu)如圖1所示,包括單片機(jī)80C32、ROM、RAM、EEPROM1、EEPROM2和總線接口。ROM、RAM、EEPROM1、EEPROM2和總線接口均與單片機(jī)80C32互連。80C32系統(tǒng)上電后運(yùn)行ROM中的固化程序,根據(jù)需要,可通過(guò)總線接口向80C32系統(tǒng)發(fā)送上注程序,并將上注程序?qū)懭隕EPROM1、EEPROM2和RAM中,當(dāng)系統(tǒng)接收到執(zhí)行上注程序的指令后,執(zhí)行EEPROM中的上注程序。

        2.故障現(xiàn)象

        某軟件在按照部門(mén)的統(tǒng)一要求將上注代碼做成完全上注模式后確認(rèn)測(cè)試時(shí)發(fā)現(xiàn)在運(yùn)行上注程序時(shí),發(fā)現(xiàn)部門(mén)程序功能失效,運(yùn)行結(jié)果和預(yù)期不一致。

        注:完全上注模式,將在固化程序中出現(xiàn)的軟件功能在上注代碼中全部實(shí)現(xiàn)。在上注代碼制作過(guò)程中將主程序中MAIN函數(shù)中出現(xiàn)的函數(shù)、變量、標(biāo)志等定位到與固化程序相同的地址上,所出現(xiàn)的函數(shù)只保留函數(shù)皮(函數(shù)中無(wú)內(nèi)容),程序切換到上注執(zhí)行模式后將跳至上注代碼模塊。

        3.故障原因

        上注代碼中選用主程序中的相應(yīng)功能代碼,注入到上注程序區(qū)。為了進(jìn)一步分析問(wèn)題將上注代碼上注后將EEPROM中的數(shù)據(jù)讀出,與上注的代碼進(jìn)行比對(duì),通過(guò)比對(duì)發(fā)現(xiàn)兩者一致,排除代碼上注的過(guò)程中某環(huán)節(jié)出現(xiàn)問(wèn)題將上注代碼改寫(xiě)的情況。進(jìn)而對(duì)固化程序和上注代碼的C和編譯生成的匯編代碼進(jìn)行檢查比對(duì)如下。

        表1 上注代碼C程序及對(duì)應(yīng)匯編

        表2 固化程序中C代碼及對(duì)應(yīng)匯編

        通過(guò)比對(duì)發(fā)現(xiàn)固化程序比上注程序在退出函數(shù)后將DPTR的值進(jìn)行了重新賦值(恢復(fù)到標(biāo)志位的地址)而上注代碼部分則無(wú)。(粗斜體部分)

        在固化程序中對(duì)JMJDataPack()、XJDataPack()、GPSDataPack()三模塊進(jìn)行查看發(fā)現(xiàn)在函數(shù)內(nèi)多次對(duì)DPTR的值進(jìn)行改寫(xiě),退出后對(duì)DPTR的值進(jìn)重新賦值,而在上注程序運(yùn)行的過(guò)程中調(diào)用固化程序相應(yīng)的模塊,結(jié)果跳出相應(yīng)的模塊后,DPTR的值未重新賦值,將對(duì)應(yīng)的錯(cuò)誤的地址值進(jìn)行改寫(xiě),未能實(shí)現(xiàn)正確的標(biāo)志位改變功能,致使出現(xiàn)相對(duì)應(yīng)的功能實(shí)現(xiàn)不了,在此過(guò)程中編譯器編譯出了問(wèn)題。

        分析和試驗(yàn)發(fā)現(xiàn)編譯器在編譯固化程序時(shí)由于JMJDataPack()、XJDataPack()、GPSDataPack()函數(shù)中多次將DPTR的值進(jìn)行改寫(xiě),因此在退出上述函數(shù)后編譯器將標(biāo)志位的地址重新賦值給DPTR,再對(duì)該地址的值進(jìn)行修改,而編譯器在編譯上注程序時(shí)由于上述函數(shù)使用的是空函數(shù)(上注程序中函數(shù)對(duì)應(yīng)的地址與固化程序一一對(duì)應(yīng),無(wú)函數(shù)內(nèi)容),沒(méi)有對(duì)DPTR進(jìn)行更改,配置環(huán)境在8級(jí)優(yōu)化的情況下編譯器在編譯的過(guò)程中將優(yōu)化處理(“窺孔”優(yōu)化,不必要的從存儲(chǔ)器裝入對(duì)象及裝入常數(shù)的操作)不對(duì)DPTR 的值進(jìn)行重新賦值,造成上述現(xiàn)象的發(fā)生。在“Options選項(xiàng)/C51標(biāo)簽頁(yè)/Code Optimization欄/Leve框”內(nèi)選取優(yōu)化級(jí)別。OPTIMIZE命令設(shè)置優(yōu)化級(jí)別和優(yōu)化重點(diǎn),共有9個(gè)優(yōu)化級(jí)別,高優(yōu)化級(jí)別中包含了前面所有的底優(yōu)化級(jí)別。

        現(xiàn)在的程序編譯過(guò)程中均采用8級(jí)優(yōu)化,由于高優(yōu)化級(jí)別中包含了前面所有的底優(yōu)化級(jí)別,因此編譯器在對(duì)上注代碼模塊編譯時(shí)將重復(fù)的DPTR賦值操作去掉,造成上述現(xiàn)象的發(fā)生。

        4.解決措施

        針對(duì)該問(wèn)題有目前三種解決方法:

        當(dāng)前固化程序和上注代碼KEILC在環(huán)境配置時(shí)選用的8級(jí)優(yōu)化,將上注代碼環(huán)境配置優(yōu)化級(jí)別選為2級(jí),即不對(duì)代碼進(jìn)行“窺孔”優(yōu)化。

        更改上注代碼如下:

        將fgYKManage = FALSE; fgGBManage = FALSE;分別放到XJDataPack()和GPSDataPack()函數(shù)內(nèi)。

        5.總結(jié)

        在使用相應(yīng)的工具進(jìn)行編程時(shí),尤其是對(duì)具有代碼優(yōu)化功能的編譯軟件的環(huán)境配置應(yīng)特別注意,其某些優(yōu)化功能可能會(huì)造成對(duì)某些代碼的功能出錯(cuò),在用之前一定要對(duì)相應(yīng)的優(yōu)化內(nèi)容和規(guī)則有深刻了解。在代碼完成后還要加強(qiáng)代碼的各項(xiàng)確認(rèn)測(cè)試工作,認(rèn)真核對(duì)每一項(xiàng)功能是否有偏差,仔細(xì)認(rèn)真的比對(duì)每一項(xiàng)指標(biāo)。

        猜你喜歡
        編譯器賦值級(jí)別
        關(guān)于1 1/2 … 1/n的一類(lèi)初等對(duì)稱(chēng)函數(shù)的2-adic賦值
        L-代數(shù)上的賦值
        痘痘分級(jí)別,輕重不一樣
        基于相異編譯器的安全計(jì)算機(jī)平臺(tái)交叉編譯環(huán)境設(shè)計(jì)
        強(qiáng)賦值幺半群上的加權(quán)Mealy機(jī)與加權(quán)Moore機(jī)的關(guān)系*
        邁向UHD HDR的“水晶” 十萬(wàn)元級(jí)別的SIM2 CRYSTAL4 UHD
        新年導(dǎo)購(gòu)手冊(cè)之兩萬(wàn)元以下級(jí)別好物推薦
        你是什么級(jí)別的
        利用賦值法解決抽象函數(shù)相關(guān)問(wèn)題オ
        通用NC代碼編譯器的設(shè)計(jì)與實(shí)現(xiàn)
        午夜福利麻豆国产精品| 国产综合精品一区二区三区| 亚洲午夜av久久久精品影院色戒| 正在播放老肥熟妇露脸| 国产成人aaaaa级毛片| 日本高清色倩视频在线观看 | 97人人超碰国产精品最新o| 精品久久久久一区二区国产| 国产精品美女久久久久 | 国产美女做爰免费视频| 久久亚洲色www成人欧美| 成人片黄网站色大片免费观看app| 人妻久久999精品1024| 无码专区亚洲avl| 白白白色视频在线观看播放| 亚洲精品久久蜜桃av| 小雪好紧好滑好湿好爽视频| 亚洲日韩欧洲无码av夜夜摸| 国产综合精品久久亚洲| 久久精品国产亚洲av热明星| 口爆吞精美臀国产在线| 亚洲综合中文字幕综合| 国产成人av综合色| 大胆欧美熟妇xxbbwwbw高潮了| 亚洲视频高清| 成人精品国产亚洲av久久| 91熟女av一区二区在线| 亚洲国产精品日本无码网站| 朝鲜女人大白屁股ass| 女人与牲口性恔配视频免费| 成人无码无遮挡很H在线播放 | 国产午夜精品久久精品| 亚洲视频在线一区二区| 色欲av蜜桃一区二区三| 免费无码成人av在线播放不卡| 五月婷婷激情六月| 女同在线视频一区二区| 亚洲视频在线一区二区| 国产成人亚洲精品无码mp4| 亚洲av成人在线网站| 日韩精品一区二区三区免费观影|