コンピュータからマイクロコントローラの内部フラッシュにファイル (.hex ファイル) を送信しようとしています。当分の間、Hercules端末を使用してファイルを送信しています。私のUARTは送信されたデータに応答します。
内部フラッシュ メモリ セクタは 128K バイトで、ファイルは約 50K バイトなので、スペースは問題になりません。
ファイルの特定のポイントまで .hex ファイルを送信している間、データは転送されますが、しばらくすると停止します。理由がわかりません。
速度を落とすために、UART ボーレートを 115200 から 2400 に変更してみました。
以下はコードです:
while(1)
{
i = 0;
int c;
char str[256];
printf("\n> ");
do
{
c = fgetc(stdin);
if(c=='\n')
break;
if(c!=-1)
{
str[i++] = c;
delay(10);
}
}while(1);
//str[i]='\0';
//printf("Got..%s\n",str);
int j = 0;
while(j < i-1)
{
uint64_t data;
uint64_t *pData = (uint64_t*)(str + j); //
//data = *((uint64_t*)&str[i]);
//++pData;
data = *pData;
if (HAL_FLASH_Program(TYPEPROGRAM_BYTE, start_address, data) != HAL_OK) {
HAL_FLASH_Lock();
}else
{
//printf("\nSuccess: Writing a byte at (%x) ==> %c ",start_address,*((char*)&data));
}
delay(10);
//data++;
start_address=start_address+1;
j++;
}
}
以下に、Hercules ターミナル イメージを添付します。