bootloader寫完之後,使用c#寫了乙個配套的公升級助手。不得不說c#真的是乙個很優秀的語言,而visual studio也完全可以稱之為最強ide,沒有之一!配合msdn,花了乙個星期熟悉c#,然後兩周不到完成了51公升級助手的開發。
特點:支援多種不同的通訊協議(主要用於公升級前的握手)
配合51bootloader完成使用者**的更新
使用到的功能模組:首先上位機公升級助手開啟本地1.串列埠通訊(使用c#官方serialport類庫);
2.檔案讀寫(使用c#官方file類庫);
3.設定檔案(使用xml儲存);
4.定時器(用於通訊時序控制);
hex
檔案,對hex檔案進行格式化,方便後面的資料傳輸。然後下位機在接收到公升級指令後會判斷是否符合公升級條件,如果符合,則跳轉到bootloader
程式中準備接收公升級資料,否則忽略公升級指令,並返回響應幀通知上位機。
在公升級的過程中,雙方遵循同乙個校驗演算法,下位機校驗資料通過,通過iap
寫入flash
,否則請求重發。
下位機檢測到處理到使用者**段的最後一幀資料,傳送公升級完成指令,下位機接收校驗通過,通過長跳轉指令調到使用者**,完成程式公升級。
因為下位機bootloader
採用查詢的方式通訊,為了提高可靠信,及降低出錯時的重傳代價,一次傳輸的**位元組限制在16個位元組,所以需要格式化hex-80
檔案
private bool handlehexfile(string filepath)
uint modline = dateaddr / 16;
uint modbyte = dateaddr % 16 + 1;
uint modlen = datelen;
string tempstr=null;
tempstr = formathex[modline].trim().split(' ');
for (int i = 0; i < modlen*2; i+=2)
formathex[modline] = temp;
modbyte = 0;
modline++;
tempstr = formathex[modline].trim().split(' ');
}modbyte++;
}string temp2 = null;
for (int n = 0; n < tempstr.length; n++)
formathex[modline] = temp2;
}else
}
}updatefile = formathex;
return true;
}
除此之外,根據通訊協議完成通訊部分的**設計,乙個可用的公升級助手基本完成。 C 上位機簡單使用
寫的比較簡單 破解時間限制的補丁 提取碼1123 如下 示例 opcserver objserver opcgroups objgroups opcgroup objgroup opcitems objitems array stritemids array lclienthandles array...
STM32 IAP公升級韌體 上位機 例程
本例程實現功能 一 iap公升級簡單介紹 基本原理不做贅述,參見 兩種方式 方式2 4 引數區域存放公升級標誌以及其他引數 本例程採用方式二公升級 二 韌體程式 stm32f103cbt6晶元使用hal庫開發 1 flash區域劃分 分割槽大小 扇區位址 iap10k 0 90x08000000 0...
使用ABB PC SDK開發ABB上位機記錄
abb機械人目前在工業自動化生產中使用較多,同時所具有的通訊方式也比較充足,但在與plc 智慧型儀表之間的通訊,單靠rapid程式實現較為繁瑣,因此開發這個上位機程式,通過上位機採集資料實現複雜現場的通訊 本文的開發使用的是visual studio 2017,基於.net framework 4....