公升級助手上位機(使用C 編寫)

2022-09-19 21:00:14 字數 1505 閱讀 1206

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....