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   。            !