stm 32 Canとuartに基づくIAP実装
1.
産業用マザーボード(uart)->コントロールボード(can)->ノード(1個以上)
2.目的を実現する
シェルポイントを分解せずにノードまたはダッシュボードをアップグレードするアプリケーションを実装するには
3.シングルチップマシンハードウェアプラットフォーム
stm32F103C8T6
4.IAPプロトコル
Ymodeプロトコル
5.移植プロセス
1>IAPへのアクセスプロセス
上位機はノードにアップグレード命令を送り、flashにアップグレードフラグを書き、ソフトウェアが再起動した後、ノードはIAPに入り、ずっと'C'を送り、有効なデータを待っていた.
上位機は制御板にアップグレード命令を送り、制御板はアップグレードするアドレスをflashに書き込み、ソフトウェアが再起動した後、IAPに入り、Canフィルタをアップグレードするアドレスに設定する.
2>Ymode転送
Ymodeプロトコル移植のST公式ルーチンはUARTのIAPに基づく.Ymodeパケットあたりのデータは1 K+5 Byteであり、Ymodeは長い遅延を許容できるため、パケットあたりのデータを完全に受け入れた後、CAN転送のフレーム数を算出し、CANから転送する.フレームを失うとIAPは失敗するので、CANが成功したフラグを送信したとデッドサイクルで判断します.コードは次のとおりです.
uint8_t MocaCanSend(uint8_t c)
{
CanTxMsg GateWay;
uint8_t TransmitMailbox = 0;
uint32_t timeout = 0x100000;
uint8_t i;
GateWay.ExtId = (1<<28) | (add<<20);
GateWay.RTR = CAN_RTR_DATA; //
GateWay.IDE = CAN_ID_EXT; //
GateWay.DLC = 8; //
for(i=0; i<8; i++)
{
GateWay.Data[i] = c;
}
TransmitMailbox = CAN_Transmit(CAN1,&GateWay);
SenPoint += 8;
while((CAN_TransmitStatus(CAN1,TransmitMailbox)==CAN_TxStatus_Failed))// CANTXOK
{
}
return 0;
}
3>Ymode
Ymode , CAN , CAN , UART 。
4> IAP
, CAN 0xFE , APP , CAN 0xFE , , , APP 。 !