標(biāo)題: STC8單片機(jī)遠(yuǎn)程升級 [打印本頁]

作者: isis69    時間: 2019-3-7 15:17
標(biāo)題: STC8單片機(jī)遠(yuǎn)程升級
STC8A8K64,片內(nèi)eeprom通過官方的ISP程序設(shè)置為64k,升級包遠(yuǎn)程發(fā)送到片外flash,有40多k。升級代碼在0xE000處。原理是用升級代碼擦除0xE000以下的空間后再把升級包寫進(jìn)去,重啟完成升級。
首先擦除片內(nèi)eeprom,從0x0000開始,一直擦到0x4e00所在扇區(qū)都沒問題,下個擦除地址是0x5000,就死機(jī)了。
要是升級包小于20k就沒問題,擦除寫入重啟一切正常。只要操作0x5000就死機(jī)。問了官方技術(shù)支持,說這種升級方式?jīng)]問題。為什么0x5000死機(jī)不知道,反正這種方式?jīng)]問題,只要設(shè)置了64k的eeprom,整個代碼空間都可以擦,小心別擦到自己就行。
作者: isis69    時間: 2019-3-7 15:18
死機(jī)跟看門狗沒關(guān)系
作者: yzwzfyz    時間: 2019-3-8 08:50
要點:
自己的程序中負(fù)責(zé)升級的部分不是很長,運行升級程序時,先將這部分程序復(fù)制到擦除不到的區(qū)域,而后跳再去運行升級,這樣就可以了。
好就是前面最后一句話:“小心別擦到自己就行!
作者: isis69    時間: 2019-3-8 11:33
本帖最后由 isis69 于 2019-3-8 11:55 編輯

主程序地址是從0到A370,負(fù)責(zé)升級的程序地址從E000到E16B。升級時程序在E000到E16B執(zhí)行,沒有使用函數(shù)和中斷,總中斷也關(guān)了,看門狗也關(guān)了。
現(xiàn)在小于20k的程序,遠(yuǎn)程升級是成功的。

作者: isis69    時間: 2019-3-8 11:37
各個程序段的地址在主程序運行時可以通過串口命令行讀代碼區(qū)內(nèi)容來查看,驗證過的。
作者: 鄧文雄ABC    時間: 2019-4-21 14:40
樓主能詳細(xì)說說細(xì)節(jié)嗎,我也在研究這個問題 ,總不成功,是不是程序?qū)戝e了。
作者: isis69    時間: 2019-4-23 11:55
鄧文雄ABC 發(fā)表于 2019-4-21 14:40
樓主能詳細(xì)說說細(xì)節(jié)嗎,我也在研究這個問題 ,總不成功,是不是程序?qū)戝e了。

原理就是整個代碼空間都設(shè)置為flash空間,用戶程序可以在運行時修改flash內(nèi)容。
具體辦法:收到的升級代碼放在外部flash,用戶程序擦除內(nèi)部flash(即舊代碼),將外部flash的升級代碼寫入內(nèi)部falsh,最后重啟。
用戶程序分成兩部分,正常的應(yīng)用部分和升級部分。兩部分分開存放,升級部分只擦除、寫入應(yīng)用部分的flash空間。
作者: moneylhc    時間: 2019-10-15 11:07
我也用的是這個芯片;研究了兩天兩夜不合眼;終于搞定;有成就感 ;程序有33K;先把HEX文件轉(zhuǎn)成BIN文件;經(jīng)測試;BIN文件傳輸容易亂碼;于是轉(zhuǎn)成了TXT文件;但是轉(zhuǎn)成TXT后;文件大了一倍;放到FTP服務(wù)器上;監(jiān)控程序從TFP服務(wù)器上下載;保存到片外FLASH;用的是W25Q32;下載完成后;再升級;完全沒問題;升級監(jiān)控程序也可以用中斷;但是不能和主程序重疊(如用戶程序用了定時0;監(jiān)控程序就不能用定時0;不然跳轉(zhuǎn)會出問題);升級監(jiān)控程序我只用了定時0;主要是因為定時0的跳轉(zhuǎn)地址離開頭最近;空間利用率最高;用定時器0模擬了串口1和串口2;串口1連接電腦方便調(diào)試;串口2連接接GSM模塊;用于下載升級包;在擦除和寫入第一他扇區(qū)時要關(guān)中斷;把升級監(jiān)控程序的主跳轉(zhuǎn)地址和定時器0的跳轉(zhuǎn)地址重新寫入數(shù)組;寫完第一個扇區(qū)就可以開中斷了;中斷的跳轉(zhuǎn)地址都放在第一扇區(qū)的前面幾行;
作者: moneylhc    時間: 2019-10-15 11:18
我也是用的這個芯片;研究了兩天兩夜沒合眼;終于成功了;
用戶程序有33K;把HEX文件轉(zhuǎn)成BIN;經(jīng)測試發(fā)現(xiàn)BIN文件傳輸容易出現(xiàn)亂碼;后轉(zhuǎn)成TXT文件;但轉(zhuǎn)換后文件大了一倍;但是傳輸穩(wěn)定;把升級文件放到FTP服務(wù)器上;升級監(jiān)控程序通過GSM連接FTP服務(wù)器;下載升級文件后;存儲在片外FLASH;我用的是W25Q32;全部下載完成后;需要將數(shù)據(jù)轉(zhuǎn)成16進(jìn)制;然后才能寫入;升級監(jiān)控程序也可以使用中斷;只要不和用戶程序重疊就可以;監(jiān)控升級程序我用了定時器0;使用定時器0模塊了串口1和串口2;串口1連接電腦方便調(diào)試;串口2連接GSM模塊下載升級文件;在擦除第一扇區(qū)前一定要關(guān)中斷;寫入第一扇區(qū)數(shù)據(jù)后;就可以開中斷了;因為中斷跳轉(zhuǎn)地址都放在第一扇區(qū)的前面幾行;寫入第一扇區(qū)時;一定要將升級監(jiān)控程序的主跳轉(zhuǎn)地址和定時器0的跳轉(zhuǎn)地址重寫進(jìn)去;不然升級控制程序?qū)⒈黄茐模?hr noshade size="2" width="100%" color="#808080"> 作者: wdong    時間: 2019-10-17 21:54
moneylhc 發(fā)表于 2019-10-15 11:18
我也是用的這個芯片;研究了兩天兩夜沒合眼;終于成功了;
用戶程序有33K;把HEX文件轉(zhuǎn)成BIN;經(jīng)測試發(fā)現(xiàn)B ...

佩服!佩服!
作者: b2277    時間: 2021-1-5 14:48
你好!能否分享一下老大你這個成功的硬件和軟件,兄弟也想學(xué)習(xí)一下
作者: b2277    時間: 2021-1-5 14:52
程序遠(yuǎn)程升級,兄弟也想學(xué)一下,能否賞賜兄弟一下成功的硬件和軟件資料,叩謝!
作者: b2277    時間: 2021-1-5 14:52
最好把資料發(fā)帖里,共同分享一下!
作者: amandv    時間: 2021-1-5 22:53
設(shè)置接收校驗,如果錯了重傳
作者: zhenshanmcu    時間: 2022-7-21 21:42
moneylhc 發(fā)表于 2019-10-15 11:07
我也用的是這個芯片;研究了兩天兩夜不合眼;終于搞定;有成就感 ;程序有33K;先把HEX文件轉(zhuǎn)成BIN文件;經(jīng) ...

分析下軟件吧,我們學(xué)習(xí)下。
作者: wufa1986    時間: 2022-7-22 08:24
沒什么問題的,認(rèn)真檢查寫地址




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1